44 lines
1.5 KiB
Go
44 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)
|
||
|
|
}
|