src/CoreBundle/Model/Administrator/Security/AdministratorRolesChangedSubscriber.php line 55

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\CoreBundle\Model\Administrator\Security;
  4. use App\CoreBundle\Model\Administrator\Administrator;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  9. class AdministratorRolesChangedSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var bool
  13.      */
  14.     protected $rolesChanged;
  15.     /**
  16.      * @var \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface
  17.      */
  18.     protected $tokenStorage;
  19.     /**
  20.      * @var \App\CoreBundle\Model\Administrator\Security\AdministratorRolesChangedFacade
  21.      */
  22.     protected $administratorRolesChangedFacade;
  23.     /**
  24.      * @param \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface $tokenStorage
  25.      * @param \App\CoreBundle\Model\Administrator\Security\AdministratorRolesChangedFacade $administratorRolesChangedFacade
  26.      */
  27.     public function __construct(
  28.         TokenStorageInterface $tokenStorage,
  29.         AdministratorRolesChangedFacade $administratorRolesChangedFacade
  30.     ) {
  31.         $this->tokenStorage $tokenStorage;
  32.         $this->administratorRolesChangedFacade $administratorRolesChangedFacade;
  33.     }
  34.     /**
  35.      * @inheritDoc
  36.      */
  37.     public static function getSubscribedEvents()
  38.     {
  39.         return [
  40.             KernelEvents::REQUEST => ['onKernelRequest'],
  41.         ];
  42.     }
  43.     /**
  44.      * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  45.      */
  46.     public function onKernelRequest(GetResponseEvent $event)
  47.     {
  48.         $token $this->tokenStorage->getToken();
  49.         /** @var \App\CoreBundle\Model\Administrator\Administrator|null $administrator */
  50.         $administrator null;
  51.         if ($token !== null) {
  52.             $administrator $token->getUser();
  53.         }
  54.         if ($administrator instanceof Administrator && $this->rolesChanged === true) {
  55.             $this->administratorRolesChangedFacade->refreshAdministratorToken($administrator);
  56.         }
  57.     }
  58.     public function updateRoles(): void
  59.     {
  60.         $this->rolesChanged true;
  61.     }
  62. }