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:
Johan LEROY
2026-09-17 14:57:05 +02:00
parent 7674955637
commit e381e0de09
7 changed files with 116 additions and 2 deletions
@@ -12,7 +12,7 @@
formControlName="new_password"
autocomplete="new-password"
/>
<span class="auth-hint">{{ passwordHint }}</span>
<app-password-requirements [password]="password()" />
@if (errorMessage()) {
<p class="auth-error">{{ errorMessage() }}</p>
@@ -1,15 +1,17 @@
import { Component, OnInit, inject, signal } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop';
import { ReactiveFormsModule, FormBuilder } from '@angular/forms';
import { ActivatedRoute, Router, RouterLink } from '@angular/router';
import { HttpErrorResponse } from '@angular/common/http';
import { AuthService } from '../../../core/services/auth.service';
import { passwordValidators, PASSWORD_HINT } from '../../../shared/validators/password.validator';
import { PasswordRequirementsChecklist } from '../../../shared/components/password-requirements/password-requirements';
import { MOTIF_LIEN_RESET_INVALIDE } from '../../../shared/models/auth-redirect-reason';
@Component({
selector: 'app-reset-password',
standalone: true,
imports: [ReactiveFormsModule, RouterLink],
imports: [ReactiveFormsModule, RouterLink, PasswordRequirementsChecklist],
templateUrl: './reset-password.html',
styleUrl: './reset-password.scss',
})
@@ -30,6 +32,8 @@ export class ResetPassword implements OnInit {
new_password: ['', passwordValidators],
});
password = toSignal(this.form.controls.new_password.valueChanges, { initialValue: '' });
ngOnInit(): void {
if (!this.hasToken) {
this.redirigeVersLoginLienInvalide();