* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare(strict_types=1); namespace Symfony\Component\Mercure\EventSubscriber; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; /** * Sets the cookies created by the Authorization helper class. * * @author Kévin Dunglas */ final class SetCookieSubscriber implements EventSubscriberInterface { public function onKernelResponse(ResponseEvent $event): void { $mainRequest = method_exists($event, 'isMainRequest') ? $event->isMainRequest() : $event->isMasterRequest(); /* @phpstan-ignore-line */ if ( !($mainRequest) || null === $cookies = ($request = $event->getRequest())->attributes->get('_mercure_authorization_cookies')) { return; } $request->attributes->remove('_mercure_authorization_cookies'); $response = $event->getResponse(); foreach ($cookies as $cookie) { $response->headers->setCookie($cookie); } } /** * {@inheritdoc} */ public static function getSubscribedEvents(): array { return [KernelEvents::RESPONSE => 'onKernelResponse']; } }