//go:build ignore package middleware import ( "net/http" "strings" "xboard-go/pkg/utils" "github.com/gin-gonic/gin" ) func Auth() gin.HandlerFunc { return func(c *gin.Context) { authHeader := c.GetHeader("Authorization") if authHeader == "" { c.JSON(http.StatusUnauthorized, gin.H{"message": "未登录"}) c.Abort() return } parts := strings.SplitN(authHeader, " ", 2) if !(len(parts) == 2 && parts[0] == "Bearer") { c.JSON(http.StatusUnauthorized, gin.H{"message": "无效的认证格式"}) c.Abort() return } claims, err := utils.VerifyToken(parts[1]) if err != nil { c.JSON(http.StatusUnauthorized, gin.H{"message": "登录已过期"}) c.Abort() return } c.Set("user_id", claims.UserID) c.Set("is_admin", claims.IsAdmin) c.Next() } } func AdminAuth() gin.HandlerFunc { return func(c *gin.Context) { isAdmin, exists := c.Get("is_admin") if !exists || !isAdmin.(bool) { c.JSON(http.StatusForbidden, gin.H{"message": "权限不足"}) c.Abort() return } c.Next() } }