From 1dcbe2e3fe3d5f3af5d1ff63d2be805b5296c900 Mon Sep 17 00:00:00 2001 From: Daniel Kirby Date: Fri, 26 Jun 2026 13:04:40 +0100 Subject: [PATCH] feat: confirm admin creation password --- src/lib/schemas/admin.ts | 18 ++++++++++++------ .../admins/create-admin-dialog.svelte | 17 +++++++++++++++++ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/lib/schemas/admin.ts b/src/lib/schemas/admin.ts index 1be4bc9..c8c41d6 100644 --- a/src/lib/schemas/admin.ts +++ b/src/lib/schemas/admin.ts @@ -6,12 +6,18 @@ const optionalPassword = z.string().refine((value) => value.length === 0 || valu }); const roleSchema = z.enum(['admin', 'user'], 'Select a role.'); -export const createAdminSchema = z.object({ - name: z.string().trim().min(1, 'Enter a name.'), - email: z.email('Enter a valid email address.').transform((value) => value.toLowerCase()), - password: optionalPassword, - role: roleSchema.default('admin') -}); +export const createAdminSchema = z + .object({ + name: z.string().trim().min(1, 'Enter a name.'), + email: z.email('Enter a valid email address.').transform((value) => value.toLowerCase()), + password: optionalPassword, + confirmPassword: optionalPassword, + role: roleSchema.default('admin') + }) + .refine((data) => data.password === data.confirmPassword, { + message: 'Confirm password must match password.', + path: ['confirmPassword'] + }); export const editAdminSchema = z.object({ id: z.string().min(1, 'Admin id is required.'), diff --git a/src/routes/dashboard/organization/admins/create-admin-dialog.svelte b/src/routes/dashboard/organization/admins/create-admin-dialog.svelte index f4bebb3..420c898 100644 --- a/src/routes/dashboard/organization/admins/create-admin-dialog.svelte +++ b/src/routes/dashboard/organization/admins/create-admin-dialog.svelte @@ -76,6 +76,23 @@ + + + + {#snippet children({ props })} + Confirm password + + {/snippet} + + + +