<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class ParrainSubscriber implements EventSubscriberInterface
{
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
public function onKernelController(ControllerEvent $event)
{
if (!$event->isMainRequest()) {
return;
}
$controller = $event->getController();
if (is_array($controller)) {
$controller = $controller[0];
}
$request = $event->getRequest();
$token = $request->query->get('egerie');
if (($token === null || $token === '')) {
$route = (string) $request->attributes->get('_route');
if (in_array($route, ['app_home_index', 'app_shop_index'], true)) {
$token = $request->query->get('token');
}
}
if ($token !== null && $token !== '' && !$this->session->has('parrain')) {
$this->session->set('parrain', $token);
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::CONTROLLER => 'onKernelController',
];
}
}