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');