- 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
43 lines
1.5 KiB
Go
43 lines
1.5 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
)
|
|
|
|
// getDefaultRateLimitLimit retourne la limite globale par défaut selon l'environnement (A04)
|
|
func getDefaultRateLimitLimit(env string) int {
|
|
if env == EnvDevelopment || env == EnvTest {
|
|
return 1000 // Très permissif pour dev/tests
|
|
}
|
|
return 200 // Staging/prod
|
|
}
|
|
|
|
// getDefaultRegisterAttempts retourne le nombre d'inscriptions autorisées par heure (A04)
|
|
func getDefaultRegisterAttempts(env string) int {
|
|
if env == EnvDevelopment || env == EnvTest {
|
|
return 20 // Assoupli pour dev/tests
|
|
}
|
|
return 3 // Staging/prod
|
|
}
|
|
|
|
// getAuthRateLimitLoginAttempts retourne le nombre de tentatives de login autorisées
|
|
// Augmente les limites pour l'environnement de test/E2E
|
|
func getAuthRateLimitLoginAttempts(env string) int {
|
|
// Vérifier si on est en mode test/E2E
|
|
if env == "test" || env == "e2e" ||
|
|
os.Getenv("GO_ENV") == "test" ||
|
|
os.Getenv("GO_ENV") == "e2e" ||
|
|
os.Getenv("E2E_TEST") == "true" {
|
|
// Limite élevée pour les tests (100 tentatives)
|
|
return getEnvInt("AUTH_RATE_LIMIT_LOGIN_ATTEMPTS", 100)
|
|
}
|
|
// Limite normale en production (5 tentatives)
|
|
return getEnvInt("AUTH_RATE_LIMIT_LOGIN_ATTEMPTS", 5)
|
|
}
|
|
|
|
// getAuthRateLimitLoginWindow retourne la fenêtre de temps pour les tentatives de login
|
|
func getAuthRateLimitLoginWindow(env string) int {
|
|
// En mode test, utiliser 1 minute (comme en production)
|
|
// La fenêtre reste la même, seule la limite de tentatives change
|
|
return getEnvInt("AUTH_RATE_LIMIT_LOGIN_WINDOW", 1)
|
|
}
|