package auth import ( "giter.top/smart/internal/auth/handler" "giter.top/smart/internal/auth/oauth2" "github.com/gin-gonic/gin" ) // AuthRoutes 认证相关 HTTP(OAuth2、登录)。 type AuthRoutes struct { bearer gin.HandlerFunc loginRL gin.HandlerFunc tokenRL gin.HandlerFunc oauthH *oauth2.Handler loginH *handler.LoginHandler } // NewAuthRoutes 构造(loginRL/tokenRL 使用 Wire 专用类型,见 wire_provider.go)。 func NewAuthRoutes(bearer gin.HandlerFunc, loginRL LoginRateLimitWire, tokenRL TokenRateLimitWire, oauthH *oauth2.Handler, loginH *handler.LoginHandler) *AuthRoutes { return &AuthRoutes{ bearer: bearer, loginRL: gin.HandlerFunc(loginRL), tokenRL: gin.HandlerFunc(tokenRL), oauthH: oauthH, loginH: loginH, } } // Register 实现 server.HttpRoutes:OAuth 在根路径,/api/v1 挂 Bearer 与登录。 func (r *AuthRoutes) Register(engine *gin.Engine, apiGroup *gin.RouterGroup) { apiGroup.Use(r.bearer) apiGroup.POST("/auth/login", r.loginRL, r.loginH.Login) apiGroup.POST("/auth/logout", r.loginH.Logout) engine.GET("/oauth/authorize", r.oauthH.Authorize) engine.POST("/oauth/token", r.tokenRL, r.oauthH.Token) engine.POST("/oauth/introspect", r.tokenRL, r.oauthH.Introspect) }