src/Aqarmap/Bundle/MainBundle/EventListener/IpTraceSubscriber.php line 23

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\MainBundle\EventListener;
  3. use Gedmo\IpTraceable\IpTraceableListener;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. /**
  9.  * IpTraceSubscriber.
  10.  */
  11. class IpTraceSubscriber implements EventSubscriberInterface
  12. {
  13.     private IpTraceableListener $ipTraceableListener;
  14.     public function __construct(IpTraceableListener $ipTraceableListener)
  15.     {
  16.         $this->ipTraceableListener $ipTraceableListener;
  17.     }
  18.     public function onKernelRequest(RequestEvent $event): void
  19.     {
  20.         if (null === $event->getRequest()) {
  21.             return;
  22.         }
  23.         // If you use a cache like Varnish, you may want to set a proxy to Request::getClientIp() method
  24.         // $this->request->setTrustedProxies(array('127.0.0.1'));
  25.         $ip $event->getRequest()->getClientIp();
  26.         if (null !== $ip) {
  27.             $this->ipTraceableListener->setIpValue($ip);
  28.         }
  29.     }
  30.     public static function getSubscribedEvents(): array
  31.     {
  32.         return [
  33.             KernelEvents::REQUEST => 'onKernelRequest',
  34.         ];
  35.     }
  36. }