Plan de refactorisation du module Auth - Conformité DDD¶
Date : 2026-04-20 Module : Auth Priorité : Haute
Objectif¶
Refactoriser le module Auth pour le rendre totalement conforme aux conventions DDD du projet PsychoEnLigneV2.
État actuel¶
Le module Auth est partiellement conforme : - Possède de nombreux use cases (30+) - Structure globale présente mais non uniforme - Problèmes d'organisation des schémas Zod - Exceptions parfois héritent de Error au lieu de ErreurMetier - Use cases ne suivent pas toujours le pattern 5 étapes
Structure cible (DDD conforme)¶
``` src/Modules/Auth/ ├── domain/ │ ├── entities/ │ │ ├── Utilisateur.ts │ │ ├── SessionJeton.ts │ │ ├── BackupCode.ts │ │ ├── ActionAudit.ts │ │ ├── RessourceAudit.ts │ │ └── AuditLog.ts │ ├── interfaces/ │ │ ├── repositories/ │ │ │ ├── IUtilisateurRepository.ts │ │ │ ├── ISessionJetonRepository.ts │ │ │ ├── IBackupCodeRepository.ts │ │ │ ├── IActionAuditRepository.ts │ │ │ ├── IRessourceAuditRepository.ts │ │ │ ├── ITentativeConnexionRepository.ts │ │ │ ├── ITokenResetRepository.ts │ │ │ ├── IIPBlacklistRepository.ts │ │ │ ├── IJournalAccesRepository.ts │ │ │ ├── ISecurityLogRepository.ts │ │ │ └── ICodeVerificationRepository.ts │ │ └── services/ │ │ ├── IAuthService.ts │ │ ├── IEmailService.ts │ │ ├── IJWTService.ts │ │ ├── ICacheService.ts │ │ ├── IRedisService.ts │ │ ├── IHashService.ts │ │ ├── I2FAService.ts │ │ └── IServiceValidation.ts │ ├── exceptions/ │ │ ├── AuthExceptions.ts │ │ ├── SessionExceptions.ts │ │ ├── ExpirationExceptions.ts │ │ └── ErreurMetier.ts │ ├── schemas/ │ │ └── auth.schemas.ts (constantes string uniquement) │ └── types/ │ └── auth.types.ts ├── application/ │ ├── interfaces/ │ │ ├── IInscrireUtilisateurUseCase.ts │ │ ├── IConnexionUseCase.ts │ │ ├── IDeconnexionUseCase.ts │ │ ├── IRefreshTokenUseCase.ts │ │ ├── IValiderAccessTokenUseCase.ts │ │ ├── IObtenirProfilUseCase.ts │ │ ├── IModifierProfilUseCase.ts │ │ ├── IChangerMotDePasseUseCase.ts │ │ ├── IChangerEmailUseCase.ts │ │ ├── IVerifierEmailUseCase.ts │ │ ├── IVerifierNouvelEmailUseCase.ts │ │ ├── IVerifier2FAUseCase.ts │ │ ├── IGenerer2FASecretUseCase.ts │ │ ├── IActiver2FAUseCase.ts │ │ ├── IDesactiver2FAUseCase.ts │ │ ├── IEnvoyerCode2FAUseCase.ts │ │ ├── IGenererBackupCodesUseCase.ts │ │ ├── IVerifierBackupCodeUseCase.ts │ │ ├── IRevoquerCodesRecuperationUseCase.ts │ │ ├── IRevoquerSessionUseCase.ts │ │ ├── IRevoquerToutesSessionsUseCase.ts │ │ ├── IListerSessionsActivesUseCase.ts │ │ ├── IRevoquerTokenUseCase.ts │ │ ├── IRevoquerTousTokensUseCase.ts │ │ ├── IRevoquerTousTokensUseCase.ts │ │ ├── IBloquerIPUseCase.ts │ │ ├── IDebloquerIPUseCase.ts │ │ ├── IDetecterConnexionsSuspectesUseCase.ts │ │ ├── IObtenirHistoriqueUseCase.ts │ │ ├── IObtenirLogsSecuriteUseCase.ts │ │ ├── IObtenirParametresUseCase.ts │ │ ├── IDemanderResetPasswordUseCase.ts │ │ ├── IVerifierTokenResetUseCase.ts │ │ ├── IResetPasswordUseCase.ts │ │ ├── ISupprimerCompteUseCase.ts │ │ └── IExporterUtilisateursUseCase.ts │ └── usecases/ │ ├── InscrireUtilisateurUseCase.ts │ ├── ConnexionUseCase.ts │ ├── DeconnexionUseCase.ts │ ├── RefreshTokenUseCase.ts │ ├── ValiderAccessTokenUseCase.ts │ ├── ObtenirProfilUseCase.ts │ ├── ModifierProfilUseCase.ts │ ├── ChangerMotDePasseUseCase.ts │ ├── ChangerEmailUseCase.ts │ ├── VerifierEmailUseCase.ts │ ├── VerifierNouvelEmailUseCase.ts │ ├── Verifier2FAUseCase.ts │ ├── Generer2FASecretUseCase.ts │ ├── Activer2FAUseCase.ts │ ├── Desactiver2FAUseCase.ts │ ├── EnvoyerCode2FAUseCase.ts │ ├── GenererBackupCodesUseCase.ts │ ├── VerifierBackupCodeUseCase.ts │ ├── RevoquerCodesRecuperationUseCase.ts │ ├── RevoquerSessionUseCase.ts │ ├── RevoquerToutesSessionsUseCase.ts │ ├── ListerSessionsActivesUseCase.ts │ ├── RevoquerTokenUseCase.ts │ ├── RevoquerTousTokensUseCase.ts │ ├── BloquerIPUseCase.ts │ ├── DebloquerIPUseCase.ts │ ├── DetecterConnexionsSuspectesUseCase.ts │ ├── ObtenirHistoriqueUseCase.ts │ ├── ObtenirLogsSecuriteUseCase.ts │ ├── ObtenirParametresUseCase.ts │ ├── DemanderResetPasswordUseCase.ts │ ├── VerifierTokenResetUseCase.ts │ ├── ResetPasswordUseCase.ts │ ├── SupprimerCompteUseCase.ts │ └── ExporterUtilisateursUseCase.ts ├── infrastructure/ │ ├── di/ │ │ └── AuthModule.ts │ ├── repositories/ │ │ └── prisma/ │ │ ├── UtilisateurRepositoryPrisma.ts │ │ ├── SessionJetonRepositoryPrisma.ts │ │ ├── BackupCodeRepositoryPrisma.ts │ │ ├── ActionAuditRepositoryPrisma.ts │ │ ├── RessourceAuditRepositoryPrisma.ts │ │ ├── TentativeConnexionRepositoryPrisma.ts │ │ ├── TokenResetRepositoryPrisma.ts │ │ ├── IPBlacklistRepositoryPrisma.ts │ │ ├── JournalAccesRepositoryPrisma.ts │ │ ├── SecurityLogRepositoryPrisma.ts │ │ └── CodeVerificationRepositoryPrisma.ts │ ├── schemas/ │ │ └── zod/ │ │ ├── inscription.schemas.ts │ │ ├── connexion.schemas.ts │ │ ├── profil.schemas.ts │ │ ├── motDePasse.schemas.ts │ │ ├── email.schemas.ts │ │ ├── verification2fa.schemas.ts │ │ ├── backupCodes.schemas.ts │ │ ├── session.schemas.ts │ │ ├── token.schemas.ts │ │ ├── ip.schemas.ts │ │ ├── historique.schemas.ts │ │ ├── logsSecurite.schemas.ts │ │ ├── parametres.schemas.ts │ │ ├── resetPassword.schemas.ts │ │ └── suppressionCompte.schemas.ts │ └── services/ │ ├── validation/ │ │ └── ServiceValidationAuth.ts │ ├── auth/ │ │ ├── AuthService.ts │ │ ├── EmailService.ts │ │ ├── JWTService.ts │ │ ├── CacheService.ts │ │ ├── RedisService.ts │ │ ├── HashService.ts │ │ └── TwoFactorService.ts │ └── config/ │ └── AuthConfig.ts ├── interface-adapters/ │ ├── controllers/ │ │ ├── AuthModuleController.ts │ │ ├── InscrireUtilisateurController.ts │ │ ├── ConnexionController.ts │ │ ├── DeconnexionController.ts │ │ ├── RefreshTokenController.ts │ │ ├── ProfilController.ts │ │ ├── MotDePasseController.ts │ │ ├── EmailController.ts │ │ ├── TwoFactorController.ts │ │ ├── SessionController.ts │ │ ├── TokenController.ts │ │ ├── IPController.ts │ │ ├── HistoriqueController.ts │ │ ├── LogsSecuriteController.ts │ │ ├── ParametresController.ts │ │ ├── ResetPasswordController.ts │ │ └── CompteController.ts │ ├── handlers/ │ │ ├── InscrireUtilisateurHandler.ts │ │ ├── ConnexionHandler.ts │ │ ├── DeconnexionHandler.ts │ │ ├── RefreshTokenHandler.ts │ │ ├── ObtenirProfilHandler.ts │ │ ├── ModifierProfilHandler.ts │ │ ├── ChangerMotDePasseHandler.ts │ │ ├── ChangerEmailHandler.ts │ │ ├── VerifierEmailHandler.ts │ │ ├── VerifierNouvelEmailHandler.ts │ │ ├── Verifier2FAHandler.ts │ │ ├── Generer2FASecretHandler.ts │ │ ├── Activer2FAHandler.ts │ │ ├── Desactiver2FAHandler.ts │ │ ├── EnvoyerCode2FAHandler.ts │ │ ├── GenererBackupCodesHandler.ts │ │ ├── VerifierBackupCodeHandler.ts │ │ ├── RevoquerCodesRecuperationHandler.ts │ │ ├── RevoquerSessionHandler.ts │ │ ├── RevoquerToutesSessionsHandler.ts │ │ ├── ListerSessionsActivesHandler.ts │ │ ├── RevoquerTokenHandler.ts │ │ ├── RevoquerTousTokensHandler.ts │ │ ├── BloquerIPHandler.ts │ │ ├── DebloquerIPHandler.ts │ │ ├── DetecterConnexionsSuspectesHandler.ts │ │ ├── ObtenirHistoriqueHandler.ts │ │ ├── ObtenirLogsSecuriteHandler.ts │ │ ├── ObtenirParametresHandler.ts │ │ ├── DemanderResetPasswordHandler.ts │ │ ├── VerifierTokenResetHandler.ts │ │ ├── ResetPasswordHandler.ts │ │ └── SupprimerCompteHandler.ts │ ├── routes/ │ │ └── auth.module.routes.ts │ └── validators/ │ └── auth.validators.ts └── index.ts