src/EventSubscriber/ParrainSubscriber.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  5. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. class ParrainSubscriber implements EventSubscriberInterface
  8. {
  9. private $session;
  10. public function __construct(SessionInterface $session)
  11. {
  12. $this->session = $session;
  13. }
  14. public function onKernelController(ControllerEvent $event)
  15. {
  16. if (!$event->isMainRequest()) {
  17. return;
  18. }
  19. $controller = $event->getController();
  20. if (is_array($controller)) {
  21. $controller = $controller[0];
  22. }
  23. $request = $event->getRequest();
  24. $token = $request->query->get('egerie');
  25. if (($token === null || $token === '')) {
  26. $route = (string) $request->attributes->get('_route');
  27. if (in_array($route, ['app_home_index', 'app_shop_index'], true)) {
  28. $token = $request->query->get('token');
  29. }
  30. }
  31. if ($token !== null && $token !== '' && !$this->session->has('parrain')) {
  32. $this->session->set('parrain', $token);
  33. }
  34. }
  35. public static function getSubscribedEvents()
  36. {
  37. return [
  38. KernelEvents::CONTROLLER => 'onKernelController',
  39. ];
  40. }
  41. }