src/EventListener/Logger.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Component\Authenticator\Authenticator;
  4. use App\Entity\Log;
  5. use App\Repository\WorkspaceRepository;
  6. use App\Repository\UserRepository;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Exception;
  9. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  10. class Logger
  11. {
  12.     /**
  13.      * @var EntityManagerInterface
  14.      */
  15.     private $entityManager;
  16.     /**
  17.      * @var Authenticator
  18.      */
  19.     private $authenticator;
  20.     /**
  21.      * @var WorkspaceRepository
  22.      */
  23.     private $workspaceRepository;
  24.     function __construct(EntityManagerInterface $entityManagerAuthenticator $authenticatorWorkspaceRepository $workspaceRepository)
  25.     {
  26.         $this->entityManager $entityManager;
  27.         $this->authenticator $authenticator;
  28.         $this->workspaceRepository $workspaceRepository;
  29.     }
  30.     /**
  31.      * Logging events to the database before controller execution.
  32.      *
  33.      * @param ControllerEvent $event
  34.      *
  35.      * @throws Exception
  36.      */
  37.     public function onKernelController(ControllerEvent $event)
  38.     {
  39.         $request $event->getRequest();
  40.         $uri $request->getRequestUri();
  41.         if (strpos($uri'/_wdt/') !== false || strpos($uri'/api/v1/auth/login') !== false || !$this->authenticator->isAuthenticated()) {
  42.             return;
  43.         }
  44.         $user $this->authenticator->getUser();
  45.         $log = new Log();
  46.         if($user) {
  47.             $workspace $this->workspaceRepository->find($this->authenticator->getSessionWorkspace()->getId());
  48.             $log->setWorkspace($workspace);
  49.             $log->setUser($user);
  50.         }
  51.         $log->setEndpoint($uri);
  52.         $log->setMethod($request->getMethod());
  53.         $log->setData($request->getContentType() ? $request->getContent() : null);
  54.         $this->entityManager->persist($log);
  55.         $this->entityManager->flush();
  56.     }
  57. }