From 1ad286ca871ab6f8401d93e2b18b1b1b55c0311c Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Fri, 2 Aug 2024 22:58:53 +0800 Subject: [PATCH] misc: name updates and more comments --- .../src/server/plugins/inject-rate-limits.ts | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/backend/src/server/plugins/inject-rate-limits.ts b/backend/src/server/plugins/inject-rate-limits.ts index 74acc8fcb..487fdf1a6 100644 --- a/backend/src/server/plugins/inject-rate-limits.ts +++ b/backend/src/server/plugins/inject-rate-limits.ts @@ -1,35 +1,40 @@ import fp from "fastify-plugin"; import { getRateLimiterConfig } from "@app/ee/services/rate-limit/rate-limit-service"; +import { getConfig } from "@app/lib/config/env"; export const injectRateLimits = fp(async (server) => { server.decorateRequest("rateLimits", null); server.addHook("onRequest", async (req) => { - const defaultRateLimiterConfig = getRateLimiterConfig(); + const appCfg = getConfig(); + + const instanceRateLimiterConfig = getRateLimiterConfig(); if (!req.auth) { - // for public endpoints - req.rateLimits = defaultRateLimiterConfig; + // for public endpoints, we always use the instance-wide default rate limits + req.rateLimits = instanceRateLimiterConfig; return; } const plan = await server.services.license.getPlan(req.auth.orgId); const { rateLimits } = plan; - if (plan.customRateLimits) { - req.rateLimits = defaultRateLimiterConfig; + if (plan.customRateLimits && !appCfg.isCloud) { + // we do this because for self-hosted/dedicated instances, we want custom rate limits to be based on admin configuration + // note that the syncing of custom rate limit happens on the instanceRateLimiterConfig object + req.rateLimits = instanceRateLimiterConfig; return; } // we're using the null coalescing operator in order to handle outdated licenses req.rateLimits = { - readLimit: rateLimits?.readLimit ?? defaultRateLimiterConfig.readLimit, - publicEndpointLimit: rateLimits?.publicEndpointLimit ?? defaultRateLimiterConfig.publicEndpointLimit, - writeLimit: rateLimits?.writeLimit ?? defaultRateLimiterConfig.writeLimit, - secretsLimit: rateLimits?.secretsLimit ?? defaultRateLimiterConfig.secretsLimit, - authRateLimit: rateLimits?.authRateLimit ?? defaultRateLimiterConfig.authRateLimit, - inviteUserRateLimit: rateLimits?.inviteUserRateLimit ?? defaultRateLimiterConfig.inviteUserRateLimit, - mfaRateLimit: rateLimits?.mfaRateLimit ?? defaultRateLimiterConfig.mfaRateLimit, - creationLimit: rateLimits?.creationLimit ?? defaultRateLimiterConfig.creationLimit + readLimit: rateLimits?.readLimit ?? instanceRateLimiterConfig.readLimit, + publicEndpointLimit: rateLimits?.publicEndpointLimit ?? instanceRateLimiterConfig.publicEndpointLimit, + writeLimit: rateLimits?.writeLimit ?? instanceRateLimiterConfig.writeLimit, + secretsLimit: rateLimits?.secretsLimit ?? instanceRateLimiterConfig.secretsLimit, + authRateLimit: rateLimits?.authRateLimit ?? instanceRateLimiterConfig.authRateLimit, + inviteUserRateLimit: rateLimits?.inviteUserRateLimit ?? instanceRateLimiterConfig.inviteUserRateLimit, + mfaRateLimit: rateLimits?.mfaRateLimit ?? instanceRateLimiterConfig.mfaRateLimit, + creationLimit: rateLimits?.creationLimit ?? instanceRateLimiterConfig.creationLimit }; }); });