package middleware import ( "strings" "github.com/gofiber/fiber/v2" ) func NewAPIKeyAuth(apiKey string) fiber.Handler { return func(c *fiber.Ctx) error { if c.Path() == "/health" { return c.Next() } key := c.Get("X-API-Key") if key == "" { auth := c.Get("Authorization") if strings.HasPrefix(auth, "Bearer ") { key = strings.TrimPrefix(auth, "Bearer ") } } if key != apiKey { return c.Status(401).JSON(fiber.Map{"error": "unauthorized"}) } return c.Next() } }