From 29b8d68f45a2f31b5061ec3bab4fbdbdb1e5a023 Mon Sep 17 00:00:00 2001 From: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Date: Fri, 16 May 2025 01:10:45 +0530 Subject: [PATCH] fix: unable to save workflow with verified secondary email (#21338) * fix: unable to save workflow * Update util.ts --- .../server/routers/viewer/workflows/util.ts | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/trpc/server/routers/viewer/workflows/util.ts b/packages/trpc/server/routers/viewer/workflows/util.ts index 1716fb6003..4bc409a74c 100644 --- a/packages/trpc/server/routers/viewer/workflows/util.ts +++ b/packages/trpc/server/routers/viewer/workflows/util.ts @@ -137,6 +137,28 @@ export const verifyEmailSender = async (email: string, userId: number, teamId: n return; } + // Check if it's a verified secondary email of the user + const secondaryEmail = await prisma.secondaryEmail.findFirst({ + where: { + userId, + email, + emailVerified: { + not: null, + }, + }, + }); + + if (secondaryEmail) { + await prisma.verifiedEmail.create({ + data: { + email, + userId, + teamId, + }, + }); + return; + } + if (teamId) { const team = await prisma.team.findFirst({ where: { @@ -149,6 +171,12 @@ export const verifyEmailSender = async (email: string, userId: number, teamId: n select: { id: true, email: true, + secondaryEmails: { + select: { + email: true, + emailVerified: true, + }, + }, }, }, }, @@ -166,9 +194,18 @@ export const verifyEmailSender = async (email: string, userId: number, teamId: n throw new TRPCError({ code: "FORBIDDEN", message: "You are not a member of this team" }); } - const teamMemberEmail = team.members.filter((member) => member.user.email === email); + let foundTeamMember = team.members.find((member) => member.user.email === email); - if (teamMemberEmail) { + // Only check secondary emails if no match was found with primary email + if (!foundTeamMember) { + foundTeamMember = team.members.find((member) => + member.user.secondaryEmails.some( + (secondary) => secondary.email === email && !!secondary.emailVerified + ) + ); + } + + if (foundTeamMember) { await prisma.verifiedEmail.create({ data: { email,