src/Controller/Services/KeycloakController.php line 81

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Services;
  3. use Symfony\Component\HttpClient\HttpClient;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
  12. use Symfony\Component\Routing\RouterInterface;
  13. #[Route(host"serviceslenord.spontaneit.fr")]
  14. //#[Route(host: "services.lenord.fr")]
  15. class KeycloakController extends AbstractController
  16. {
  17.     /**
  18.      * Link to this controller to start the "connect" process
  19.      *
  20.      * @Route("/connect/oauth", name="connect_keycloak")
  21.      */
  22.     public function connectAction(ClientRegistry $clientRegistryRequest $requestRouterInterface $router)
  23.     {
  24.         $session $request->getSession();
  25.         $referer $request->headers->get('referer');
  26.         $session->set('path'$referer);
  27.         if ($session->get('path') == null) {
  28.             
  29.             /*$baseUrl = $request->getSchemeAndHttpHost();
  30.             $referer = str_replace($baseUrl, '', $referer);
  31.             $refererRouteName = $router->match($referer)['_route'];
  32.             $session->set('path', urlencode($this->generateUrl($refererRouteName, [], UrlGeneratorInterface::ABSOLUTE_URL)));
  33.             */
  34.             //$session->set('path', $refererRouteName);
  35.         }
  36.         //dd($session);
  37.         /** @var KeycloakClient $client */
  38.         $client $clientRegistry->getClient('keycloak');
  39.         return $client->redirect(['openid email profile roles']);
  40.     }
  41.     /**
  42.      * @Route("/connect/oauth/check", name="connect_auth_check")
  43.      */
  44.     public function connectCheckAction()
  45.     {
  46.         
  47.     }
  48.     /**
  49.      * @Route("/oauth/logout/check", name="oauth_logout_check")
  50.      */
  51.     public function logoutCheckAction(Request $request): RedirectResponse
  52.     {
  53.         $session $request->getSession();
  54.         $session->remove('unauthentified');
  55.         return $this->redirectToRoute('app_logout');
  56.     }
  57.     /**
  58.      * @Route("/oauth/logout", name="oauth_logout")
  59.      */
  60.     public function logout(ClientRegistry $clientRegistryRequest $request ): RedirectResponse
  61.     {
  62.         $keycloakBaseUrl $_ENV['KEYCLOAK_BASE'];
  63.         $clientid $_ENV['KEYCLOAK_CLIENTID'];        
  64.         $redirectAfterLogout urlencode($this->generateUrl('oauth_logout_check', [], UrlGeneratorInterface::ABSOLUTE_URL));
  65.         $logoutUrl "{$keycloakBaseUrl}/protocol/openid-connect/logout?client_id={$clientid}&post_logout_redirect_uri={$redirectAfterLogout}";
  66.         return new RedirectResponse($logoutUrl);
  67.     }
  68.     /**
  69.      * Link to this controller to start the "connect" process
  70.      *
  71.      * @Route("/connect/oauth/silent", name="connect_silently_keycloak")
  72.      */
  73.     public function connectSilentlyAction(ClientRegistry $clientRegistry)
  74.     {
  75.         /** @var KeycloakClient $client */
  76.         $client $clientRegistry->getClient('keycloak');
  77.         return $client->redirect(['openid email profile roles'], ['prompt' => 'none']);
  78.     }
  79. }