src/EventListener/AuthenticationListener.php line 34

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Entity\System\Customer;
  5. use App\Entity\System\Employee;
  6. use App\Manager\System\CustomerManager;
  7. use App\Manager\System\EmployeeManager;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\Security\Core\Event\AuthenticationSuccessEvent;
  10. class AuthenticationListener implements EventSubscriberInterface
  11. {
  12.     private EmployeeManager $employeeManager;
  13.     private CustomerManager $customerManager;
  14.     public function __construct(
  15.         EmployeeManager $employeeManager,
  16.         CustomerManager $customerManager
  17.     ) {
  18.         $this->employeeManager $employeeManager;
  19.         $this->customerManager $customerManager;
  20.     }
  21.     public static function getSubscribedEvents(): array
  22.     {
  23.         return [
  24.             AuthenticationSuccessEvent::class => 'onSuccess',
  25.         ];
  26.     }
  27.     public function onSuccess(AuthenticationSuccessEvent $event): void
  28.     {
  29.         /** @var Customer|Employee $user */
  30.         $user $event->getAuthenticationToken()->getUser();
  31.         $user->setLastAccess(new \DateTime());
  32.         if ($user instanceof Employee) {
  33.             $this->employeeManager->save($user);
  34.             return;
  35.         }
  36.         if ($user instanceof Customer) {
  37.             $this->customerManager->save($user);
  38.         }
  39.     }
  40. }