package auth import ( "giter.top/smart/internal/auth/handler" "giter.top/smart/internal/auth/middleware" "giter.top/smart/internal/auth/oauth2" "giter.top/smart/internal/auth/session" "giter.top/smart/pkg/config" "github.com/gin-gonic/gin" "github.com/google/wire" ) // ProviderSet Wire 注入。 var ProviderSet = wire.NewSet( session.NewStore, oauth2.NewStore, oauth2.NewService, oauth2.NewHandler, handler.NewLoginHandler, ProvideBearer, ProvideLoginRLimitWire, ProvideTokenRLimitWire, NewAuthRoutes, ) // ProvideBearer 提供 Gin 中间件。 func ProvideBearer(store *oauth2.Store) gin.HandlerFunc { return middleware.NewBearer(store) } // LoginRateLimitWire、TokenRateLimitWire 用于 Wire 区分多个 gin.HandlerFunc 形参。 type LoginRateLimitWire gin.HandlerFunc type TokenRateLimitWire gin.HandlerFunc // ProvideLoginRLimitWire 登录接口限流。 func ProvideLoginRLimitWire(cfg *config.Config) LoginRateLimitWire { return LoginRateLimitWire(middleware.PerIPMinute(cfg.Auth.RateLimit.Enabled, cfg.Auth.RateLimit.LoginPerMinute)) } // ProvideTokenRLimitWire 令牌与自省端点限流。 func ProvideTokenRLimitWire(cfg *config.Config) TokenRateLimitWire { return TokenRateLimitWire(middleware.PerIPMinute(cfg.Auth.RateLimit.Enabled, cfg.Auth.RateLimit.TokenPerMinute)) }