aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/oauth-model.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/oauth-model.ts')
-rw-r--r--server/lib/oauth-model.ts15
1 files changed, 12 insertions, 3 deletions
diff --git a/server/lib/oauth-model.ts b/server/lib/oauth-model.ts
index 2cd2ae97c..45ac3e7c4 100644
--- a/server/lib/oauth-model.ts
+++ b/server/lib/oauth-model.ts
@@ -4,12 +4,13 @@ import { logger } from '../helpers/logger'
4import { UserModel } from '../models/account/user' 4import { UserModel } from '../models/account/user'
5import { OAuthClientModel } from '../models/oauth/oauth-client' 5import { OAuthClientModel } from '../models/oauth/oauth-client'
6import { OAuthTokenModel } from '../models/oauth/oauth-token' 6import { OAuthTokenModel } from '../models/oauth/oauth-token'
7import { CONFIG } from '../initializers/constants' 7import { CACHE } from '../initializers/constants'
8import { Transaction } from 'sequelize' 8import { Transaction } from 'sequelize'
9import { CONFIG } from '../initializers/config'
9 10
10type TokenInfo = { accessToken: string, refreshToken: string, accessTokenExpiresAt: Date, refreshTokenExpiresAt: Date } 11type TokenInfo = { accessToken: string, refreshToken: string, accessTokenExpiresAt: Date, refreshTokenExpiresAt: Date }
11const accessTokenCache: { [ accessToken: string ]: OAuthTokenModel } = {} 12let accessTokenCache: { [ accessToken: string ]: OAuthTokenModel } = {}
12const userHavingToken: { [ userId: number ]: string } = {} 13let userHavingToken: { [ userId: number ]: string } = {}
13 14
14// --------------------------------------------------------------------------- 15// ---------------------------------------------------------------------------
15 16
@@ -38,11 +39,19 @@ function clearCacheByToken (token: string) {
38function getAccessToken (bearerToken: string) { 39function getAccessToken (bearerToken: string) {
39 logger.debug('Getting access token (bearerToken: ' + bearerToken + ').') 40 logger.debug('Getting access token (bearerToken: ' + bearerToken + ').')
40 41
42 if (!bearerToken) return Bluebird.resolve(undefined)
43
41 if (accessTokenCache[bearerToken] !== undefined) return Bluebird.resolve(accessTokenCache[bearerToken]) 44 if (accessTokenCache[bearerToken] !== undefined) return Bluebird.resolve(accessTokenCache[bearerToken])
42 45
43 return OAuthTokenModel.getByTokenAndPopulateUser(bearerToken) 46 return OAuthTokenModel.getByTokenAndPopulateUser(bearerToken)
44 .then(tokenModel => { 47 .then(tokenModel => {
45 if (tokenModel) { 48 if (tokenModel) {
49 // Reinit our cache
50 if (Object.keys(accessTokenCache).length > CACHE.USER_TOKENS.MAX_SIZE) {
51 accessTokenCache = {}
52 userHavingToken = {}
53 }
54
46 accessTokenCache[ bearerToken ] = tokenModel 55 accessTokenCache[ bearerToken ] = tokenModel
47 userHavingToken[ tokenModel.userId ] = tokenModel.accessToken 56 userHavingToken[ tokenModel.userId ] = tokenModel.accessToken
48 } 57 }