From 0b30c6630746a85baacb1860f637276d62fd9d41 Mon Sep 17 00:00:00 2001 From: Cametendo Date: Wed, 27 May 2026 15:59:49 +0200 Subject: [PATCH] Fix theme store connection --- app/Config/Routes.php | 14 ++++++++------ app/Controllers/ThemeStore.php | 10 ++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 03c1b3e..5420267 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -98,18 +98,20 @@ $routes->group('api/v1', ['namespace' => 'App\Controllers\Api\V1', 'filter' => [ }); $routes->get('/themes', 'ThemeStore::index'); $routes->options('/themes', static function () { - header('Access-Control-Allow-Origin: http://localhost:5173'); + $origin = service('request')->getHeaderLine('Origin') ?: '*'; + header('Access-Control-Allow-Origin: ' . $origin); header('Access-Control-Allow-Methods: GET, OPTIONS'); - header('Access-Control-Allow-Headers: Content-Type, Accept, Fetch'); - header('Access-Control-Allow-Credentials: true'); + header('Access-Control-Allow-Headers: Content-Type, Accept'); + header('Vary: Origin'); return response()->setStatusCode(204); }); $routes->post('/themes/upload', 'ThemeStore::upload'); $routes->options('/themes/upload', static function () { - header('Access-Control-Allow-Origin: http://localhost:5173'); + $origin = service('request')->getHeaderLine('Origin') ?: '*'; + header('Access-Control-Allow-Origin: ' . $origin); header('Access-Control-Allow-Methods: POST, OPTIONS'); - header('Access-Control-Allow-Headers: Content-Type, Accept, Fetch'); - header('Access-Control-Allow-Credentials: true'); + header('Access-Control-Allow-Headers: Content-Type, Accept'); + header('Vary: Origin'); return response()->setStatusCode(204); }); $routes->get('/themes/preview/(:segment)', 'ThemeStore::preview/$1'); diff --git a/app/Controllers/ThemeStore.php b/app/Controllers/ThemeStore.php index d3a26db..bbbc658 100644 --- a/app/Controllers/ThemeStore.php +++ b/app/Controllers/ThemeStore.php @@ -24,8 +24,9 @@ class ThemeStore extends BaseController } if ($this->request->isAJAX() || $this->request->hasHeader('Fetch') || str_contains($this->request->getHeaderLine('Accept'), 'application/json')) { - header('Access-Control-Allow-Origin: http://localhost:5173'); - header('Access-Control-Allow-Credentials: true'); + $origin = $this->request->getHeaderLine('Origin') ?: '*'; + header('Access-Control-Allow-Origin: ' . $origin); + header('Vary: Origin'); return $this->response->setJSON($themes); } @@ -38,8 +39,9 @@ class ThemeStore extends BaseController public function upload(): Response { - header('Access-Control-Allow-Origin: http://localhost:5173'); - header('Access-Control-Allow-Credentials: true'); + $origin = $this->request->getHeaderLine('Origin') ?: '*'; + header('Access-Control-Allow-Origin: ' . $origin); + header('Vary: Origin'); $file = $this->request->getFile('theme_css'); $displayName = trim($this->request->getPost('display_name') ?? '');