PD-238 — Revue de Code¶
Résumé¶
| Critère | Statut |
|---|---|
| Patterns NestJS | ✅ |
| Qualité code | ⚠️ |
| Gestion erreurs | ⚠️ |
| Maintenabilité | ✅ |
Verdict : ⚠️ RÉSERVES
Points positifs¶
- Controller thin/service fat bien respecté, responsabilité claire.
- Guards enchaînés par endpoint (JWT + rate limit + reauth) conformes aux invariants clés.
- Usage explicite de
@UseFilters(MfaExceptionFilter)pour centraliser la gestion d’erreurs. - Nommage des routes/DTOs cohérent avec la spécification.
Points à améliorer¶
| ID | Description | Fichier | Gravité |
|---|---|---|---|
| R-01 | MfaRateLimitGuard appliqué sur POST /auth/reauth (hors périmètre MFA dans la spec). Risque de non‑conformité si la spec ne prévoit pas ce rate limit. | mfa-management.controller.ts / reauth.controller.ts | MAJEUR |
| R-02 | Absence explicite d’un check userId ↔ keycloakUserId dans le service : la contrainte INV‑238‑02 repose sur un mapping implicite. | mfa-management.service.ts | MAJEUR |
| R-03 | Gestion d’erreur non visible dans la couche service (ex. verifyTotp sans handling explicite pour sessionId manquant). Risque d’erreurs non alignées ERR‑238‑*. | mfa-management.service.ts | MINEUR |
| R-04 | method est implicitement nullable côté DTO/service, alors que la spec fixe TOTP comme valeur unique supportée. | mfa-management.service.ts / mfa-status.dto.ts | MINEUR |
Détail par fichier¶
mfa-management.controller.ts¶
- ✅ Guards alignés avec les invariants (JWT, reauth, rate limit) côté
/user/mfa/*. - ⚠️ Pas d’indication sur la validation de
TotpVerifyRequestDto(assumée par ValidationPipe global).
mfa-management.service.ts¶
- ✅ Flux logique conforme (init → verify → recovery codes, disable/regenerate via credentialId).
- ⚠️ Dépendances implicites : stockage
sessionIden Redis non contractuel dans la spec (à aligner). - ⚠️
sessionIdnon trouvé : comportement non défini dans le plan/spec.
reauth.controller.ts (référence implicite)¶
- ⚠️ Le rate limit MFA est appliqué sur /auth/reauth (non explicitement dans la spec).
reauth-token.guard.ts (référence implicite)¶
- ✅ Vérifications
purpose,sub,expprévues — conforme aux invariants.
mfa-rate-limit.guard.ts (référence implicite)¶
- ✅ Rate limit global appliqué à tous endpoints MFA.
- ⚠️ Scope exact (userId vs IP) non aligné avec “global policy” de la spec.