22 lines
903 B
JavaScript
22 lines
903 B
JavaScript
const { z } = require("zod");
|
|
|
|
// Règle de mot de passe, reprise à l'identique par le front
|
|
// (frontend/src/utils/passwordRules.js) : plus de 7 caractères et au moins un
|
|
// caractère spécial, c'est-à-dire ni lettre (accentuée comprise), ni chiffre,
|
|
// ni espace.
|
|
const SPECIAL_CHARACTER = /[^\p{L}\p{N}\s]/u;
|
|
|
|
const passwordSchema = z
|
|
.string()
|
|
.min(8, "Le mot de passe doit contenir au moins 8 caractères")
|
|
.regex(SPECIAL_CHARACTER, "Le mot de passe doit contenir au moins un caractère spécial");
|
|
|
|
// Pour les contrôleurs qui valident à la main : message de la première règle
|
|
// non respectée, ou null si le mot de passe est valide.
|
|
function passwordRuleError(password) {
|
|
const result = passwordSchema.safeParse(password ?? "");
|
|
return result.success ? null : `${result.error.issues[0].message}.`;
|
|
}
|
|
|
|
module.exports = { passwordSchema, passwordRuleError, SPECIAL_CHARACTER };
|