auth.go 729 B

123456789101112131415161718192021222324252627282930313233343536
  1. package middleware
  2. import (
  3. "net/http"
  4. "strings"
  5. "ems-backend/utils"
  6. "github.com/gin-gonic/gin"
  7. )
  8. func AuthRequired() gin.HandlerFunc {
  9. return func(c *gin.Context) {
  10. auth := strings.TrimSpace(c.GetHeader("Authorization"))
  11. if auth == "" {
  12. c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Unauthorized"})
  13. return
  14. }
  15. tokenString := auth
  16. if strings.HasPrefix(strings.ToLower(auth), "bearer ") {
  17. tokenString = strings.TrimSpace(auth[7:])
  18. }
  19. claims, err := utils.ParseToken(tokenString)
  20. if err != nil {
  21. c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "Invalid token"})
  22. return
  23. }
  24. c.Set("username", claims.Username)
  25. c.Set("userId", claims.UserID)
  26. c.Next()
  27. }
  28. }