initial: standalone repo from monorepo split
This commit is contained in:
27
packages/shared/src/schemas/user.ts
Normal file
27
packages/shared/src/schemas/user.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { z } from 'zod';
|
||||
import { Role } from '../constants/roles';
|
||||
|
||||
const roleEnum = z.enum([
|
||||
Role.SUPER_ADMIN,
|
||||
Role.TENANT_ADMIN,
|
||||
Role.MANAGER,
|
||||
Role.TECHNICIAN,
|
||||
Role.VIEWER,
|
||||
]);
|
||||
|
||||
export const createUserSchema = z.object({
|
||||
email: z.string().email('Invalid email address'),
|
||||
password: z.string().min(8, 'Password must be at least 8 characters'),
|
||||
firstName: z.string().min(1, 'First name is required'),
|
||||
lastName: z.string().min(1, 'Last name is required'),
|
||||
roles: z.array(roleEnum).min(1, 'At least one role is required'),
|
||||
});
|
||||
|
||||
export const updateUserSchema = z.object({
|
||||
firstName: z.string().min(1).optional(),
|
||||
lastName: z.string().min(1).optional(),
|
||||
roles: z.array(roleEnum).min(1).optional(),
|
||||
});
|
||||
|
||||
export type CreateUserInput = z.infer<typeof createUserSchema>;
|
||||
export type UpdateUserInput = z.infer<typeof updateUserSchema>;
|
||||
Reference in New Issue
Block a user