From 509004fadc35d6fa4816c1a9245c57dacf02c792 Mon Sep 17 00:00:00 2001 From: vincent Date: Mon, 28 Apr 2025 16:55:36 +0200 Subject: [PATCH] =?UTF-8?q?G=C3=A8re=20mieux=20la=20d=C3=A9co=20d=E2=80=99?= =?UTF-8?q?OSM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Controller/ProjectController.php | 6 ++++++ src/Controller/TaskController.php | 13 +++++++++++++ src/Security/OpenStreetMapAuthenticator.php | 7 +++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php index 9cda60b..f30fd42 100644 --- a/src/Controller/ProjectController.php +++ b/src/Controller/ProjectController.php @@ -14,6 +14,7 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; +use Symfony\Component\Security\Http\Attribute\IsGranted; #[Route('/project')] class ProjectController extends AbstractController @@ -31,6 +32,7 @@ class ProjectController extends AbstractController // Formulaire de création d’un projet #[Route('/create', name: 'app_project_create')] + #[IsGranted('ROLE_USER')] public function create(Request $request, EntityManagerInterface $entityManager): Response { $project = new Project(); @@ -93,6 +95,7 @@ class ProjectController extends AbstractController // Import de tâches dans un projet #[Route('/{slug}/import', name: 'app_project_import')] + #[IsGranted('ROLE_USER')] public function import(Request $request, EntityManagerInterface $entityManager, $slug): Response { $project = $entityManager->getRepository(Project::class)->findOneBySlug($slug); @@ -139,6 +142,7 @@ class ProjectController extends AbstractController // Page de modification du projet #[Route('/{slug}/update', name: 'app_project_update')] + #[IsGranted('ROLE_USER')] public function update(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Project::class); @@ -179,6 +183,7 @@ class ProjectController extends AbstractController // La suppression d’un projet passe par là #[Route('/{slug}/remove', name: 'app_project_remove')] + #[IsGranted('ROLE_USER')] public function remove(EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Project::class); @@ -204,6 +209,7 @@ class ProjectController extends AbstractController // Effectue la requête Overpass liée au projet #[Route('/{slug}/overpass', name: 'app_project_overpass')] + #[IsGranted('ROLE_USER')] public function overpass(OverpassClient $overpassClient, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Project::class); diff --git a/src/Controller/TaskController.php b/src/Controller/TaskController.php index 4e4722c..4515499 100644 --- a/src/Controller/TaskController.php +++ b/src/Controller/TaskController.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Security\Http\Attribute\IsGranted; use Symfony\Component\Workflow\WorkflowInterface; #[Route('/task')] @@ -25,6 +26,7 @@ class TaskController extends AbstractController { // Page de créatiom d’une tâche #[Route('/create', name: 'app_task_create')] + #[IsGranted('ROLE_USER')] public function create(Request $request, EntityManagerInterface $entityManager): Response { if (!$request->query->has('slug')) { @@ -154,6 +156,7 @@ class TaskController extends AbstractController // Ajoute un commentaire à la tâche #[Route('/{slug}/comment', name: 'app_task_comment')] + #[IsGranted('ROLE_USER')] public function comment(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Task::class); @@ -190,6 +193,7 @@ class TaskController extends AbstractController // Modifie les informations d’une tâche #[Route('/{slug}/update', name: 'app_task_update')] + #[IsGranted('ROLE_USER')] public function update(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Task::class); @@ -229,6 +233,7 @@ class TaskController extends AbstractController // Supprimer une tâche #[Route('/{slug}/remove', name: 'app_task_remove')] + #[IsGranted('ROLE_USER')] public function remove(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Task::class); @@ -281,6 +286,7 @@ class TaskController extends AbstractController // Commence une tâche #[Route('/{slug}/start', name: 'app_task_start')] + #[IsGranted('ROLE_USER')] public function start(WorkflowInterface $taskLifecycleStateMachine, EntityManagerInterface $entityManager, $slug): Response { return $this->transition($taskLifecycleStateMachine, $entityManager, $slug, Task::TRANSITION_START); @@ -288,6 +294,7 @@ class TaskController extends AbstractController // Termine une tâche #[Route('/{slug}/finish', name: 'app_task_finish')] + #[IsGranted('ROLE_USER')] public function finish(WorkflowInterface $taskLifecycleStateMachine, EntityManagerInterface $entityManager, $slug): Response { return $this->transition($taskLifecycleStateMachine, $entityManager, $slug, Task::TRANSITION_FINISH); @@ -295,6 +302,7 @@ class TaskController extends AbstractController // Abandonne une tâche #[Route('/{slug}/cancel', name: 'app_task_cancel')] + #[IsGranted('ROLE_USER')] public function cancel(WorkflowInterface $taskLifecycleStateMachine, EntityManagerInterface $entityManager, $slug): Response { return $this->transition($taskLifecycleStateMachine, $entityManager, $slug, Task::TRANSITION_CANCEL); @@ -302,6 +310,7 @@ class TaskController extends AbstractController // Recommence une tâche #[Route('/{slug}/reset', name: 'app_task_reset')] + #[IsGranted('ROLE_USER')] public function reset(WorkflowInterface $taskLifecycleStateMachine, EntityManagerInterface $entityManager, $slug): Response { return $this->transition($taskLifecycleStateMachine, $entityManager, $slug, Task::TRANSITION_RESET); @@ -309,6 +318,7 @@ class TaskController extends AbstractController // Renvoie le geojson associé à une tâche #[Route('/download/{slug}.geojson', name: 'app_task_geojson')] + #[IsGranted('ROLE_USER')] public function geojson(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Task::class); @@ -340,6 +350,7 @@ class TaskController extends AbstractController // Renvoie le gpx associé ã une tâche (concrètement il s’agit juste du geojson converti automqtiquement) #[Route('/download/{slug}.gpx', name: 'app_task_gpx')] + #[IsGranted('ROLE_USER')] public function gpx(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Task::class); @@ -378,6 +389,7 @@ class TaskController extends AbstractController // Renvoie le XML OSM associé à la tâche #[Route('/download/{slug}.osm', name: 'app_task_osm')] + #[IsGranted('ROLE_USER')] public function osm(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Task::class); @@ -411,6 +423,7 @@ class TaskController extends AbstractController // Renvoie la liste des tâches du projet sous forme de CSV (ce qui devrait // corresponddre à ce que l’on a pu importer) #[Route('/download/{slug}.csv', name: 'app_task_csv')] + #[IsGranted('ROLE_USER')] public function csv(Request $request, EntityManagerInterface $entityManager, $slug): Response { $repository = $entityManager->getRepository(Project::class); diff --git a/src/Security/OpenStreetMapAuthenticator.php b/src/Security/OpenStreetMapAuthenticator.php index 7484328..643cbe2 100644 --- a/src/Security/OpenStreetMapAuthenticator.php +++ b/src/Security/OpenStreetMapAuthenticator.php @@ -38,7 +38,6 @@ class OpenStreetMapAuthenticator extends OAuth2Authenticator implements Authenti $session = $request->getSession(); $session->set('access_token', $accessToken); - $session->set('refresh_token', $accessToken->getRefreshToken()); return new SelfValidatingPassport( new UserBadge($accessToken->getToken(), function () use ($accessToken, $client) { @@ -76,6 +75,10 @@ class OpenStreetMapAuthenticator extends OAuth2Authenticator implements Authenti public function start(Request $request, ?AuthenticationException $authException = null): Response { $session = $request->getSession(); - return new RedirectResponse($session->has('referer') ? $session->get('referer') : '/', Response::HTTP_TEMPORARY_REDIRECT); + if ($session->has('referer')) { + return new RedirectResponse($session->get('referer')); + } else { + return new RedirectResponse($this->router->generate('app_osm_request')); + } } }