src/EventListener/KeycloakRefreshAccessTokenListener.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Service\KeycloakApiService;
  4. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  10. use Symfony\Component\Security\Core\User\UserProviderInterface;
  11. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  12. class KeycloakRefreshAccessTokenListener implements EventSubscriberInterface
  13. {
  14.     private RequestStack $requestStack;
  15.     private UrlGeneratorInterface $urlGenerator;
  16.     private TokenStorageInterface $tokenStorage;
  17.     public function __construct(
  18.         RequestStack $requestStack,
  19.         UrlGeneratorInterface $urlGenerator,
  20.         TokenStorageInterface $tokenStorage,
  21.         KeycloakApiService $keycloakApiService,
  22.     ) {
  23.         $this->requestStack $requestStack;
  24.         $this->urlGenerator $urlGenerator;
  25.         $this->tokenStorage $tokenStorage;
  26.         $this->keycloakApiService $keycloakApiService;
  27.     }
  28.     public function onKernelRequest(RequestEvent $event): void
  29.     {
  30.         $request $this->requestStack->getMainRequest();
  31.         $session $request->getSession();
  32.         $tokenExpires $session->get('oidc_expires_token');
  33.         if (time() < ($tokenExpires-50)) {
  34.             return;
  35.         }
  36.     //     $keycloakProvider = $this->keycloakApiService->keycloakProvider();
  37.     //     $session->remove('oidc_access_token');
  38.     //     $session->set('oidc_access_token', $keycloakProvider['new_access_token']);
  39.     //     $session->remove('oidc_refresh_token');
  40.     //     $session->set('oidc_refresh_token', $keycloakProvider['new_refresh_token']);
  41.     //     $session->remove('oidc_expires_token');
  42.     //     $session->set('oidc_expires_token', $keycloakProvider['new_oidc_expires_token']);
  43.     //     $session->remove('oidc_access_token');
  44.     //     $session->set('oidc_access_token', $keycloakProvider['new_access_token']);
  45.     }
  46.     public static function getSubscribedEvents(): array
  47.     {
  48.         return [RequestEvent::class => 'onKernelRequest'];
  49.     }
  50. }