From 15546181679f6769b385ef0ed277c2f84d5cd6fe Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Wed, 3 Apr 2024 18:46:29 -0700 Subject: [PATCH] Add separate rate limit to invite user --- backend/src/server/config/rateLimiter.ts | 8 +++++++- backend/src/server/routes/v1/invite-org-router.ts | 4 ++++ backend/src/server/routes/v2/project-router.ts | 4 ---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/backend/src/server/config/rateLimiter.ts b/backend/src/server/config/rateLimiter.ts index 444158cbf..76429b0a5 100644 --- a/backend/src/server/config/rateLimiter.ts +++ b/backend/src/server/config/rateLimiter.ts @@ -20,7 +20,13 @@ export const globalRateLimiterCfg = (): RateLimitPluginOptions => { export const authRateLimit: RateLimitOptions = { timeWindow: 60 * 1000, - max: 600, + max: 60, + keyGenerator: (req) => req.realIp +}; + +export const inviteUserRateLimit: RateLimitOptions = { + timeWindow: 60 * 1000, + max: 10, keyGenerator: (req) => req.realIp }; diff --git a/backend/src/server/routes/v1/invite-org-router.ts b/backend/src/server/routes/v1/invite-org-router.ts index 212020034..89fc561e6 100644 --- a/backend/src/server/routes/v1/invite-org-router.ts +++ b/backend/src/server/routes/v1/invite-org-router.ts @@ -1,6 +1,7 @@ import { z } from "zod"; import { UsersSchema } from "@app/db/schemas"; +import { inviteUserRateLimit } from "@app/server/config/rateLimiter"; import { getTelemetryDistinctId } from "@app/server/lib/telemetry"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { ActorType, AuthMode } from "@app/services/auth/auth-type"; @@ -9,6 +10,9 @@ import { PostHogEventTypes } from "@app/services/telemetry/telemetry-types"; export const registerInviteOrgRouter = async (server: FastifyZodProvider) => { server.route({ url: "/signup", + config: { + rateLimit: inviteUserRateLimit + }, method: "POST", schema: { body: z.object({ diff --git a/backend/src/server/routes/v2/project-router.ts b/backend/src/server/routes/v2/project-router.ts index 3258be50a..19ffc57ed 100644 --- a/backend/src/server/routes/v2/project-router.ts +++ b/backend/src/server/routes/v2/project-router.ts @@ -4,7 +4,6 @@ import { z } from "zod"; import { ProjectKeysSchema, ProjectsSchema } from "@app/db/schemas"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { PROJECTS } from "@app/lib/api-docs"; -import { authRateLimit } from "@app/server/config/rateLimiter"; import { getTelemetryDistinctId } from "@app/server/lib/telemetry"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; @@ -136,9 +135,6 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { server.route({ method: "POST", url: "/", - config: { - rateLimit: authRateLimit - }, schema: { body: z.object({ projectName: z.string().trim().describe(PROJECTS.CREATE.projectName),