Files
2026-04-23 18:58:13 +08:00

44 lines
1.3 KiB
Go

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