From 8751db7452a5011949b610b21bd6d7c126d46a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P=2E?= Date: Wed, 20 Nov 2024 09:59:59 +0100 Subject: [PATCH] Handle CORS for dev env --- .env | 4 ++ composer.json | 1 + composer.lock | 64 ++++++++++++++++++++++- config/bundles.php | 1 + config/packages/nelmio_cors.yaml | 10 ++++ src/Controller/NotConservedController.php | 5 +- symfony.lock | 12 +++++ 7 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 config/packages/nelmio_cors.yaml diff --git a/.env b/.env index 6bf9373..c4d17d4 100644 --- a/.env +++ b/.env @@ -28,3 +28,7 @@ APP_SECRET=0c1e9f778b4c265fa58349c469f9abd8 # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" ###< doctrine/doctrine-bundle ### + +###> nelmio/cors-bundle ### +CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' +###< nelmio/cors-bundle ### diff --git a/composer.json b/composer.json index d2ec8e6..e6a074a 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "doctrine/doctrine-bundle": "^2.13", "doctrine/doctrine-migrations-bundle": "^3.3", "doctrine/orm": "^3.3", + "nelmio/cors-bundle": "^2.5", "symfony/console": "7.1.*", "symfony/dotenv": "7.1.*", "symfony/flex": "^2", diff --git a/composer.lock b/composer.lock index 34a6f11..a43669c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "643bd9c627032f2852ff6258cb802c49", + "content-hash": "493844acec290d4c326819f43b98fcb1", "packages": [ { "name": "doctrine/cache", @@ -1232,6 +1232,68 @@ }, "time": "2024-10-21T18:21:57+00:00" }, + { + "name": "nelmio/cors-bundle", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/nelmio/NelmioCorsBundle.git", + "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/3a526fe025cd20e04a6a11370cf5ab28dbb5a544", + "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544", + "shasum": "" + }, + "require": { + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.3.6", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Nelmio\\CorsBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nelmio", + "homepage": "http://nelm.io" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/nelmio/NelmioCorsBundle/contributors" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Symfony application", + "keywords": [ + "api", + "cors", + "crossdomain" + ], + "support": { + "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.5.0" + }, + "time": "2024-06-24T21:25:28+00:00" + }, { "name": "psr/cache", "version": "3.0.0", diff --git a/config/bundles.php b/config/bundles.php index de8898b..e4e91d7 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -5,4 +5,5 @@ return [ Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], + Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], ]; diff --git a/config/packages/nelmio_cors.yaml b/config/packages/nelmio_cors.yaml new file mode 100644 index 0000000..c766508 --- /dev/null +++ b/config/packages/nelmio_cors.yaml @@ -0,0 +1,10 @@ +nelmio_cors: + defaults: + origin_regex: true + allow_origin: ['%env(CORS_ALLOW_ORIGIN)%'] + allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE'] + allow_headers: ['Content-Type', 'Authorization'] + expose_headers: ['Link'] + max_age: 3600 + paths: + '^/': null diff --git a/src/Controller/NotConservedController.php b/src/Controller/NotConservedController.php index 25da190..0af4ebd 100644 --- a/src/Controller/NotConservedController.php +++ b/src/Controller/NotConservedController.php @@ -17,14 +17,15 @@ class NotConservedController extends AbstractController $repo = $em->getRepository(NotConserved::class); $repoBib = $em->getRepository(Bibliography::class); - $records = $repo->findAll(); + $records = $repo->findBy([], ['id' => 'ASC']); // Terrible? N+1.. foreach ($records as $key => $record) { $id = $record->getId(); $record->setLat($repo->coordinates($id)['lat']); $record->setLng($repo->coordinates($id)['lng']); - $record->setBibliographies($repoBib->findAllByNotConserved($id)); + $biblio = $repoBib->findAllByNotConserved($id); + $record->setBibliographies($biblio); $records[$key] = $record; } diff --git a/symfony.lock b/symfony.lock index 3da4ff3..eaf6401 100644 --- a/symfony.lock +++ b/symfony.lock @@ -26,6 +26,18 @@ "migrations/.gitignore" ] }, + "nelmio/cors-bundle": { + "version": "2.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.5", + "ref": "6bea22e6c564fba3a1391615cada1437d0bde39c" + }, + "files": [ + "config/packages/nelmio_cors.yaml" + ] + }, "symfony/console": { "version": "7.1", "recipe": {