31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
const { z } = require("zod");
|
|
const { passwordSchema } = require("./password.validation");
|
|
const { emailSchema } = require("./email.validation");
|
|
|
|
const registerSchema = z
|
|
.object({
|
|
firstname: z.string().min(2, "Le prénom doit contenir au moins 2 caractères"),
|
|
lastname: z.string().min(2, "Le nom doit contenir au moins 2 caractères"),
|
|
email: emailSchema,
|
|
password: passwordSchema,
|
|
// Vérifiée aussi côté serveur : le contrôle du navigateur ne protège pas
|
|
// un appel direct à l'API.
|
|
confirmPassword: z.string({ error: "Veuillez confirmer le mot de passe" }),
|
|
birthdate: z.string().optional(),
|
|
gender: z.string().optional(),
|
|
marketingOptIn: z.boolean().optional(),
|
|
})
|
|
.refine((data) => data.password === data.confirmPassword, {
|
|
message: "Les deux mots de passe ne correspondent pas",
|
|
path: ["confirmPassword"],
|
|
});
|
|
|
|
const loginSchema = z.object({
|
|
email: emailSchema,
|
|
password: z.string().min(1, "Mot de passe requis"),
|
|
});
|
|
|
|
module.exports = {
|
|
registerSchema,
|
|
loginSchema,
|
|
}; |