src/EventListener/UserLogListener.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Doctrine\ORM\EntityManager;
  4. use Symfony\Component\HttpKernel\Event\RequestEvent;
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  6. use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
  7. use App\Entity\UserLog;
  8. class UserLogListener
  9. {
  10.     protected $authChecker;
  11.     protected $tokenStorage;
  12.     protected $entityManager;
  13.     public function __construct(TokenStorageInterface  $tokenStorageAuthorizationChecker $authCheckerEntityManager $entityManager)
  14.     {
  15.         $this->authChecker $authChecker;
  16.         $this->tokenStorage $tokenStorage;
  17.         $this->entityManager $entityManager;
  18.     }
  19.     public function onKernelRequest(RequestEvent $event)
  20.     {
  21.         if( $this->tokenStorage->getToken() != null){
  22.             $user $this->tokenStorage->getToken()->getUser();
  23.             if (is_object($user) && is_a($user'App\Entity\User')) {
  24.                 $ip $event->getRequest()->getClientIp();
  25.                 $action $event->getRequest()->attributes->get('_controller');
  26.                 $method $event->getRequest()->getMethod();
  27.                 $url $event->getRequest()->getPathInfo();
  28.                 if (($event->getRequest()->request) && (($method=='POST') || ($method=='PUT') || ($method=='DELETE'))) {
  29.                     $data $event->getRequest()->request->all();
  30.                 } else {
  31.                     $data $event->getRequest()->query->all();
  32.                 }
  33.                 if ($url == "/_fragment") {
  34.                     return;
  35.                 }
  36.                 $userLog = new UserLog();
  37.                 $userLog->setUser($user);
  38.                 $userLog->setIp($ip);
  39.                 $userLog->setAction($action);
  40.                 $userLog->setMethode($method);
  41.                 $userLog->setUrl($url);
  42.                 $userLog->setData(json_encode($data));
  43.                 $userLog->setDate(new \Datetime());
  44.                 $this->entityManager->persist($userLog);
  45.                 $this->entityManager->flush();
  46.             }
  47.         }
  48.     }
  49. }