src/EventListener/UserLogListener.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\User;
  4. use App\Entity\UserLog;
  5. use Doctrine\ORM\EntityManager;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  9. class UserLogListener
  10. {
  11.     /**
  12.      * @var EntityManagerInterface
  13.      */
  14.     private $entityManager;
  15.     /**
  16.      * @var TokenStorageInterface
  17.      */
  18.     private $tokenStorage;
  19.     public function __construct(EntityManagerInterface $entityManagerTokenStorageInterface $tokenStorage)
  20.     {
  21.         $this->entityManager $entityManager;
  22.         $this->tokenStorage $tokenStorage;
  23.     }
  24.     public function onKernelRequest(RequestEvent $event)
  25.     {
  26.         if ($this->tokenStorage->getToken() === null) {
  27.             return;
  28.         }
  29.         /** @var User $user */
  30.         $user $this->tokenStorage->getToken()->getUser();
  31.         if (!$user instanceof User) {
  32.             return;
  33.         }
  34.         $currentDate = new \Datetime();
  35.         $action $event->getRequest()->attributes->get('_controller');
  36.         $method $event->getRequest()->getMethod();
  37.         $userIp $event->getRequest()->getClientIp();
  38.         //dump($this->tokenStorage->getToken()->getRoleNames());
  39.         $userLog = new UserLog();
  40.         $userLog->setUser($user);
  41.         $userLog->setIp($userIp);
  42.         $userLog->setAction($action);
  43.         $userLog->setMethod($method);
  44.         $userLog->setDate($currentDate);
  45.         if ($event->getRequest()->request && $method == 'POST') {
  46.             $userLog->setData(json_encode($event->getRequest()->request->all()));
  47.         } else {
  48.             $userLog->setData($event->getRequest()->getPathInfo());
  49.         }
  50.         $this->entityManager->persist($userLog);
  51.         $this->entityManager->flush();
  52.     }
  53. }