<?php
namespace App\Listener;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpFoundation\Response;
class PreflightListener
{
public function onKernelRequest(RequestEvent $event): void
{
$request = $event->getRequest();
if ($request->getMethod() !== 'OPTIONS' || !preg_match('#^/api/#', $request->getPathInfo())) {
return;
}
$origin = $request->headers->get('Origin');
if ($origin && preg_match('#^https?://(nomadcloud\.fr|opteamup\.fr|localhost|127\.0\.0\.1)(:[0-9]+)?$#', $origin)) {
$response = new Response();
$response->headers->set('Access-Control-Allow-Origin', $origin);
$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Server-Host');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
$event->setResponse($response);
}
}
}