Aller au contenu

PD-241 — Revue de Code (Logout)

Verdict

⚠️ RÉSERVES

Points positifs

  • Controller fin : délègue correctement au service, guards/filters appliqués.
  • Logging évite explicitement le refresh_token ; événements structurés pour Keycloak.
  • Erreurs typées (LogoutError) et filtre dédié pour format {error, message}.

Points à améliorer

1) Non-conformité aux code contracts (keycloak-admin-logout) - La contrainte "Timeout supérieur à 5s interdit" n’est pas vérifiable ni appliquée dans KeycloakAdminService.invalidateSession/revokeRefreshToken. - Impact : risque de non-conformité contractuelle si le timeout global dépasse 5s.

2) Propagation d’erreurs Keycloak mal typée - KeycloakAdminService.invalidateSession/revokeRefreshToken catch MfaManagementError (hors périmètre PD-241) puis relance LogoutFailedError. - Impact : mélange de types d’erreurs et dépendance implicite à un module MFA ; fragilise le mapping ERR-241-*.

3) Audit failure non isolée - AuthService.logout logue l’échec d’audit dans le même try/catch que la logique métier. Un échec d’audit avant throw peut masquer l’erreur initiale. - Impact : difficulté d’observabilité en incident, comportement moins prévisible.

Conformité aux code contracts

  • auth-controller : ✅ JWT requis, format d’erreur assuré via filter, pas de logging refresh_token.
  • auth-service : ⚠️ refresh token révoqué si présent (OK), mais dépendance implicite à types d’erreurs externes et gestion d’erreur perfectible.
  • keycloak-admin-logout : ⚠️ timeout 5s non garanti ; logging correct (pas de refresh_token).

Conclusion

Le code est globalement propre et respecte les patterns NestJS (DI, guards, DTOs, filters). Les réserves portent surtout sur la conformité stricte aux code contracts (timeout) et la gestion d’erreurs Keycloak/métier. À corriger avant validation pleine conformité.