findSomeOrderedByPopularity(); return $this->render('home/index.html.twig', [ 'popularProjects' => $popularProjects, ]); } #[Route('/{locale}', name: 'app_locale', requirements: ['locale' => '(fr|en)'])] public function changeLocale(Request $request, $locale): Response { $request->getSession()->set('_locale', $locale); if ($request->headers->has('Referer')) { return $this->redirect($request->headers->get('Referer')); } else { return $this->redirectToRoute('app_home'); } } // 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, TranslatorInterface $translator): Response { $client = $clientRegistry->getClient('openstreetmap'); if ($request->query->has('error')) { $this->addFlash('danger', sprintf( $translator->trans('alert.auth_failure').' (%s)', $request->query->has('error_description') ? $request->query->get('error_description') : $request->query->get('error') )); } else { $this->addFlash('success', $translator->trans('alert.auth_success')); } $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(); } }