From e307e4fce39853d445d086f92b8c556c363ee15d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 24 Apr 2020 11:33:01 +0200 Subject: Add ability for auth plugins to hook tokens validity --- server/models/oauth/oauth-token.ts | 55 +++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 22 deletions(-) (limited to 'server/models/oauth') diff --git a/server/models/oauth/oauth-token.ts b/server/models/oauth/oauth-token.ts index e73c4be7d..3541b6103 100644 --- a/server/models/oauth/oauth-token.ts +++ b/server/models/oauth/oauth-token.ts @@ -30,6 +30,7 @@ export type OAuthTokenInfo = { user: { id: number } + token: MOAuthTokenUser } enum ScopeNames { @@ -136,33 +137,43 @@ export class OAuthTokenModel extends Model { return clearCacheByToken(token.accessToken) } + static loadByRefreshToken (refreshToken: string) { + const query = { + where: { refreshToken } + } + + return OAuthTokenModel.findOne(query) + } + static getByRefreshTokenAndPopulateClient (refreshToken: string) { const query = { where: { - refreshToken: refreshToken + refreshToken }, include: [ OAuthClientModel ] } - return OAuthTokenModel.findOne(query) - .then(token => { - if (!token) return null - - return { - refreshToken: token.refreshToken, - refreshTokenExpiresAt: token.refreshTokenExpiresAt, - client: { - id: token.oAuthClientId - }, - user: { - id: token.userId - } - } as OAuthTokenInfo - }) - .catch(err => { - logger.error('getRefreshToken error.', { err }) - throw err - }) + return OAuthTokenModel.scope(ScopeNames.WITH_USER) + .findOne(query) + .then(token => { + if (!token) return null + + return { + refreshToken: token.refreshToken, + refreshTokenExpiresAt: token.refreshTokenExpiresAt, + client: { + id: token.oAuthClientId + }, + user: { + id: token.userId + }, + token + } as OAuthTokenInfo + }) + .catch(err => { + logger.error('getRefreshToken error.', { err }) + throw err + }) } static getByTokenAndPopulateUser (bearerToken: string): Bluebird { @@ -184,14 +195,14 @@ export class OAuthTokenModel extends Model { static getByRefreshTokenAndPopulateUser (refreshToken: string): Bluebird { const query = { where: { - refreshToken: refreshToken + refreshToken } } return OAuthTokenModel.scope(ScopeNames.WITH_USER) .findOne(query) .then(token => { - if (!token) return new OAuthTokenModel() + if (!token) return undefined return Object.assign(token, { user: token.User }) }) -- cgit v1.2.3