diff --git a/backend/src/server/routes/v1/project-router.ts b/backend/src/server/routes/v1/project-router.ts index c72a6f167..e5e2f636c 100644 --- a/backend/src/server/routes/v1/project-router.ts +++ b/backend/src/server/routes/v1/project-router.ts @@ -14,6 +14,7 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; import { ProjectFilterType } from "@app/services/project/project-types"; +import { validateSlackChannelsField } from "@app/services/slack/slack-auth-validators"; import { integrationAuthPubSchema, SanitizedProjectSchema } from "../sanitizedSchemas"; import { sanitizedServiceTokenSchema } from "../v2/service-token-router"; @@ -606,9 +607,9 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { body: z.object({ slackIntegrationId: z.string(), isAccessRequestNotificationEnabled: z.boolean(), - accessRequestChannels: z.string(), + accessRequestChannels: validateSlackChannelsField, isSecretRequestNotificationEnabled: z.boolean(), - secretRequestChannels: z.string() + secretRequestChannels: validateSlackChannelsField }), response: { 200: ProjectSlackConfigsSchema.pick({ diff --git a/backend/src/services/slack/slack-auth-validators.ts b/backend/src/services/slack/slack-auth-validators.ts index d81d12224..c88ba49ea 100644 --- a/backend/src/services/slack/slack-auth-validators.ts +++ b/backend/src/services/slack/slack-auth-validators.ts @@ -10,4 +10,7 @@ export const validateSlackChannelsField = z .split(",") .map((id) => id.trim()) .join(", "); + }) + .refine((data) => data.split(",").length <= 20, { + message: "You can only select up to 20 slack channels" });