vendor/excelwebzone/symfony-admin-bundle/src/EventSubscriber/LastLoginSubscriber.php line 43

Open in your IDE?
  1. <?php
  2. namespace EWZ\SymfonyAdminBundle\EventSubscriber;
  3. use EWZ\SymfonyAdminBundle\Event\UserEvent;
  4. use EWZ\SymfonyAdminBundle\Events;
  5. use EWZ\SymfonyAdminBundle\Model\User;
  6. use EWZ\SymfonyAdminBundle\Repository\UserRepository;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  9. use Symfony\Component\Security\Http\SecurityEvents;
  10. /**
  11.  * Updated user last login timestamp.
  12.  */
  13. class LastLoginSubscriber implements EventSubscriberInterface
  14. {
  15.     /** @var UserRepository */
  16.     private $userRepository;
  17.     /**
  18.      * @param UserRepository $userRepository
  19.      */
  20.     public function __construct(UserRepository $userRepository)
  21.     {
  22.         $this->userRepository $userRepository;
  23.     }
  24.     /**
  25.      * {@inheritdoc}
  26.      */
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             Events::SECURITY_IMPLICIT_LOGIN => 'onSecurityImplicitLogin',
  31.             SecurityEvents::INTERACTIVE_LOGIN => 'onSecurityInteractiveLogin',
  32.         ];
  33.     }
  34.     /**
  35.      * @param UserEvent $event
  36.      */
  37.     public function onSecurityImplicitLogin(UserEvent $event): void
  38.     {
  39.         $user $event->getUser();
  40.         $user->setLastLogin(new \DateTime());
  41.         $this->userRepository->update($user);
  42.     }
  43.     /**
  44.      * @param InteractiveLoginEvent $event
  45.      */
  46.     public function onSecurityInteractiveLogin(InteractiveLoginEvent $event): void
  47.     {
  48.         $user $event->getAuthenticationToken()->getUser();
  49.         if ($user instanceof User) {
  50.             $user->setLastLogin(new \DateTime());
  51.             $this->userRepository->update($user);
  52.         }
  53.     }
  54. }