testfb/.history/middleware/auth_20240925164622.go
2024-09-25 16:52:21 +08:00

32 lines
812 B
Go

package middleware
import (
"strconv"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/storage/redis/v3"
)
func AuthMiddleware(redisClient *redis.Storage) fiber.Handler {
return func(c *fiber.Ctx) error {
token := c.Get("Authorization")
if token == "" {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "Missing authorization token"})
}
userIDBytes, err := redisClient.Get(token)
if err != nil {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "Invalid or expired token"})
}
userIDStr := string(userIDBytes)
userID, err := strconv.ParseUint(userIDStr, 10, 64)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": "Invalid user ID format"})
}
c.Locals("user_id", uint(userID))
return c.Next()
}
}