summaryrefslogtreecommitdiff
path: root/src/server/api/authenticate.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-03-18 10:19:30 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-03-18 10:19:30 +0900
commitd3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1 (patch)
treec943deb27a12e0aac8c83857ec0b17743ce792f9 /src/server/api/authenticate.ts
parentDB上で壊れたドライブファイルを無視するように (#7345) (diff)
downloadsharkey-d3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1.tar.gz
sharkey-d3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1.tar.bz2
sharkey-d3c8368b0c3f037a87a2a8c9acfc5a54cf1d06e1.zip
Improve API performance
Diffstat (limited to 'src/server/api/authenticate.ts')
-rw-r--r--src/server/api/authenticate.ts9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/server/api/authenticate.ts b/src/server/api/authenticate.ts
index 0374ca35ea..7404c477fd 100644
--- a/src/server/api/authenticate.ts
+++ b/src/server/api/authenticate.ts
@@ -3,12 +3,18 @@ import { User } from '../../models/entities/user';
import { Users, AccessTokens, Apps } from '../../models';
import { AccessToken } from '../../models/entities/access-token';
+const cache = {} as Record<string, User>;
+
export default async (token: string): Promise<[User | null | undefined, AccessToken | null | undefined]> => {
if (token == null) {
return [null, null];
}
if (isNativeToken(token)) {
+ if (cache[token]) { // TODO: キャッシュされてから一定時間経過していたら破棄する
+ return [cache[token], null];
+ }
+
// Fetch user
const user = await Users
.findOne({ token });
@@ -17,8 +23,11 @@ export default async (token: string): Promise<[User | null | undefined, AccessTo
throw new Error('user not found');
}
+ cache[token] = user;
+
return [user, null];
} else {
+ // TODO: cache
const accessToken = await AccessTokens.findOne({
where: [{
hash: token.toLowerCase() // app