12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package middlewares
- import (
- "Panel_development/app/e"
- "Panel_development/nats"
- "github.com/bytedance/sonic"
- "github.com/gin-gonic/gin"
- "strings"
- "time"
- )
- type UserResponse struct {
- Code int `json:"code"`
- Message string `json:"message"`
- User any `json:"user,omitempty"`
- }
- func LoginMiddleware() gin.HandlerFunc {
- return func(c *gin.Context) {
- header := c.GetHeader("Authorization")
- split := strings.Split(header, ":")
- if len(split) != 2 {
- e.ResponseWithMsg(c, e.TokenIsInvalid, e.TokenIsInvalid.GetMsg())
- c.Abort()
- return
- }
- request, err := nats.Nats.Request("login_token_validation", []byte(split[1]), 3*time.Second)
- if err != nil {
- e.ResponseWithMsg(c, e.TokenIsInvalid, e.TokenIsInvalid.GetMsg())
- c.Abort()
- } else {
- var response UserResponse
- sonic.Unmarshal(request.Data, &response)
- if response.Code == 200 {
- c.Set("user", response.User)
- c.Next()
- } else {
- e.ResponseWithMsg(c, e.TokenIsInvalid, e.TokenIsInvalid.GetMsg())
- c.Abort()
- }
- }
- }
- }
|