From 876803b5db229f463fca4ff7aa4c95c2c291b7b3 Mon Sep 17 00:00:00 2001 From: Mythie Date: Fri, 15 Nov 2024 13:27:36 +1100 Subject: [PATCH] fix: handle team invites being accepted but not added --- .../lib/server-only/team/accept-team-invitation.ts | 11 ++++++++++- packages/lib/server-only/user/create-user.ts | 6 +++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/lib/server-only/team/accept-team-invitation.ts b/packages/lib/server-only/team/accept-team-invitation.ts index 1bf8611e4..5004809fa 100644 --- a/packages/lib/server-only/team/accept-team-invitation.ts +++ b/packages/lib/server-only/team/accept-team-invitation.ts @@ -42,7 +42,16 @@ export const acceptTeamInvitation = async ({ userId, teamId }: AcceptTeamInvitat }); if (teamMemberInvite.status === TeamMemberInviteStatus.ACCEPTED) { - return; + const memberExists = await tx.teamMember.findFirst({ + where: { + teamId: teamMemberInvite.teamId, + userId: user.id, + }, + }); + + if (memberExists) { + return; + } } const { team } = teamMemberInvite; diff --git a/packages/lib/server-only/user/create-user.ts b/packages/lib/server-only/user/create-user.ts index 263fa9392..9dfe0b0b6 100644 --- a/packages/lib/server-only/user/create-user.ts +++ b/packages/lib/server-only/user/create-user.ts @@ -3,7 +3,7 @@ import { hash } from '@node-rs/bcrypt'; import { getStripeCustomerByUser } from '@documenso/ee/server-only/stripe/get-customer'; import { updateSubscriptionItemQuantity } from '@documenso/ee/server-only/stripe/update-subscription-item-quantity'; import { prisma } from '@documenso/prisma'; -import { IdentityProvider, Prisma, TeamMemberInviteStatus } from '@documenso/prisma/client'; +import { IdentityProvider, TeamMemberInviteStatus } from '@documenso/prisma/client'; import { IS_BILLING_ENABLED } from '../../constants/app'; import { SALT_ROUNDS } from '../../constants/auth'; @@ -59,11 +59,11 @@ export const createUser = async ({ name, email, password, signature, url }: Crea const acceptedTeamInvites = await prisma.teamMemberInvite.findMany({ where: { + status: TeamMemberInviteStatus.ACCEPTED, email: { equals: email, - mode: Prisma.QueryMode.insensitive, + mode: 'insensitive', }, - status: TeamMemberInviteStatus.ACCEPTED, }, });