From 8d6476af2aae516c7133446c1c5b3e865a5b8b74 Mon Sep 17 00:00:00 2001 From: Johann150 Date: Sun, 13 Nov 2022 18:03:22 +0100 Subject: [PATCH] server: remove localUserByIdCache The same data is stored in userByIdCache. Whether a user is local or not can easily be determined from the cached object. --- packages/backend/src/server/api/authenticate.ts | 7 +++++-- packages/backend/src/services/user-cache.ts | 2 -- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/server/api/authenticate.ts b/packages/backend/src/server/api/authenticate.ts index 89cbb4f9c..cfcdfcf36 100644 --- a/packages/backend/src/server/api/authenticate.ts +++ b/packages/backend/src/server/api/authenticate.ts @@ -3,7 +3,7 @@ import { Users, AccessTokens, Apps } from '@/models/index.js'; import { AccessToken } from '@/models/entities/access-token.js'; import { Cache } from '@/misc/cache.js'; import { App } from '@/models/entities/app.js'; -import { localUserByIdCache, localUserByNativeTokenCache } from '@/services/user-cache.js'; +import { userByIdCache, localUserByNativeTokenCache } from '@/services/user-cache.js'; import isNativeToken from './common/is-native-token.js'; const appCache = new Cache(Infinity); @@ -64,11 +64,14 @@ export default async (authorization: string | null | undefined, bodyToken: strin lastUsedAt: new Date(), }); - const user = await localUserByIdCache.fetch(accessToken.userId, + const user = await userByIdCache.fetch(accessToken.userId, () => Users.findOneBy({ id: accessToken.userId, }) as Promise); + // can't authorize remote users + if (!Users.isLocalUser(user)) return [null, null]; + if (accessToken.appId) { const app = await appCache.fetch(accessToken.appId, () => Apps.findOneByOrFail({ id: accessToken.appId! })); diff --git a/packages/backend/src/services/user-cache.ts b/packages/backend/src/services/user-cache.ts index d95a8968a..ef939d12b 100644 --- a/packages/backend/src/services/user-cache.ts +++ b/packages/backend/src/services/user-cache.ts @@ -5,7 +5,6 @@ import { subscriber } from '@/db/redis.js'; export const userByIdCache = new Cache(Infinity); export const localUserByNativeTokenCache = new Cache(Infinity); -export const localUserByIdCache = new Cache(Infinity); export const uriPersonCache = new Cache(Infinity); subscriber.on('message', async (_, data) => { @@ -27,7 +26,6 @@ subscriber.on('message', async (_, data) => { } if (Users.isLocalUser(user)) { localUserByNativeTokenCache.set(user.token, user); - localUserByIdCache.set(user.id, user); } break; }