src/EventListener/PraxisRelatedEntityListener.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Application\Sonata\UserBundle\Entity\User;
  4. use App\Repository\PraxisRepository;
  5. use Psr\Log\LoggerInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  8. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  9. use Symfony\Component\Security\Http\SecurityEvents;
  10. class PraxisRelatedEntityListener implements EventSubscriberInterface
  11. {
  12.     private SessionInterface $session;
  13.     private LoggerInterface $logger;
  14.     /**
  15.      * @var PraxisRepository
  16.      */
  17.     private PraxisRepository $praxisRepository;
  18.     public function __construct(SessionInterface $sessionLoggerInterface $loggerPraxisRepository $praxisRepository)
  19.     {
  20.         $this->session $session;
  21.         $this->logger $logger;
  22.         $this->praxisRepository $praxisRepository;
  23.     }
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             SecurityEvents::INTERACTIVE_LOGIN => 'onLogin'
  28.         ];
  29.     }
  30.     public function onLogin(InteractiveLoginEvent $event)
  31.     {
  32.         $user $event->getAuthenticationToken()->getUser();
  33.         if ($user instanceof User) {
  34.             $praxis  $this->praxisRepository->findOneBy(['user' => $user]);
  35.             $this->session->set('praxis'$praxis);
  36.             if ($praxis) {
  37.                 $this->logger->info('Praxis was set', ['praxis' => $praxis->getId(), 'user' => $user->getId()]);
  38.             }
  39.         }
  40.     }
  41. }