Aller au contenu

PD-106 — Validation fonctionnelle

Synthèse

Critère Fichier/Composant Verdict Commentaire
CA-106-01 AppNavigator.tsx, ProfileAvatar, SettingsScreen.tsx CONFORME Point d'entrée unique vers Settings via ProfileAvatar -> navigate("Settings").
CA-106-02 SettingsScreen.tsx CONFORME Profil affiché en lecture seule (Text) avec nom, email, avatar/initiales.
CA-106-03 SettingsScreen.tsx CONFORME Email affiché et lisible, identification non ambiguë du compte connecté.
CA-106-04 useSettings.ts, useMfa.ts, SettingsScreen.tsx, MfaSettingsScreen.tsx ÉCART MAJEUR Relecture MFA au chargement conforme ; relecture après chaque mutation non démontrée pour la régénération des codes (regenerateCodes() ne mentionne pas de reload de statut MFA).
CA-106-05 useReauth.ts, MfaSettingsScreen.tsx, ChangePasswordScreen.tsx, DeleteAccountScreen.tsx CONFORME Re-auth exigée avant opérations critiques, TTL 5 min, invalidation navigation, mécanisme one-time (consume).
CA-106-06 useMfa.ts, MfaEnrollScreen.tsx, settingsApi.ts CONFORME Activation MFA uniquement après confirmation serveur (verify).
CA-106-07 useMfa.ts, MfaEnrollScreen.tsx CONFORME En cas d'échec MFA, erreur affichée et état non activé.
CA-106-08 RecoveryCodesDisplay.tsx, MfaEnrollScreen.tsx, MfaSettingsScreen.tsx, useMfa.ts CONFORME Affichage des codes limité au contexte frais + avertissement de criticité.
CA-106-09 settingsApi.ts, useMfa.ts, MfaSettingsScreen.tsx CONFORME Régénération via endpoint dédié, comportement fonctionnel attendu de remplacement des codes.
CA-106-10 MfaSettingsScreen.tsx, ConfirmationModal.tsx, ReauthModal.tsx, useMfa.ts CONFORME Désactivation MFA conditionnée par confirmation explicite + re-auth.
CA-106-11 ChangePasswordScreen.tsx CONFORME Mismatch nouveau/confirmation refusé localement sans appel API.
CA-106-12 ChangePasswordScreen.tsx, settingsApi.ts CONFORME Erreur serveur restituée avec motif exploitable.
CA-106-13 SettingsScreen.tsx, settingsApi.ts, useAuth (clearAllOnLogout) CONFORME Logout tente l'invalidation session serveur et applique fallback prévu.
CA-106-14 SettingsScreen.tsx, useAuth (clearAllOnLogout) CONFORME Nettoyage local appliqué après logout nominal et fallback.
CA-106-15 DeleteAccountScreen.tsx, ConfirmationModal.tsx, ReauthModal.tsx CONFORME Suppression compte avec irréversibilité + confirmation renforcée 2 étapes + re-auth.
CA-106-16 DeleteAccountScreen.tsx, settingsApi.ts CONFORME Déconnexion post-suppression implémentée ; non-réutilisation du compte déléguée au backend via DELETE /user/account.
CA-106-17 RecoveryCodesDisplay.tsx, useMfa.ts, MfaEnrollScreen.tsx, settingsApi.ts ÉCART MAJEUR Secrets non persistés en storage applicatif décrits conformes, mais bouton copie Clipboard introduit une persistance système potentielle hors mémoire éphémère.
CA-106-18 src/i18n/index.ts, src/i18n/locales/fr/*.json, src/i18n/locales/en/*.json CONFORME Localisation FR/EN en place pour Settings/MFA et messages associés.

Détails des écarts (si applicable)

Écart 1 — Relecture MFA après mutation non démontrée pour la régénération

  • Critère : CA-106-04 (réf. INV-106-04, flux F-106-03)
  • Attendu : état MFA relu au chargement et après chaque mutation MFA.
  • Observé : regenerateCodes() (useMfa) mentionne stockage des nouveaux codes, sans relecture explicite du statut MFA.
  • Gravité : MAJEUR

Écart 2 — Persistance potentielle des secrets via Clipboard

  • Critère : CA-106-17 (réf. INV-106-08)
  • Attendu : secrets TOTP/codes de récupération non persistés localement.
  • Observé : RecoveryCodesDisplay.tsx expose un bouton de copie Clipboard, pouvant laisser les codes hors mémoire éphémère applicative.
  • Gravité : MAJEUR

Verdict global

  • Nombre CONFORME : 16
  • Nombre ÉCART MINEUR : 0
  • Nombre ÉCART MAJEUR : 2
  • Statut : NON CONFORME