src/EventListener/Web/TapfiliateCookieListener.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\EventListener\Web;
  3. use App\Application\Service\Tapfiliate\TapfiliateService;
  4. use Symfony\Component\HttpFoundation\Cookie;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  7. class TapfiliateCookieListener
  8. {
  9.     public const TIME_EXPIRED_COOKIE_4_MONTH 10_519_200;
  10.     private TapfiliateService $tapfiliateService;
  11.     private RequestStack $requestStack;
  12.     public function __construct(
  13.         TapfiliateService $tapfiliateService,
  14.         RequestStack $requestStack
  15.     ) {
  16.         $this->tapfiliateService $tapfiliateService;
  17.         $this->requestStack $requestStack;
  18.     }
  19.     public function onKernelResponse(ResponseEvent $event): void
  20.     {
  21.         $request $event->getRequest();
  22.         $response $event->getResponse();
  23.         $refTapfiliate $request->get('ref');
  24.         if (!$refTapfiliate) {
  25.             return;
  26.         }
  27.         $time time() + self::TIME_EXPIRED_COOKIE_4_MONTH;
  28.         $cookieData json_encode(['data' => $refTapfiliate'expiry' => $time]);
  29.         $this->requestStack->getSession()->set('ref'$refTapfiliate);
  30.         $_SESSION['ref'] = $refTapfiliate;
  31.         if (isset($_COOKIE['ref_tapfiliate'])) {
  32.             $cookie $this->tapfiliateService->getDataCookieTapFiliate($request->cookies->get('ref_tapfiliate'));
  33.             if ($refTapfiliate === $cookie['dataCookie']) {
  34.                 return;
  35.             }
  36.             $response->headers->clearCookie('ref_tapfiliate');
  37.         }
  38.         $response->headers->setCookie(
  39.             new Cookie(
  40.                 'ref_tapfiliate',
  41.                 $cookieData,
  42.                 time() + self::TIME_EXPIRED_COOKIE_4_MONTH,
  43.                 '/',
  44.                 null,
  45.                 null,
  46.                 false
  47.             )
  48.         );
  49.     }
  50. }