Files
infinite-canvas/middleware/admin.go
T
HouYunFei 472bf8b732 first commit
Co-Authored-By: Codex <noreply@openai.com>
2026-05-19 19:50:36 +08:00

42 lines
1.0 KiB
Go

package middleware
import (
"net/http"
"strings"
"github.com/basketikun/infinite-canvas/handler"
"github.com/basketikun/infinite-canvas/model"
"github.com/basketikun/infinite-canvas/service"
"github.com/gin-gonic/gin"
)
func AdminAuth(c *gin.Context) {
user, ok := authUser(c)
if !ok || user.Role != model.UserRoleAdmin {
handler.Fail(c.Writer, "未登录或权限不足")
c.Abort()
return
}
c.Request = c.Request.WithContext(service.WithUser(c.Request.Context(), user))
c.Next()
}
func OptionalAuth(c *gin.Context) {
if user, ok := authUser(c); ok {
c.Request = c.Request.WithContext(service.WithUser(c.Request.Context(), user))
}
c.Next()
}
func NotFoundJSON(c *gin.Context) {
c.JSON(http.StatusNotFound, gin.H{"code": 1, "data": nil, "msg": "接口不存在"})
}
func authUser(c *gin.Context) (model.AuthUser, bool) {
token := strings.TrimPrefix(c.GetHeader("Authorization"), "Bearer ")
if strings.TrimSpace(token) == "" {
return model.AuthUser{}, false
}
return service.CurrentAuthUser(token)
}