feat(backend): service de configuration avec cache et encryption (#5)

Implémentation du service de configuration dynamique pour
le déploiement on-premise de l'application.

Nouveaux fichiers :
- entities/configuration.entity.ts : Entité TypeORM
- modules/config/config.service.ts : Service avec cache et encryption
- modules/config/config.module.ts : Module NestJS
- modules/config/index.ts : Export centralisé

Fonctionnalités :
✅ Cache en mémoire au démarrage (16 configurations)
✅ Chiffrement AES-256-CBC pour valeurs sensibles
✅ Conversion automatique de types (string/number/boolean/json)
✅ Méthodes get/set avec traçabilité
✅ Récupération par catégorie (email/app/security)
✅ Masquage automatique des mots de passe
✅ Support setup wizard (isSetupCompleted)

Sécurité :
- Clé de chiffrement depuis CONFIG_ENCRYPTION_KEY
- Format iv:encrypted pour AES-256-CBC
- Mots de passe masqués dans les API

Intégration :
- AppConfigModule ajouté à app.module.ts
- Service global exporté pour utilisation dans toute l'app
- Chargement automatique au démarrage (OnModuleInit)

Tests :
✅ Build Docker réussi
✅ 16 configurations chargées en cache
✅ Service démarré sans erreur

Ref: #5
This commit is contained in:
2025-11-28 16:29:33 +01:00
parent 4149d0147f
commit 80afe2fa2f
5 changed files with 330 additions and 0 deletions
@@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Configuration } from '../../entities/configuration.entity';
import { AppConfigService } from './config.service';
@Module({
imports: [TypeOrmModule.forFeature([Configuration])],
providers: [AppConfigService],
exports: [AppConfigService],
})
export class AppConfigModule {}