src/Aqarmap/Bundle/UserBundle/EventListener/AdminLoginListener.php line 39

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\UserBundle\EventListener;
  3. use Aqarmap\Bundle\NotificationBundle\Types\UserWasLogged;
  4. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  7. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  8. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  9. class AdminLoginListener implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var EventDispatcherInterface
  13.      */
  14.     private $eventDispatcher;
  15.     /**
  16.      * @var AuthorizationCheckerInterface
  17.      */
  18.     private $authorizationChecker;
  19.     /**
  20.      * @var TokenStorageInterface
  21.      */
  22.     private $tokenStorage;
  23.     public function __construct(
  24.         EventDispatcherInterface $eventDispatcher,
  25.         AuthorizationCheckerInterface $authorizationChecker,
  26.         TokenStorageInterface $tokenStorage
  27.     ) {
  28.         $this->eventDispatcher $eventDispatcher;
  29.         $this->authorizationChecker $authorizationChecker;
  30.         $this->tokenStorage $tokenStorage;
  31.     }
  32.     public function onAdminLogin(InteractiveLoginEvent $event): void
  33.     {
  34.         if ($this->authorizationChecker->isGranted('ROLE_ADMIN')) {
  35.             $user $this->tokenStorage->getToken()->getUser();
  36.             $dispatcher $this->eventDispatcher;
  37.             $userWasLoggedEvent = (new UserWasLogged())->setSubject($user)->setInteractiveLoginEvent($event);
  38.             $dispatcher->dispatch($userWasLoggedEvent'user.was.logged');
  39.         }
  40.     }
  41.     public static function getSubscribedEvents()
  42.     {
  43.         return [
  44.             'aqarmap.login.success' => 'onAdminLogin',
  45.         ];
  46.     }
  47. }