vendor/kunstmaan/admin-bundle/EventListener/PasswordCheckListener.php line 60

Open in your IDE?
  1. <?php
  2. namespace Kunstmaan\AdminBundle\EventListener;
  3. use Kunstmaan\AdminBundle\FlashMessages\FlashTypes;
  4. use Kunstmaan\AdminBundle\Helper\AdminRouteHelper;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\Routing\RouterInterface as Router;
  9. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  10. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. /**
  13.  * PasswordCheckListener to check if the user has to change his password
  14.  */
  15. class PasswordCheckListener
  16. {
  17.     /**
  18.      * @var AuthorizationCheckerInterface
  19.      */
  20.     private $authorizationChecker;
  21.     /**
  22.      * @var TokenStorageInterface
  23.      */
  24.     private $tokenStorage;
  25.     /**
  26.      * @var Router
  27.      */
  28.     private $router;
  29.     /**
  30.      * @var RequestStack
  31.      */
  32.     private $requestStack;
  33.     /**
  34.      * @var TranslatorInterface
  35.      */
  36.     private $translator;
  37.     /**
  38.      * @var AdminRouteHelper
  39.      */
  40.     private $adminRouteHelper;
  41.     public function __construct(AuthorizationCheckerInterface $authorizationCheckerTokenStorageInterface $tokenStorageRouter $routerRequestStack $requestStackTranslatorInterface $translatorAdminRouteHelper $adminRouteHelper)
  42.     {
  43.         $this->authorizationChecker $authorizationChecker;
  44.         $this->tokenStorage $tokenStorage;
  45.         $this->router $router;
  46.         $this->requestStack $requestStack;
  47.         $this->translator $translator;
  48.         $this->adminRouteHelper $adminRouteHelper;
  49.     }
  50.     public function onKernelRequest(RequestEvent $event)
  51.     {
  52.         $url $event->getRequest()->getRequestUri();
  53.         if (!$this->adminRouteHelper->isAdminRoute($url)) {
  54.             return;
  55.         }
  56.         $route $event->getRequest()->get('_route');
  57.         if (null === $route || $route === 'kunstmaan_admin_forced_change_password') {
  58.             return;
  59.         }
  60.         if (null === $this->tokenStorage->getToken()) {
  61.             return;
  62.         }
  63.         if (!$this->authorizationChecker->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  64.             return;
  65.         }
  66.         $user $this->tokenStorage->getToken()->getUser();
  67.         if ($user->isPasswordChanged()) {
  68.             return;
  69.         }
  70.         $response = new RedirectResponse($this->router->generate('kunstmaan_admin_forced_change_password'));
  71.         $this->requestStack->getSession()->getFlashBag()->add(
  72.             FlashTypes::DANGER,
  73.             $this->translator->trans('kuma_admin.password_check.flash.error')
  74.         );
  75.         $event->setResponse($response);
  76.     }
  77. }