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