1234567891011121314151617181920212223242526272829303132333435363738 |
- package middlewares
- import (
- "github.com/bytedance/sonic"
- "github.com/gin-gonic/gin"
- "project_management/app/e"
- "project_management/nats"
- "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, ":")
- 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()
- }
- }
- }
- }
|