package routes import ( "github.com/gofiber/fiber/v2" "github.com/break/junhong_cmp_fiber/internal/bootstrap" "github.com/break/junhong_cmp_fiber/internal/model" "github.com/break/junhong_cmp_fiber/pkg/openapi" ) // RegisterAdminRoutes 注册管理后台相关路由 func RegisterAdminRoutes(router fiber.Router, handlers *bootstrap.Handlers, middlewares *bootstrap.Middlewares, doc *openapi.Generator, basePath string) { if handlers.AdminAuth != nil { registerAdminAuthRoutes(router, handlers.AdminAuth, middlewares.AdminAuth, doc, basePath) } authGroup := router.Group("", middlewares.AdminAuth) if handlers.Account != nil { registerAccountRoutes(authGroup, handlers.Account, doc, basePath) } if handlers.Role != nil { registerRoleRoutes(authGroup, handlers.Role, doc, basePath) } if handlers.Permission != nil { registerPermissionRoutes(authGroup, handlers.Permission, doc, basePath) } if handlers.Shop != nil { registerShopRoutes(authGroup, handlers.Shop, doc, basePath) } if handlers.ShopAccount != nil { registerShopAccountRoutes(authGroup, handlers.ShopAccount, doc, basePath) } } func registerAdminAuthRoutes(router fiber.Router, handler interface{}, authMiddleware fiber.Handler, doc *openapi.Generator, basePath string) { h := handler.(interface { Login(c *fiber.Ctx) error Logout(c *fiber.Ctx) error RefreshToken(c *fiber.Ctx) error GetMe(c *fiber.Ctx) error ChangePassword(c *fiber.Ctx) error }) Register(router, doc, basePath, "POST", "/login", h.Login, RouteSpec{ Summary: "后台登录", Tags: []string{"认证"}, Input: new(model.LoginRequest), Output: new(model.LoginResponse), Auth: false, }) Register(router, doc, basePath, "POST", "/refresh-token", h.RefreshToken, RouteSpec{ Summary: "刷新 Token", Tags: []string{"认证"}, Input: new(model.RefreshTokenRequest), Output: new(model.RefreshTokenResponse), Auth: false, }) authGroup := router.Group("", authMiddleware) Register(authGroup, doc, basePath, "POST", "/logout", h.Logout, RouteSpec{ Summary: "登出", Tags: []string{"认证"}, Input: nil, Output: nil, Auth: true, }) Register(authGroup, doc, basePath, "GET", "/me", h.GetMe, RouteSpec{ Summary: "获取当前用户信息", Tags: []string{"认证"}, Input: nil, Output: new(model.UserInfo), Auth: true, }) Register(authGroup, doc, basePath, "PUT", "/password", h.ChangePassword, RouteSpec{ Summary: "修改密码", Tags: []string{"认证"}, Input: new(model.ChangePasswordRequest), Output: nil, Auth: true, }) }