login_middleware.go 859 B

1234567891011121314151617181920212223242526272829303132333435
  1. package middlewares
  2. import (
  3. "github.com/bytedance/sonic"
  4. "github.com/gin-gonic/gin"
  5. "lot_interlligentControl/app/e"
  6. "lot_interlligentControl/nats"
  7. "time"
  8. )
  9. type UserResponse struct {
  10. Code int `json:"code"`
  11. Message string `json:"message"`
  12. User any `json:"user,omitempty"`
  13. }
  14. func LoginMiddleware() gin.HandlerFunc {
  15. return func(c *gin.Context) {
  16. header := c.GetHeader("Authorization")
  17. request, err := nats.Nats.Request("login_token_validation", []byte(header), 3*time.Second)
  18. if err != nil {
  19. e.ResponseWithMsg(c, e.TokenIsInvalid, e.TokenIsInvalid.GetMsg())
  20. } else {
  21. var response UserResponse
  22. sonic.Unmarshal(request.Data, &response)
  23. if response.Code == 200 {
  24. c.Set("user", response.User)
  25. c.Next()
  26. } else {
  27. e.ResponseWithMsg(c, e.TokenIsInvalid, e.TokenIsInvalid.GetMsg())
  28. c.Abort()
  29. }
  30. }
  31. }
  32. }