42 lines
903 B
Go
42 lines
903 B
Go
package httpx
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
adminlogic "spark-server/internal/module/admin/logic"
|
|
adminhandler "spark-server/internal/transport/http/handler/admin"
|
|
)
|
|
|
|
const adminClaimsKey = "adminClaims"
|
|
|
|
func AdminAuth(tokens *adminlogic.TokenService) gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
if tokens == nil {
|
|
adminhandler.Fail(c, http.StatusServiceUnavailable, "admin JWT 未配置")
|
|
c.Abort()
|
|
return
|
|
}
|
|
raw, ok := bearerToken(c.GetHeader(headerAuthorization))
|
|
if !ok {
|
|
adminhandler.Fail(c, http.StatusUnauthorized, "未登录")
|
|
c.Abort()
|
|
return
|
|
}
|
|
claims, err := tokens.Parse(raw)
|
|
if err != nil {
|
|
adminhandler.Fail(c, http.StatusUnauthorized, "登录已失效")
|
|
c.Abort()
|
|
return
|
|
}
|
|
c.Set(adminClaimsKey, claims)
|
|
c.Next()
|
|
}
|
|
}
|
|
|
|
func adminPath(path string) bool {
|
|
return strings.HasPrefix(path, "/api/admin/")
|
|
}
|