vendor/ibexa/http-cache/src/lib/EventSubscriber/RequestEventSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\HttpCache\EventSubscriber;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpKernel\Event\RequestEvent;
  10. use Symfony\Component\HttpKernel\KernelEvents;
  11. final class RequestEventSubscriber implements EventSubscriberInterface
  12. {
  13.     /** @var string */
  14.     private $userHashHeaderName;
  15.     public function __construct(string $userHashHeaderName)
  16.     {
  17.         $this->userHashHeaderName $userHashHeaderName;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             KernelEvents::REQUEST => [
  23.                 ['onKernelRequestForward'15],
  24.             ],
  25.         ];
  26.     }
  27.     public function onKernelRequestForward(RequestEvent $event): void
  28.     {
  29.         if ($event->isMainRequest()) {
  30.             $request $event->getRequest();
  31.             if (
  32.                 $request->attributes->get('needsForward') &&
  33.                 $request->attributes->has('semanticPathinfo') &&
  34.                 $request->headers->has($this->userHashHeaderName)
  35.             ) {
  36.                 $headersToForward $request->attributes->get('forwardRequestHeaders', []);
  37.                 $headersToForward[$this->userHashHeaderName] = $request->headers->get($this->userHashHeaderName);
  38.                 $request->attributes->set('forwardRequestHeaders'$headersToForward);
  39.             }
  40.         }
  41.     }
  42. }
  43. class_alias(RequestEventSubscriber::class, 'EzSystems\PlatformHttpCacheBundle\EventSubscriber\RequestEventSubscriber');