diff --git a/packages/lib/server/repository/verificationToken.ts b/packages/lib/server/repository/verificationToken.ts new file mode 100644 index 0000000000..0875ad1b8f --- /dev/null +++ b/packages/lib/server/repository/verificationToken.ts @@ -0,0 +1,33 @@ +import prisma from "@calcom/prisma"; + +export class VerificationTokenRepository { + static async updateTeamInviteTokenExpirationDate({ + email, + teamId, + expiresInDays, + }: { + email: string; + teamId: number; + expiresInDays: number; + }) { + const expires = new Date(Date.now() + expiresInDays * 24 * 60 * 60 * 1000); + + const token = await prisma.verificationToken.findFirst({ + where: { + identifier: email, + teamId, + }, + }); + + await prisma.verificationToken.update({ + where: { + identifier: email, + teamId, + token: token?.token, + }, + data: { expires }, + }); + + return { ...token, expires }; + } +} diff --git a/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts b/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts index 03af69010e..12a400d305 100644 --- a/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/resendInvitation.handler.ts @@ -1,7 +1,7 @@ import { sendTeamInviteEmail } from "@calcom/emails"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { prisma } from "@calcom/prisma"; +import { VerificationTokenRepository } from "@calcom/lib/server/repository/verificationToken"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; import { ensureAtleastAdminPermissions, getTeamOrThrow } from "./inviteMember/utils"; @@ -24,15 +24,17 @@ export const resendInvitationHandler = async ({ ctx, input }: InviteMemberOption isOrg: input.isOrg, }); - const verificationToken = await prisma.verificationToken.findFirst({ - where: { - identifier: input.email, + let verificationToken; + + try { + verificationToken = await VerificationTokenRepository.updateTeamInviteTokenExpirationDate({ + email: input.email, teamId: input.teamId, - }, - select: { - token: true, - }, - }); + expiresInDays: 7, + }); + } catch (error) { + console.error("[resendInvitationHandler] Error updating verification token: ", error); + } const inviteTeamOptions = { joinLink: `${WEBAPP_URL}/auth/login?callbackUrl=/settings/teams`,