veza/veza-backend-api/internal/config/rate_limit.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

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)
}