From 0cb69e208785e5845bdcc70b055dfaab758292ad Mon Sep 17 00:00:00 2001 From: Henry <30578846+hjball@users.noreply.github.com> Date: Sun, 20 Jul 2025 11:18:19 +0100 Subject: [PATCH] fix: allow member invites when signup is disabled (#121) --- packages/auth/src/auth.ts | 14 ++++++++++++-- packages/db/src/repository/member.repo.ts | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/auth/src/auth.ts b/packages/auth/src/auth.ts index 343626bd..6d36864c 100644 --- a/packages/auth/src/auth.ts +++ b/packages/auth/src/auth.ts @@ -166,9 +166,19 @@ export const initAuth = (db: dbClient) => { databaseHooks: { user: { create: { - before() { + async before(user) { if (env("NEXT_PUBLIC_DISABLE_SIGN_UP")?.toLowerCase() === "true") { - return Promise.resolve(false); + const pendingInvitation = await memberRepo.getByEmailAndStatus( + db, + user.email, + "invited", + ); + + if (!pendingInvitation) { + return Promise.resolve(false); + } + + return Promise.resolve(true); } return Promise.resolve(true); }, diff --git a/packages/db/src/repository/member.repo.ts b/packages/db/src/repository/member.repo.ts index 48913a92..83cfef53 100644 --- a/packages/db/src/repository/member.repo.ts +++ b/packages/db/src/repository/member.repo.ts @@ -41,6 +41,20 @@ export const getByPublicId = async (db: dbClient, publicId: string) => { }); }; +export const getByEmailAndStatus = async ( + db: dbClient, + email: string, + status: MemberStatus, +) => { + return db.query.workspaceMembers.findFirst({ + where: and( + eq(workspaceMembers.email, email), + eq(workspaceMembers.status, status), + isNull(workspaceMembers.deletedAt), + ), + }); +}; + export const acceptInvite = async ( db: dbClient, args: { memberId: number; userId: string },