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) } // getDefaultRateLimitIPPerHour returns default hourly limit for non-auth (TASK-SEC-003) func getDefaultRateLimitIPPerHour(env string) int { if env == EnvDevelopment || env == EnvTest { return getEnvInt("RATE_LIMIT_IP_PER_HOUR", 5000) // Very relaxed in dev } return getEnvInt("RATE_LIMIT_IP_PER_HOUR", 100) // 100 req/h in prod } // getDefaultRateLimitUserPerHour returns default hourly limit for auth (TASK-SEC-003) func getDefaultRateLimitUserPerHour(env string) int { if env == EnvDevelopment || env == EnvTest { return getEnvInt("RATE_LIMIT_USER_PER_HOUR", 2000) // More relaxed in dev } return getEnvInt("RATE_LIMIT_USER_PER_HOUR", 1000) // 1000 req/h in prod }