diff --git a/app.php b/app.php index b5d0c719..42d304cd 100644 --- a/app.php +++ b/app.php @@ -81,5 +81,5 @@ $errorMiddleware->setDefaultErrorHandler( new \Grocy\Controllers\ExceptionController($app, $container) ); -$app->add(CorsMiddleware::class); +$app->add(new CorsMiddleware($app->getResponseFactory())); $app->run(); diff --git a/middleware/CorsMiddleware.php b/middleware/CorsMiddleware.php index 1c9a77d2..f6d98690 100644 --- a/middleware/CorsMiddleware.php +++ b/middleware/CorsMiddleware.php @@ -2,22 +2,37 @@ namespace Grocy\Middleware; +use Psr\Http\Message\ResponseFactoryInterface; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Server\RequestHandlerInterface as RequestHandler; use Psr\Http\Message\ResponseInterface as Response; use Slim\Routing\RouteContext; -class CorsMiddleware extends BaseMiddleware +class CorsMiddleware { + /** + * @var ResponseFactoryInterface + */ + private $responseFactory; + + public function __construct(ResponseFactoryInterface $responseFactory) + { + $this->responseFactory = $responseFactory; + } + public function __invoke(Request $request, RequestHandler $handler): Response { + if ($request->getMethod() == "OPTIONS") + $response = $this->responseFactory->createResponse(200); + else { + $response = $handler->handle($request); + + } //$routeContext = RouteContext::fromRequest($request); //$routingResults = $routeContext->getRoutingResults(); //$methods = $routingResults->getAllowedMethods(); //$requestHeaders = $request->getHeaderLine('Access-Control-Request-Headers'); - $response = $handler->handle($request); - $response = $response->withHeader('Access-Control-Allow-Origin', '*'); $response = $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); $response = $response->withHeader('Access-Control-Allow-Headers', '*');