diff options
Diffstat (limited to '')
| -rw-r--r-- | packages/shared/types/admin.ts | 25 | ||||
| -rw-r--r-- | packages/shared/types/users.ts | 2 |
2 files changed, 26 insertions, 1 deletions
diff --git a/packages/shared/types/admin.ts b/packages/shared/types/admin.ts new file mode 100644 index 00000000..8b16dfd0 --- /dev/null +++ b/packages/shared/types/admin.ts @@ -0,0 +1,25 @@ +import { z } from "zod"; + +import { PASSWORD_MAX_LENGTH, zSignUpSchema } from "./users"; + +export const zRoleSchema = z.object({ + role: z.enum(["user", "admin"]), +}); + +export const zAdminCreateUserSchema = zSignUpSchema.and(zRoleSchema); + +export const changeRoleSchema = z.object({ + userId: z.string(), + role: z.enum(["user", "admin"]), +}); + +export const resetPasswordSchema = z + .object({ + userId: z.string(), + newPassword: z.string().min(8).max(PASSWORD_MAX_LENGTH), + newPasswordConfirm: z.string(), + }) + .refine((data) => data.newPassword === data.newPasswordConfirm, { + message: "Passwords don't match", + path: ["newPasswordConfirm"], + }); diff --git a/packages/shared/types/users.ts b/packages/shared/types/users.ts index 3026337a..7d97a6d9 100644 --- a/packages/shared/types/users.ts +++ b/packages/shared/types/users.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -const PASSWORD_MAX_LENGTH = 100; +export const PASSWORD_MAX_LENGTH = 100; export const zSignUpSchema = z .object({ |
