package security import ( "fmt" "os" "time" "github.com/gin-gonic/gin" "github.com/golang-jwt/jwt/v5" ) func IntJWTCheck(c *gin.Context, role string) bool { tokenString := c.GetHeader("token") if tokenString == "" { return false } // Check if the token is valid token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) } return []byte(os.Getenv("JWTSECRET")), nil }) if err != nil || !token.Valid { return false } claims, ok := token.Claims.(jwt.MapClaims) if !ok { return false } // Check expiration if exp, ok := claims["exp"].(float64); ok { if time.Now().Unix() > int64(exp) { return false } } // Check role if claims["role"] == role { return true } return false }