package middleware

import (
	"strings"

	"git.ma-al.com/goc_daniel/b2b/app/config"
	"github.com/gofiber/fiber/v3"
)

// CORSMiddleware creates CORS middleware
func CORSMiddleware() fiber.Handler {
	return func(c fiber.Ctx) error {

		if strings.Contains(c.Get("Host"), "localhost") {
			c.Set("Access-Control-Allow-Origin", c.Get("Host"))
		} else {
			origins := strings.Join(config.Get().Cors.Origins, ",")
			c.Set("Access-Control-Allow-Origin", origins)
		}

		c.Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
		c.Set("Access-Control-Allow-Headers", "Content-Type, Authorization")

		if c.Method() == "OPTIONS" {
			return c.SendStatus(fiber.StatusOK)
		}

		return c.Next()
	}
}
