From b011ddd96122ced69cc944e6d80f07086cf5643a Mon Sep 17 00:00:00 2001 From: avery Date: Sun, 28 Jun 2026 23:46:57 -0400 Subject: [PATCH 1/4] Major backend changes in place, API logic + admin pages need to be added --- .../new-users-table-actions.svelte | 131 --------- .../new-users-table-checkbox.svelte | 12 - .../new-users-table/new-users-table.svelte | 274 ------------------ .../components/new-users-table/text.svelte | 5 - src/lib/components/registration-form.svelte | 54 ++-- .../student-registration-form.svelte | 71 +++++ src/lib/functions/login.remote.ts | 8 +- src/lib/functions/new-users/approve.remote.ts | 62 ---- src/lib/functions/new-users/block.remote.ts | 33 --- src/lib/functions/new-users/deny.remote.ts | 31 -- src/lib/functions/onboarding.remote.ts | 6 +- src/lib/functions/register.remote.ts | 12 +- src/lib/functions/reset-password.remote.ts | 6 +- src/lib/functions/scan.remote.ts | 45 +++ src/lib/functions/tap.remote.ts | 53 ---- src/lib/functions/user/points.remote.ts | 18 +- src/lib/models.ts | 40 ++- src/lib/server/postgres.ts | 29 +- src/lib/utils/schema.sql | 27 +- src/routes/app/events/[slug]/+page.server.ts | 6 +- src/routes/app/requests/users/+page.server.ts | 25 -- src/routes/app/requests/users/+page.svelte | 12 - src/routes/app/scan/+page.svelte | 71 +++-- src/routes/points/+page.svelte | 13 +- 24 files changed, 252 insertions(+), 792 deletions(-) delete mode 100644 src/lib/components/new-users-table/new-users-table-actions.svelte delete mode 100644 src/lib/components/new-users-table/new-users-table-checkbox.svelte delete mode 100644 src/lib/components/new-users-table/new-users-table.svelte delete mode 100644 src/lib/components/new-users-table/text.svelte create mode 100644 src/lib/components/student-registration-form.svelte delete mode 100644 src/lib/functions/new-users/approve.remote.ts delete mode 100644 src/lib/functions/new-users/block.remote.ts delete mode 100644 src/lib/functions/new-users/deny.remote.ts create mode 100644 src/lib/functions/scan.remote.ts delete mode 100644 src/lib/functions/tap.remote.ts delete mode 100644 src/routes/app/requests/users/+page.server.ts delete mode 100644 src/routes/app/requests/users/+page.svelte diff --git a/src/lib/components/new-users-table/new-users-table-actions.svelte b/src/lib/components/new-users-table/new-users-table-actions.svelte deleted file mode 100644 index ed06e2a..0000000 --- a/src/lib/components/new-users-table/new-users-table-actions.svelte +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Approve User - Select a role to approve the user with. - - -
- -
-
- -
- {#if user.role === "admin"} -
- -
- {/if} -
- -
{ - try { - await submit(); - form.reset(); - approveDialogOpen = false; - toast.success("User approved successfully", { - description: "They've received an email to set their password and activate their account.", - }); - } catch (error: any) { - // ignore redirects - console.error("approve failed", error); - toast.error("Failed to approve user", { description: error?.body.message }); - } finally { - } - })} - > - - - -
-
-
-
- - - - {#snippet child({ props })} - - {/snippet} - - - - Approve - (approveDialogOpen = true)}>Approve User - - - -
{ - try { - await submit(); - form.reset(); - approveDialogOpen = false; - toast.success("User denied successfully"); - } catch (error: any) { - // ignore redirects - console.error("deny failed", error); - toast.error("Failed to deny user", { description: error?.body.message }); - } finally { - } - })} - > - - - - -
- -
{ - try { - await submit(); - form.reset(); - approveDialogOpen = false; - toast.success("User blocked successfully"); - } catch (error: any) { - // ignore redirects - console.error("block failed", error); - toast.error("Failed to block user", { description: error?.body.message }); - } finally { - } - })} - > - - - - -
-
-
diff --git a/src/lib/components/new-users-table/new-users-table-checkbox.svelte b/src/lib/components/new-users-table/new-users-table-checkbox.svelte deleted file mode 100644 index d99d423..0000000 --- a/src/lib/components/new-users-table/new-users-table-checkbox.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - checked, onCheckedChange} {...restProps} /> \ No newline at end of file diff --git a/src/lib/components/new-users-table/new-users-table.svelte b/src/lib/components/new-users-table/new-users-table.svelte deleted file mode 100644 index 875a705..0000000 --- a/src/lib/components/new-users-table/new-users-table.svelte +++ /dev/null @@ -1,274 +0,0 @@ - - -
-
- table.getColumn("email")?.setFilterValue(e.currentTarget.value)} - onchange={e => { - table.getColumn("email")?.setFilterValue(e.currentTarget.value); - }} - class="max-w-sm" - /> - - - {#snippet child({ props })} - - {/snippet} - - - {#each table.getAllColumns().filter(col => col.getCanHide()) as column (column)} - column.getIsVisible(), v => column.toggleVisibility(!!v)} - > - {column.columnDef.header} - - {/each} - - -
-
- - - {#each table.getHeaderGroups() as headerGroup (headerGroup.id)} - - {#each headerGroup.headers as header (header.id)} - - {#if !header.isPlaceholder} - - {/if} - - {/each} - - {/each} - - - {#each table.getRowModel().rows as row (row.id)} - - {#each row.getVisibleCells() as cell (cell.id)} - - - - {/each} - - {:else} - - No results... maybe you can relax? - - {/each} - - -
-
-
- {table.getFilteredSelectedRowModel().rows.length} of - {table.getFilteredRowModel().rows.length} row(s) selected. -
-
- - -
-
-
diff --git a/src/lib/components/new-users-table/text.svelte b/src/lib/components/new-users-table/text.svelte deleted file mode 100644 index 5aca253..0000000 --- a/src/lib/components/new-users-table/text.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -{text} diff --git a/src/lib/components/registration-form.svelte b/src/lib/components/registration-form.svelte index 867befd..fd27454 100644 --- a/src/lib/components/registration-form.svelte +++ b/src/lib/components/registration-form.svelte @@ -1,8 +1,10 @@ Request an account - Enter your information below to request an account. Accounts are only granted to club E-Board memebrs, SGA - members, OSI staff. + + Enter your information below to create an account. + If you are an SGA, Club E-Board member, or OSI staff, create an account here if you haven't already, then + please email sga@snhu.edu to obtain the correct role for your account. +
{ + {...register.preflight(Registration).enhance(async ({ form, submit }) => { pending = true; try { await submit(); form.reset(); + + // TODO: redirect to login page with a success message - toast.success("Account request submitted", { - description: - "If your request is approved, you'll receive an email from SGA with further instructions to activate your account.", - }); } catch (error: any) { - // ignore redirects if (error?.status >= 300 && error?.status < 400) { throw error; } @@ -57,28 +58,23 @@ - Student ID - + Password + -