| 12345678910111213141516171819202122232425262728293031323334 |
- package middleware
- import (
- "dsbqj-admin/pkg/serializer"
- "dsbqj-admin/pkg/util"
- "strings"
- "time"
- "github.com/gin-gonic/gin"
- "github.com/goccy/go-json"
- )
- type adminAccountClaims struct {
- Username string `json:"username"`
- ExpiresAt int64 `json:"expires_at"`
- }
- func AdminAccountRequired() gin.HandlerFunc {
- return func(c *gin.Context) {
- token := strings.TrimSpace(c.GetHeader("Authorization"))
- if strings.HasPrefix(token, "Bearer ") {
- token = strings.TrimSpace(strings.TrimPrefix(token, "Bearer "))
- }
- info := util.ParseToken(token, util.AdminTokenSecret())
- var claims adminAccountClaims
- if len(info) == 0 || json.Unmarshal(info, &claims) != nil || claims.Username == "" || claims.ExpiresAt <= time.Now().Unix() {
- c.JSON(200, serializer.Response{Code: 401, Msg: "invalid or expired login"})
- c.Abort()
- return
- }
- c.Set("admin_username", claims.Username)
- c.Next()
- }
- }
|