From 119c6c865e13ce2f6029bb3e017ce6fbe621e627 Mon Sep 17 00:00:00 2001 From: vincent Date: Mon, 3 Mar 2025 14:35:28 +0100 Subject: [PATCH] =?UTF-8?q?Se=20souvient=20d=E2=80=99o=C3=B9=20l=E2=80=99o?= =?UTF-8?q?n=20vient=20=C3=A0=20le=20connexion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Controller/HomeController.php | 14 +++++++++++--- src/Security/OpenStreetMapAuthenticator.php | 7 +++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index f455e90..ed3b4e4 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -5,6 +5,7 @@ namespace App\Controller; use KnpU\OAuth2ClientBundle\Client\ClientRegistry; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\SecurityBundle\Security; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; @@ -35,8 +36,14 @@ class HomeController extends AbstractController // L’oauth OSM commence ici #[Route('/osm/request', name: 'app_osm_request')] - public function osmRequest(ClientRegistry $clientRegistry): Response + 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([ @@ -59,12 +66,13 @@ class HomeController extends AbstractController $this->addFlash('success', 'Authentification OSM réussie !'); } - return $this->redirectToRoute('app_home'); + $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(Security $security): Response + public function osmLogout(Request $request, Security $security): Response { return $security->logout(); } diff --git a/src/Security/OpenStreetMapAuthenticator.php b/src/Security/OpenStreetMapAuthenticator.php index 90714dd..7484328 100644 --- a/src/Security/OpenStreetMapAuthenticator.php +++ b/src/Security/OpenStreetMapAuthenticator.php @@ -38,6 +38,7 @@ 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) { @@ -74,9 +75,7 @@ class OpenStreetMapAuthenticator extends OAuth2Authenticator implements Authenti public function start(Request $request, ?AuthenticationException $authException = null): Response { - return new RedirectResponse( - '/', - Response::HTTP_TEMPORARY_REDIRECT - ); + $session = $request->getSession(); + return new RedirectResponse($session->has('referer') ? $session->get('referer') : '/', Response::HTTP_TEMPORARY_REDIRECT); } }