login_middleware.go 913 B

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