package ratelimit import ( "github.com/redis/go-redis/v9" "go.uber.org/zap" "codeberg.org/mapleopentech/monorepo/cloud/maplepress-backend/config" ) // ProvideLoginRateLimiter creates a LoginRateLimiter for dependency injection // CWE-307: Implements rate limiting and account lockout protection against brute force attacks func ProvideLoginRateLimiter(client *redis.Client, cfg *config.Config, logger *zap.Logger) LoginRateLimiter { // Use configuration from environment variables loginConfig := LoginRateLimiterConfig{ MaxAttemptsPerIP: cfg.RateLimit.LoginMaxAttemptsPerIP, IPWindow: cfg.RateLimit.LoginIPWindow, MaxFailedAttemptsPerAccount: cfg.RateLimit.LoginMaxFailedAttemptsPerAccount, AccountLockoutDuration: cfg.RateLimit.LoginAccountLockoutDuration, KeyPrefix: "login_rl", } return NewLoginRateLimiter(client, loginConfig, logger) }