| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package auth
- import (
- "github.com/gin-gonic/gin"
- )
- // Routes 注册认证相关路由。
- //
- // 鉴权归属见 api.md 第二节:
- // - /login、/login/totp:匿名;
- // - /logout、/totp/setup、/totp/verify:登录(Token 不可用,凭证管理只允许会话);
- // - /totp/disable、/password:登录 + TOTP(api.md 2.6、2.7)。
- //
- // base 提供 Authenticate 中间件已经注入的身份与可见性,本函数只负责权限档位。
- func RegisterRoutes(r gin.IRouter, h *Handler) {
- r.POST("/api/auth/login", h.Login)
- r.POST("/api/auth/login/totp", h.LoginTotp)
- sessionOnly := r.Group("/api/auth", RequireSession())
- sessionOnly.POST("/logout", h.Logout)
- sessionOnly.POST("/totp/setup", h.SetupTotp)
- sessionOnly.POST("/totp/verify", h.VerifyTotp)
- totpOnly := r.Group("/api/auth", RequireSession(), RequireTotpVerified())
- totpOnly.POST("/totp/disable", h.DisableTotp)
- totpOnly.POST("/password", h.ChangePassword)
- }
- // RegisterManageRoutes 注册会话 / 授信设备 / Token 路由(api.md 第三、四、五节)。
- //
- // 全部要求会话身份:
- // - 会话与授信设备的列表/撤销:会话即可;
- // - Token 的增删查:会话 + TOTP(api.md 5.1–5.3)。
- func RegisterManageRoutes(r gin.IRouter, h *Handler) {
- s := r.Group("/api/sessions", RequireSession())
- s.GET("", h.ListSessions)
- s.DELETE("/:id", h.DeleteSession)
- d := r.Group("/api/trusted-devices", RequireSession())
- d.GET("", h.ListTrustedDevices)
- d.DELETE("/:id", h.DeleteTrustedDevice)
- t := r.Group("/api/tokens", RequireSession(), RequireTotpVerified())
- t.GET("", h.ListTokens)
- t.POST("", h.CreateToken)
- t.DELETE("/:id", h.DeleteToken)
- }
- // RegisterMeRoute 注册 GET /api/me(api.md 11.1),匿名可访问。
- func RegisterMeRoute(r gin.IRouter, h *Handler) {
- r.GET("/api/me", h.Me)
- }
|