aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--packages/shared/types/admin.ts25
-rw-r--r--packages/shared/types/users.ts2
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({