admin_only.go 550 B

123456789101112131415161718192021222324252627
  1. package middleware
  2. import (
  3. "github.com/Wei-Shaw/sub2api/internal/service"
  4. "github.com/gin-gonic/gin"
  5. )
  6. // AdminOnly 管理员权限中间件
  7. // 必须在JWTAuth中间件之后使用
  8. func AdminOnly() gin.HandlerFunc {
  9. return func(c *gin.Context) {
  10. role, ok := GetUserRoleFromContext(c)
  11. if !ok {
  12. AbortWithError(c, 401, "UNAUTHORIZED", "User not found in context")
  13. return
  14. }
  15. // 检查是否为管理员
  16. if !service.IsAdminRole(role) {
  17. AbortWithError(c, 403, "FORBIDDEN", "Admin access required")
  18. return
  19. }
  20. c.Next()
  21. }
  22. }