feat(frontend): checklist de complexite du mot de passe sur reset-password
Remplace l'indice statique sous le champ nouveau mot de passe par une checklist qui coche chaque regle (longueur, majuscule, minuscule, chiffre, caractere special) au fur et a mesure de la saisie. Les regles individuelles (PASSWORD_REQUIREMENTS) sont exposees depuis le meme validateur que PASSWORD_PATTERN pour rester la seule source de verite.
This commit is contained in:
@@ -23,3 +23,18 @@ export const passwordValidators = [
|
||||
Validators.maxLength(PASSWORD_MAX_LENGTH),
|
||||
Validators.pattern(PASSWORD_PATTERN),
|
||||
];
|
||||
|
||||
export interface PasswordRequirement {
|
||||
label: string;
|
||||
test: (value: string) => boolean;
|
||||
}
|
||||
|
||||
const SPECIAL_REGEX = new RegExp(`[${SPECIAL_CHARACTERS}]`);
|
||||
|
||||
export const PASSWORD_REQUIREMENTS: PasswordRequirement[] = [
|
||||
{ label: `${PASSWORD_MIN_LENGTH} caractères minimum`, test: (v) => v.length >= PASSWORD_MIN_LENGTH },
|
||||
{ label: '1 majuscule', test: (v) => /[A-ZÀ-ÖØ-Þ]/.test(v) },
|
||||
{ label: '1 minuscule', test: (v) => /[a-zà-öø-þ]/.test(v) },
|
||||
{ label: '1 chiffre', test: (v) => /[0-9]/.test(v) },
|
||||
{ label: '1 caractère spécial', test: (v) => SPECIAL_REGEX.test(v) },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user