Files
Checkmate/client/src/Validation/password.ts
T
2026-02-07 20:54:17 +00:00

26 lines
920 B
TypeScript

import { z } from "zod";
import { specialCharPattern } from "@/Validation/patterns";
export const passwordSchema = z
.object({
currentPassword: z.string().min(1, "Current password is required"),
newPassword: z
.string()
.min(1, "New password is required")
.min(8, "Password must be at least 8 characters")
.refine((val) => /[A-Z]/.test(val), "Password must contain an uppercase letter")
.refine((val) => /[a-z]/.test(val), "Password must contain a lowercase letter")
.refine((val) => /\d/.test(val), "Password must contain a number")
.refine(
(val) => specialCharPattern.test(val),
"Password must contain a special character"
),
confirm: z.string().min(1, "Please confirm your new password"),
})
.refine((data) => data.newPassword === data.confirm, {
message: "Passwords do not match",
path: ["confirm"],
});
export type PasswordFormData = z.infer<typeof passwordSchema>;