model_plaza.go 984 B

123456789101112131415161718192021222324252627282930
  1. package routes
  2. import (
  3. "github.com/Wei-Shaw/sub2api/internal/handler"
  4. "github.com/Wei-Shaw/sub2api/internal/server/middleware"
  5. "github.com/Wei-Shaw/sub2api/internal/service"
  6. "github.com/gin-gonic/gin"
  7. )
  8. // RegisterModelPlazaRoutes 注册模型广场路由。
  9. //
  10. // 挂 OptionalJWT:匿名可访问(开关与 require_auth 由 handler fail-closed 判定),
  11. // 带 token 则识别用户以展示专属分组与个人倍率。
  12. // BackendModeUserGuard 保证 backend 模式下广场不对非管理员开放(匿名无 role → 403)。
  13. func RegisterModelPlazaRoutes(
  14. v1 *gin.RouterGroup,
  15. h *handler.Handlers,
  16. optionalJWT middleware.OptionalJWTAuthMiddleware,
  17. settingService *service.SettingService,
  18. panelRateLimiter *middleware.PanelRateLimiter,
  19. ) {
  20. plaza := v1.Group("/model-plaza")
  21. plaza.Use(panelRateLimiter.PublicIP())
  22. plaza.Use(gin.HandlerFunc(optionalJWT))
  23. plaza.Use(middleware.BackendModeUserGuard(settingService))
  24. {
  25. plaza.GET("", h.ModelPlaza.Get)
  26. }
  27. }