From b40665c2d77ed1215cc5170a9c0ac22e357f2ca8 Mon Sep 17 00:00:00 2001 From: bytedream Date: Sat, 7 Nov 2026 21:23:11 +0100 Subject: [PATCH] merge whitelist and direct invitations --- src/actions/signup.ts | 3 + src/actions/user.ts | 29 +++++++- .../DirectInvitations.svelte | 67 ++++++++++++++++++- .../directInvitations/SidebarActions.svelte | 4 ++ .../directInvitations/directInvitations.ts | 40 +++++++++-- src/components/admin/popup/CrudPopup.svelte | 3 + src/db/database.sql | 12 +--- src/db/database.ts | 25 ++----- src/db/schema/directSignup.ts | 59 ++++++++++++++-- src/db/schema/whitelistUser.ts | 66 ------------------ src/pages/api/users/index.ts | 2 + src/pages/api/whitelist/index.ts | 2 +- 12 files changed, 200 insertions(+), 112 deletions(-) delete mode 100644 src/db/schema/whitelistUser.ts diff --git a/src/actions/signup.ts b/src/actions/signup.ts index ff4d44d..ab7ef3b 100644 --- a/src/actions/signup.ts +++ b/src/actions/signup.ts @@ -87,6 +87,9 @@ export const signup = { if (input.code) { await tx.setDirectSignupUser({ code: input.code, userId: user.id }); } + if (uuid) { + await tx.linkDirectSignupUserByUuid({ uuid: uuid, userId: user.id }); + } }); sendWebhook(WebhookAction.Signup, { diff --git a/src/actions/user.ts b/src/actions/user.ts index e4260d8..71efc03 100644 --- a/src/actions/user.ts +++ b/src/actions/user.ts @@ -35,6 +35,10 @@ export const user = { uuid: input.uuid }); + if (input.uuid) { + await db.linkDirectSignupUserByUuid({ uuid: input.uuid, userId: id }); + } + return { id: id }; @@ -146,10 +150,31 @@ export const user = { } }), addDirectInvitation: defineAction({ - handler: async (_, context) => { + input: z + .object({ + uuid: z.string().nullable(), + comment: z.string().nullable() + }) + .optional(), + handler: async (input, context) => { Session.actionSessionFromCookies(context.cookies, Permissions.Users); - return await db.addDirectSignup({}); + return await db.addDirectSignup({ + uuid: input?.uuid ?? null, + comment: input?.comment ?? null + }); + } + }), + editDirectInvitation: defineAction({ + input: z.object({ + code: z.string(), + uuid: z.string().nullable(), + comment: z.string().nullable() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Users); + + await db.editDirectSignup(input); } }), deleteDirectInvitation: defineAction({ diff --git a/src/app/admin/directInvitations/DirectInvitations.svelte b/src/app/admin/directInvitations/DirectInvitations.svelte index 1d0106f..69793e5 100644 --- a/src/app/admin/directInvitations/DirectInvitations.svelte +++ b/src/app/admin/directInvitations/DirectInvitations.svelte @@ -1,13 +1,38 @@