feat: auth handlers

This commit is contained in:
2025-09-07 16:45:20 +03:30
parent 5c5df48644
commit f4e5e074d3
11 changed files with 227 additions and 4 deletions
+37
View File
@@ -0,0 +1,37 @@
package middlewares
import (
"backend/pkg/jwt"
"strings"
"github.com/gofiber/fiber/v2"
)
const userClaimsKey = "User-Claims"
func JWTAuthMiddleware(secret []byte) fiber.Handler {
return func(c *fiber.Ctx) error {
authHeader := c.Get("Authorization")
if authHeader == "" || !strings.HasPrefix(authHeader, "Bearer ") {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
"error": "missing or invalid Authorization header",
})
}
tokenString := strings.TrimPrefix(authHeader, "Bearer ")
claims, err := jwt.ParseToken(tokenString, secret)
if err != nil || claims == nil {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
"error": "invalid or expired token",
})
}
c.Locals(userClaimsKey, claims)
return c.Next()
}
}
func GetUserClaims(c *fiber.Ctx) *jwt.UserClaims {
claims, _ := c.Locals(userClaimsKey).(*jwt.UserClaims)
return claims
}