From 807613f28c7ce49fe5fa21cf193fbc0a7789d91e Mon Sep 17 00:00:00 2001 From: Owen Date: Wed, 1 Jul 2026 17:30:07 -0400 Subject: [PATCH] Move rate limit up --- .../siteResource/setSiteResourceRoles.ts | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/server/routers/siteResource/setSiteResourceRoles.ts b/server/routers/siteResource/setSiteResourceRoles.ts index 613f0aa63..277ef437e 100644 --- a/server/routers/siteResource/setSiteResourceRoles.ts +++ b/server/routers/siteResource/setSiteResourceRoles.ts @@ -9,7 +9,10 @@ import logger from "@server/logger"; import { fromError } from "zod-validation-error"; import { eq, and, ne, inArray } from "drizzle-orm"; import { OpenAPITags, registry } from "@server/openApi"; -import { rebuildClientAssociationsFromSiteResource, isOrgRebuildRateLimited } from "@server/lib/rebuildClientAssociations"; +import { + rebuildClientAssociationsFromSiteResource, + isOrgRebuildRateLimited +} from "@server/lib/rebuildClientAssociations"; const setSiteResourceRolesBodySchema = z .object({ @@ -108,6 +111,15 @@ export async function setSiteResourceRoles( ); } + if (await isOrgRebuildRateLimited(siteResource.orgId)) { + return next( + createHttpError( + HttpCode.TOO_MANY_REQUESTS, + "Too many concurrent rebuild operations for this organization. Please retry after a moment." + ) + ); + } + // Check if any of the roleIds are admin roles const rolesToCheck = await db .select() @@ -167,15 +179,6 @@ export async function setSiteResourceRoles( } }); - if (await isOrgRebuildRateLimited(siteResource.orgId)) { - return next( - createHttpError( - HttpCode.TOO_MANY_REQUESTS, - "Too many concurrent rebuild operations for this organization. Please retry after a moment." - ) - ); - } - rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => { logger.error( `Failed to rebuild client associations for site resource ${siteResourceId}. Error: ${e}`