feat: Implémentation authentification NIST SP 800-63B v3.0.8

- Ajout du service PasswordSecurityService conforme NIST SP 800-63B
- Vérification des mots de passe contre la base Have I Been Pwned
- Validation : minimum 8 caractères, maximum 64 caractères
- Pas d'exigences de composition obligatoires (conforme NIST)
- Intégration dans LoginController et UserController
- Génération de mots de passe sécurisés non compromis

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-15 15:31:23 +02:00
parent 206c76c7db
commit 5e255ebf5e
49 changed files with 152716 additions and 149802 deletions

View File

@@ -6,6 +6,7 @@ class CustomTextField extends StatelessWidget {
final String label;
final String? hintText;
final String? helperText;
final int? helperMaxLines;
final IconData? prefixIcon;
final Widget? suffixIcon;
final bool readOnly;
@@ -33,6 +34,7 @@ class CustomTextField extends StatelessWidget {
required this.label,
this.hintText,
this.helperText,
this.helperMaxLines,
this.prefixIcon,
this.suffixIcon,
this.readOnly = false,
@@ -79,6 +81,7 @@ class CustomTextField extends StatelessWidget {
labelText: isRequired ? "$label *" : label,
hintText: hintText,
helperText: helperText,
helperMaxLines: helperMaxLines,
prefixIcon: prefixIcon != null ? Icon(prefixIcon) : null,
suffixIcon: suffixIcon,
border: const OutlineInputBorder(),
@@ -150,6 +153,7 @@ class CustomTextField extends StatelessWidget {
decoration: InputDecoration(
hintText: hintText,
helperText: helperText,
helperMaxLines: helperMaxLines,
prefixIcon: prefixIcon != null ? Icon(prefixIcon) : null,
suffixIcon: suffixIcon,
border: OutlineInputBorder(