src/EventListener/OnRequestListener.php line 26

  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\Activity;
  4. use App\Entity\Company;
  5. use App\Repository\ActivityRepository;
  6. use DateTimeImmutable;
  7. use Symfony\Component\Security\Core\Security;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. class OnRequestListener
  10. {
  11.     protected $em;
  12.     protected $tokenStorage;
  13.     protected $security;
  14.     protected $activityRepository;
  15.     public function __construct($em$tokenStorageSecurity $securityActivityRepository $activityRepository)
  16.     {
  17.         $this->em $em;
  18.         $this->tokenStorage $tokenStorage;
  19.         $this->security $security;
  20.         $this->activityRepository $activityRepository;
  21.     }
  22.     public function onKernelRequest(RequestEvent $event)
  23.     {
  24.         if ($this->tokenStorage->getToken()) {
  25.             $user $this->tokenStorage->getToken()->getUser();
  26.             if (!$this->security->isGranted('ROLE_SUPER_ADMIN'$user)) {
  27.                 $filterCompany $this->em->getFilters()->enable('owner');
  28.                 $filterSeason $this->em->getFilters()->enable('season');
  29.                 if ($user->getCompany()) {
  30.                     /** @var Company */
  31.                     $company $user->getCompany();
  32.                     $season $company->getActiveSeason();
  33.                     if ($season) {
  34.                         $filterCompany->setParameter('companyId'$company $company->getId() : 0'uuid');
  35.                         $filterSeason->setParameter('seasonId'$company $season->getId() : 0'uuid');
  36.                     }
  37.                 }
  38.             }
  39.             $activity = new Activity();
  40.             $activity->setAction('')
  41.                 ->setIp($event->getRequest()->getClientIp())
  42.                 ->setOwner($user->getCompany())
  43.                 ->setMadeBy($user)
  44.                 ->setPath($event->getRequest()->getPathInfo())
  45.                 ->setMethod($event->getRequest()->getMethod())
  46.                 ->setLocale($event->getRequest()->getLocale())
  47.                 ->setContext(json_encode($event->getRequest()->request->all()))
  48.                 ->setQuery(json_encode($event->getRequest()->query->all()))
  49.                 ->setRoute($event->getRequest()->attributes->get('_route'))
  50.                 ->setCreatedAt(new DateTimeImmutable())
  51.                 ->setUpdatedAt(new DateTimeImmutable())
  52.             ;
  53.             $this->activityRepository->save($activitytrue);
  54.         }
  55.     }
  56. }