40 lines
1.8 KiB
Go
40 lines
1.8 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"oci-portal/internal/service"
|
|
)
|
|
|
|
// registerAuthPublic 公开登录/OAuth 路由(不经 JWT)。
|
|
func registerAuthPublic(v1 *gin.RouterGroup, auth *service.AuthService, oauth *service.OAuthService, systemLogs *service.SystemLogService) {
|
|
ah := &authHandler{svc: auth, logs: systemLogs}
|
|
v1.POST("/auth/login", ah.login)
|
|
|
|
// 外部身份登录:provider 列表 / 授权跳转(bind 模式 handler 内校验 JWT)/ 回调
|
|
ax := &authxHandler{auth: auth, oauth: oauth, logs: systemLogs}
|
|
v1.GET("/auth/oauth/providers", ax.oauthProviders)
|
|
v1.GET("/auth/oauth/:provider/authorize", ax.oauthAuthorize)
|
|
v1.GET("/auth/oauth/:provider/callback", ax.oauthCallback)
|
|
}
|
|
|
|
// registerAuthSecured 登出、两步验证、外部身份管理(JWT 组内)。
|
|
func registerAuthSecured(secured *gin.RouterGroup, auth *service.AuthService, oauth *service.OAuthService, settings *service.SettingService, systemLogs *service.SystemLogService) {
|
|
ah := &authHandler{svc: auth, logs: systemLogs}
|
|
secured.POST("/auth/logout", ah.logout)
|
|
|
|
ax := &authxHandler{auth: auth, oauth: oauth}
|
|
secured.GET("/auth/totp", ax.totpStatus)
|
|
secured.POST("/auth/totp/setup", ax.totpSetup)
|
|
secured.GET("/auth/credentials", ax.getCredentials)
|
|
secured.PUT("/auth/credentials", ax.updateCredentials)
|
|
secured.GET("/auth/identities", ax.identities)
|
|
secured.POST("/auth/totp/activate", ax.totpActivate)
|
|
secured.POST("/auth/totp/disable", ax.totpDisable)
|
|
secured.PUT("/auth/password-login", ax.updatePasswordLogin)
|
|
secured.DELETE("/auth/identities/:id", ax.unbindIdentity)
|
|
secured.POST("/auth/revoke-sessions", ax.revokeSessions)
|
|
secured.GET("/settings/oauth", func(c *gin.Context) { ax.getOAuthSettings(c, settings) })
|
|
secured.PUT("/settings/oauth", func(c *gin.Context) { ax.updateOAuthSettings(c, settings) })
|
|
}
|