diff --git a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts index b9d2a5c805..79d560050a 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts @@ -2,6 +2,7 @@ import { randomBytes } from "crypto"; import { sendTeamInviteEmail } from "@calcom/emails"; import { updateQuantitySubscriptionFromStripe } from "@calcom/features/ee/teams/lib/payments"; +import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError"; import { IS_TEAM_BILLING_ENABLED, WEBAPP_URL } from "@calcom/lib/constants"; import { getTranslation } from "@calcom/lib/server/i18n"; import { prisma } from "@calcom/prisma"; @@ -32,8 +33,9 @@ type InviteMemberOptions = { }; export const inviteMemberHandler = async ({ ctx, input }: InviteMemberOptions) => { - const team = await getTeamOrThrow(input.teamId, input.isOrg); - const { autoAcceptEmailDomain, orgVerified } = getIsOrgVerified(input.isOrg, team); + await checkRateLimitAndThrowError({ + identifier: `invitedBy:${ctx.user.id}`, + }); await checkPermissions({ userId: ctx.user.id, @@ -42,6 +44,9 @@ export const inviteMemberHandler = async ({ ctx, input }: InviteMemberOptions) = isOrg: input.isOrg, }); + const team = await getTeamOrThrow(input.teamId, input.isOrg); + const { autoAcceptEmailDomain, orgVerified } = getIsOrgVerified(input.isOrg, team); + const translation = await getTranslation(input.language ?? "en", "common"); const emailsToInvite = await getEmailsToInvite(input.usernameOrEmail);