- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
56 lines
2.1 KiB
PHP
56 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Framework\Http\Middlewares;
|
|
|
|
use App\Framework\Http\HttpMiddleware;
|
|
use App\Framework\Http\MiddlewareContext;
|
|
use App\Framework\Http\MiddlewarePriority;
|
|
use App\Framework\Http\MiddlewarePriorityAttribute;
|
|
use App\Framework\Http\Next;
|
|
use App\Framework\Http\RequestStateManager;
|
|
use App\Framework\Http\Response;
|
|
use App\Framework\Http\ResponseManipulator;
|
|
|
|
#[MiddlewarePriorityAttribute(MiddlewarePriority::CORS)]
|
|
final readonly class CORSMiddleware implements HttpMiddleware
|
|
{
|
|
public function __construct(
|
|
private ResponseManipulator $manipulator
|
|
) {
|
|
}
|
|
|
|
public function __invoke(MiddlewareContext $context, Next $next, RequestStateManager $stateManager): MiddlewareContext
|
|
{
|
|
// Debug-Ausgabe vor der Verarbeitung
|
|
#var_dump('CORS Middleware Start - Kontext hat Response: ' . ($context->hasResponse() ? 'ja' : 'nein'));
|
|
|
|
// Nächste Middleware aufrufen UND den Kontext mit der Response behalten
|
|
$resultContext = $next($context);
|
|
|
|
// Debug-Ausgabe nach der Verarbeitung
|
|
#var_dump('CORS Middleware End - Kontext hat Response: ' . ($resultContext->hasResponse() ? 'ja' : 'nein'));
|
|
|
|
// Wenn eine Response vorhanden ist, CORS-Header hinzufügen
|
|
if ($resultContext->hasResponse()) {
|
|
$response = $resultContext->response;
|
|
|
|
// Aktualisierte Headers erstellen
|
|
$updatedHeaders = $response->headers->with('Access-Control-Allow-Origin', '*');
|
|
$updatedHeaders = $updatedHeaders->with('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
|
$updatedHeaders = $updatedHeaders->with('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
|
|
|
// Neue Response mit aktualisierten Headers erstellen
|
|
$updatedResponse = $this->manipulator->withHeaders($response, $updatedHeaders);
|
|
|
|
// Kontext mit der aktualisierten Response zurückgeben
|
|
return $resultContext->withResponse($updatedResponse);
|
|
}
|
|
|
|
// Wenn keine Response vorhanden ist, Kontext unverändert zurückgeben
|
|
return $resultContext;
|
|
|
|
}
|
|
}
|