Browse Source

Se souvient d’où l’on vient à le connexion

master
vincent 1 week ago
parent
commit
119c6c865e
2 changed files with 14 additions and 7 deletions
  1. +11
    -3
      src/Controller/HomeController.php
  2. +3
    -4
      src/Security/OpenStreetMapAuthenticator.php

+ 11
- 3
src/Controller/HomeController.php View File

@ -5,6 +5,7 @@ namespace App\Controller;
use KnpU\OAuth2ClientBundle\Client\ClientRegistry; use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\SecurityBundle\Security; use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
@ -35,8 +36,14 @@ class HomeController extends AbstractController
// L’oauth OSM commence ici // L’oauth OSM commence ici
#[Route('/osm/request', name: 'app_osm_request')] #[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 return $clientRegistry
->getClient('openstreetmap') // cf `config/packages/knpu_oauth2_client.yaml` ->getClient('openstreetmap') // cf `config/packages/knpu_oauth2_client.yaml`
->redirect([ ->redirect([
@ -59,12 +66,13 @@ class HomeController extends AbstractController
$this->addFlash('success', 'Authentification OSM réussie !'); $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 // La déconnexion passe par là mais c’est pas lié à l’oauth
#[Route('/osm/logout', name: 'app_osm_logout')] #[Route('/osm/logout', name: 'app_osm_logout')]
public function osmLogout(Security $security): Response
public function osmLogout(Request $request, Security $security): Response
{ {
return $security->logout(); return $security->logout();
} }


+ 3
- 4
src/Security/OpenStreetMapAuthenticator.php View File

@ -38,6 +38,7 @@ class OpenStreetMapAuthenticator extends OAuth2Authenticator implements Authenti
$session = $request->getSession(); $session = $request->getSession();
$session->set('access_token', $accessToken); $session->set('access_token', $accessToken);
$session->set('refresh_token', $accessToken->getRefreshToken());
return new SelfValidatingPassport( return new SelfValidatingPassport(
new UserBadge($accessToken->getToken(), function () use ($accessToken, $client) { 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 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);
} }
} }

Loading…
Cancel
Save