package middlewares

import (
	"os"
	"strings"

	"github.com/gofiber/fiber/v2"
)

func AdminApiAuth() fiber.Handler {
	return func(c *fiber.Ctx) error {
		apiKey := os.Getenv("ADMIN_API_KEY")
		if apiKey == "" {
			return c.Status(503).JSON(fiber.Map{"error": "ADMIN_API_KEY not configured"})
		}

		token := ""
		auth := c.Get("Authorization")
		if strings.HasPrefix(auth, "Bearer ") {
			token = auth[7:]
		}
		if token == "" {
			token = c.Get("X-API-Key")
		}

		if token == "" || token != apiKey {
			return c.Status(401).JSON(fiber.Map{"error": "unauthorized"})
		}

		return c.Next()
	}
}
