28 lines
853 B
TypeScript
28 lines
853 B
TypeScript
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>;
|