vendor/witalink/starter-bundle/src/EventSubscriber/Subscriber/UserActivitySubscriber.php line 34

Open in your IDE?
  1. <?php
  2. namespace Witalink\StarterBundle\EventSubscriber\Subscriber;
  3. use App\Entity\User;
  4. use DateTime;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\Security\Core\Security;
  9. class UserActivitySubscriber implements EventSubscriberInterface
  10. {
  11.     private $em;
  12.     private $security;
  13.     public function __construct(
  14.         EntityManagerInterface $em,
  15.         Security $security
  16.     ) {
  17.         $this->em $em;
  18.         $this->security $security;
  19.     }
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             // must be registered before (i.e. with a higher priority than) the default Locale listener
  24.             KernelEvents::TERMINATE => [['onTerminate'20]],
  25.         ];
  26.     }
  27.     public function onTerminate()
  28.     {
  29.         if ($this->security->getUser() != null) {
  30.             // si l'utilisateur actif n'est pas en impersonisation
  31.             if (!$this->security->isGranted('IS_IMPERSONATOR')) {
  32.                 /** @var User $user */
  33.                 $user $this->security->getUser();
  34.                 if (!$user->isActiveNow()) {
  35.                     $user->setLastActivityAt(new DateTime());
  36.                     $this->em->persist($user);
  37.                     $this->em->flush();
  38.                 }
  39.             }
  40.         }
  41.     }
  42. }