From fb78a167e137a48abd196b56c82c34cddf098412 Mon Sep 17 00:00:00 2001 From: ShukeBta <272197458+ShukeBta@users.noreply.github.com> Date: Sat, 27 Jun 2026 08:12:26 +0800 Subject: [PATCH] split middleware helpers --- internal/middleware/auth.go | 151 +++++++++++ internal/middleware/cors.go | 44 ++++ internal/middleware/middleware.go | 358 -------------------------- internal/middleware/rate_limiter.go | 88 +++++++ internal/middleware/request_logger.go | 36 +++ internal/middleware/roles.go | 71 +++++ 6 files changed, 390 insertions(+), 358 deletions(-) create mode 100644 internal/middleware/auth.go create mode 100644 internal/middleware/cors.go create mode 100644 internal/middleware/rate_limiter.go create mode 100644 internal/middleware/request_logger.go create mode 100644 internal/middleware/roles.go diff --git a/internal/middleware/auth.go b/internal/middleware/auth.go new file mode 100644 index 0000000..6f3041b --- /dev/null +++ b/internal/middleware/auth.go @@ -0,0 +1,151 @@ +package middleware + +import ( + "errors" + "net/http" + "strings" + "time" + + "github.com/gin-gonic/gin" + "github.com/golang-jwt/jwt/v5" +) + +// Claims is the JWT payload we issue. +type Claims struct { + UserID string `json:"uid"` + Role string `json:"role"` + Tier string `json:"tier,omitempty"` + Purpose string `json:"purpose,omitempty"` + MediaID string `json:"media_id,omitempty"` + jwt.RegisteredClaims +} + +// AuthRequired parses and validates a JWT from the Authorization header +// (Bearer ...) or the `token` query parameter (used by