src/EventSubscriber/LoginListener.php line 27

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Controller\ServiziController;
  4. use App\Entity\User;
  5. use Doctrine\Persistence\ConnectionRegistry;
  6. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  7. use Symfony\Component\Security\Core\AuthenticationEvents;
  8. use Symfony\Component\Security\Core\Event\AuthenticationSuccessEvent;
  9. class LoginListener implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
  10. {
  11.     private $servizi;
  12.     public function __construct(ServiziController $servizi)
  13.     {
  14.         $this->servizi $servizi;
  15.     }
  16.     /**
  17.      * @param AuthenticationSuccessEvent $event
  18.      */
  19.     public function onLoginSuccess(AuthenticationSuccessEvent $event): void
  20.     {
  21.         if($event->getAuthenticationToken()->getUser()) {
  22.             /** @var User $user */
  23.             $user $event->getAuthenticationToken()->getUser();
  24.             if ($user instanceof User) {
  25.                 $user->setLastLogin(new \DateTime());
  26.                 $em $this->servizi->doctrine->getManager();
  27.                 $em->persist($user);
  28.                 $em->flush();
  29.                 if($this->servizi->checkRole('ROLE_ADMIN')){
  30.                     $this->servizi->ScriviRegistroAttivitaUtente($user"Login""Accesso effettuato");
  31.                 }
  32.             }
  33.         }
  34.     }
  35.     /**
  36.      * @inheritDoc
  37.      */
  38.     public static function getSubscribedEvents(): array
  39.     {
  40.         return [
  41.             AuthenticationEvents::AUTHENTICATION_SUCCESS => [
  42.                 ['onLoginSuccess'0],
  43.             ],
  44.         ];
  45.     }
  46. }