veza/veza-backend-api/internal/config/services_init.go
senke bbd8ed54de refactor(config): découper config.go par domaine (audit 2.7)
- env_helpers.go: getEnv*, parseLogAggregationLabels
- db_init.go: initDatabaseWithRetry
- redis_init.go: initRedis, filteredRedisLogger
- rabbitmq.go: getRabbitMQURL
- cors.go: CORS, cookies
- rate_limit.go: rate limit defaults
- services_init.go: initServices
- middlewares_init.go: initMiddlewares, SetupMiddleware
- config.go réduit de ~1487 à ~550 LOC
2026-02-15 14:44:33 +01:00

74 lines
2.5 KiB
Go

package config
import (
"veza-backend-api/internal/repositories"
"veza-backend-api/internal/services"
)
// initServices initialise tous les services
func (c *Config) initServices() error {
// Service de session
c.SessionService = services.NewSessionService(c.Database, c.Logger)
// Service d'audit
c.AuditService = services.NewAuditService(c.Database, c.Logger)
// Service TOTP
c.TOTPService = services.NewTOTPService(c.Database, c.Logger)
// Validateur d'upload
uploadConfig := services.DefaultUploadConfig()
// Lire ENABLE_CLAMAV depuis l'environnement (défaut: true pour sécurité en production)
// En développement, peut être désactivé si ClamAV n'est pas disponible
clamAVEnabled := getEnvBool("ENABLE_CLAMAV", true)
uploadConfig.ClamAVEnabled = clamAVEnabled
if !clamAVEnabled {
c.Logger.Warn("ENABLE_CLAMAV=false - ClamAV virus scanning is disabled. This should only be used in development environments.")
}
// MOD-P1-002: Lire CLAMAV_REQUIRED depuis l'environnement (défaut: true pour sécurité)
clamAVRequired := getEnvBool("CLAMAV_REQUIRED", true)
uploadConfig.ClamAVRequired = clamAVRequired
if !clamAVRequired {
c.Logger.Warn("CLAMAV_REQUIRED=false - Uploads will be accepted even if ClamAV is unavailable (degraded mode). This should only be used in development or with alternative security measures.")
}
// Chemin vers clamdscan (exec) - remplace go-clamd abandonné
if p := getEnv("CLAMAV_CLAMD_PATH", ""); p != "" {
uploadConfig.ClamAVClamdPath = p
}
var err error
c.UploadValidator, err = services.NewUploadValidator(uploadConfig, c.Logger)
if err != nil {
return err
}
// Service de cache
c.CacheService = services.NewCacheService(c.RedisClient, c.Logger)
// Service de playlist
c.PlaylistService = services.NewPlaylistServiceWithDB(c.Database.GormDB, c.Logger)
// Service de permissions
c.PermissionService = services.NewPermissionService(c.Database.GormDB)
// JWT Service
c.JWTService, err = services.NewJWTService(c.JWTSecret, c.JWTIssuer, c.JWTAudience)
if err != nil {
return err
}
// User Service
userRepo := repositories.NewGormUserRepository(c.Database.GormDB)
c.UserService = services.NewUserServiceWithDB(userRepo, c.Database.GormDB)
// BE-SVC-001: Set cache service for UserService
if c.CacheService != nil {
c.UserService.SetCacheService(c.CacheService)
}
// BE-SVC-001: Set cache service for PlaylistService
if c.CacheService != nil && c.PlaylistService != nil {
c.PlaylistService.SetCacheService(c.CacheService)
}
return nil
}