Add demo source code
This commit is contained in:
41
src/schemas/user.schema.ts
Normal file
41
src/schemas/user.schema.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const userFormSchema = z.object({
|
||||
username: z.string().min(1, "Username is required").min(3, "Username must be at least 3 characters"),
|
||||
email: z.string().email("Invalid email address"),
|
||||
firstName: z.string().min(1, "First name is required"),
|
||||
lastName: z.string().min(1, "Last name is required"),
|
||||
password: z.string().min(6, "Password must be at least 6 characters"),
|
||||
confirmPassword: z.string().min(6, "Confirm password must be at least 6 characters"),
|
||||
}).refine((data) => data.password === data.confirmPassword, {
|
||||
message: "Passwords don't match",
|
||||
path: ["confirmPassword"],
|
||||
});
|
||||
|
||||
export const userEditFormSchema = z.object({
|
||||
username: z.string().min(1, "Username is required").min(3, "Username must be at least 3 characters"),
|
||||
email: z.string().email("Invalid email address"),
|
||||
firstName: z.string().min(1, "First name is required"),
|
||||
lastName: z.string().min(1, "Last name is required"),
|
||||
password: z.string().optional(),
|
||||
confirmPassword: z.string().optional(),
|
||||
}).refine((data) => {
|
||||
if (data.password && data.password.length > 0) {
|
||||
return data.password.length >= 6;
|
||||
}
|
||||
return true;
|
||||
}, {
|
||||
message: "Password must be at least 6 characters",
|
||||
path: ["password"],
|
||||
}).refine((data) => {
|
||||
if (data.password && data.password.length > 0) {
|
||||
return data.password === data.confirmPassword;
|
||||
}
|
||||
return true;
|
||||
}, {
|
||||
message: "Passwords don't match",
|
||||
path: ["confirmPassword"],
|
||||
});
|
||||
|
||||
export type UserForm = z.infer<typeof userFormSchema>;
|
||||
export type UserEditForm = z.infer<typeof userEditFormSchema>;
|
||||
Reference in New Issue
Block a user