render('home/index.html.twig', [ ]); } // Page d’erreur public function error(Request $request, $exception, $logger = null): Response { $this->addFlash('danger', $exception->getMessage()); // . ' ' . $exception->getFile() . ':' . $exception->getLine()); // Si le referer est renseigné on renvoie vers celui-ci où le message d’erreur sera affiché if ($request->headers->has('Referer')) { return $this->redirect($request->headers->get('Referer')); } return $this->render('home/error.html.twig', [ ]); } // L’oauth OSM commence ici #[Route('/osm/request', name: 'app_osm_request')] public function osmRequest(Request $request, ClientRegistry $clientRegistry): Response { // Se souvient d’où l’on vient pour pouvoir y retourner après la connexion if ($request->headers->has('Referer')) { $session = $request->getSession(); $session->set('referer', $request->headers->get('Referer')); } return $clientRegistry ->getClient('openstreetmap') // cf `config/packages/knpu_oauth2_client.yaml` ->redirect([ 'read_prefs', // TODO est-ce qu’on a même besoin de ça ? ]); } // L’oauth OSM aboutit ici #[Route('/osm/callback', name: 'app_osm_callback')] public function osmCallback(Request $request, ClientRegistry $clientRegistry): Response { $client = $clientRegistry->getClient('openstreetmap'); if ($request->query->has('error')) { $this->addFlash('danger', sprintf( 'Échec de l’authentification (%s)', $request->query->has('error_description') ? $request->query->get('error_description') : $request->query->get('error') )); } else { $this->addFlash('success', 'Authentification OSM réussie !'); } $session = $request->getSession(); return $session->has('referer') ? new RedirectResponse($session->get('referer'), Response::HTTP_TEMPORARY_REDIRECT) : $this->redirectToRoute('app_home'); } // La déconnexion passe par là mais c’est pas lié à l’oauth #[Route('/osm/logout', name: 'app_osm_logout')] public function osmLogout(Request $request, Security $security): Response { return $security->logout(); } }