Browse Source

Gère mieux la déco d’OSM

master
vincent 2 weeks ago
parent
commit
509004fadc
3 changed files with 24 additions and 2 deletions
  1. +6
    -0
      src/Controller/ProjectController.php
  2. +13
    -0
      src/Controller/TaskController.php
  3. +5
    -2
      src/Security/OpenStreetMapAuthenticator.php

+ 6
- 0
src/Controller/ProjectController.php View File

@ -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);


+ 13
- 0
src/Controller/TaskController.php View File

@ -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);


+ 5
- 2
src/Security/OpenStreetMapAuthenticator.php View File

@ -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'));
}
}
}

Loading…
Cancel
Save