From 7fc8d2e6d5cc0d34c4188af94c4c66ac70e1ee9f Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 15 Jan 2023 16:52:12 +0900 Subject: ロールでレートリミットを調整できるように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve #9584 --- packages/backend/src/server/api/ApiCallService.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'packages/backend/src/server/api/ApiCallService.ts') diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts index c19e861a5a..dcc9342a82 100644 --- a/packages/backend/src/server/api/ApiCallService.ts +++ b/packages/backend/src/server/api/ApiCallService.ts @@ -224,8 +224,11 @@ export class ApiCallService implements OnApplicationShutdown { limit.key = ep.name; } + // TODO: 毎リクエスト計算するのもあれだしキャッシュしたい + const factor = user ? (await this.roleService.getUserRoleOptions(user.id)).rateLimitFactor : 1; + // Rate limit - await this.rateLimiterService.limit(limit as IEndpointMeta['limit'] & { key: NonNullable }, limitActor).catch(err => { + await this.rateLimiterService.limit(limit as IEndpointMeta['limit'] & { key: NonNullable }, limitActor, factor).catch(err => { throw new ApiError({ message: 'Rate limit exceeded. Please try again later.', code: 'RATE_LIMIT_EXCEEDED', -- cgit v1.2.3-freya