src/EventSubscriber/RequestLoggerSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\RequestEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. use Symfony\Component\Security\Core\Security;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use App\Entity\UserLog;
  9. class RequestLoggerSubscriber implements EventSubscriberInterface
  10. {
  11.      private Security $security;
  12.     private EntityManagerInterface $em;
  13.     public function __construct(
  14.         Security $security,
  15.         EntityManagerInterface $em
  16.     ) {
  17.             $this->security $security;
  18.             $this->em $em;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             KernelEvents::REQUEST => ['onKernelRequest'0]
  24.         ];
  25.     }
  26.     public function onKernelRequest(RequestEvent $event): void
  27.     {
  28.         if (!$event->isMainRequest()) {
  29.             return;
  30.         }
  31.         $request $event->getRequest();
  32.         $user $this->security->getUser();
  33.         if (!$user) {
  34.             return; // ou journaliser les accès anonymes
  35.         }
  36.         // dd($request);
  37.         $path $request->getPathInfo();
  38.         if (strpos($path"sync_index") !== false) {
  39.             // echo "Mot trouvé !";
  40.             return;
  41.         } else {
  42.             // echo "Mot non trouvé !";
  43.         }
  44.         $userlog = new UserLog();
  45.         $userlog->setUser($user->getUserIdentifier());
  46.         $userlog->setPath($path);
  47.         $userlog->setMethod($request->getMethod());
  48.         $userlog->setQuery(json_encode($request->query->all()));
  49.         $userlog->setIp($request->getClientIp());
  50.         $userlog->setCreatedAt(new \DateTime());
  51.         $userlog->setUserAgent($_SERVER['HTTP_USER_AGENT']);
  52.         $this->em->persist($userlog);
  53.         $this->em->flush();
  54.     }
  55. }