<?php declare(strict_types=1);
namespace VioRepresentativeLogin\Storefront\Subscriber;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use VioRepresentativeLogin\Core\Services\AgentService;
class KernelResponseSubscriber implements EventSubscriberInterface
{
private AgentService $agentService;
public function __construct(AgentService $agentService)
{
$this->agentService = $agentService;
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::RESPONSE => 'onRegisterResponse'
];
}
public function onRegisterResponse(ResponseEvent $event) : void
{
$response = $event->getResponse();
$requestURI = $event->getRequest()->getRequestUri();
$context = $event->getRequest()->get('sw-sales-channel-context');
if ($response instanceof RedirectResponse
&& $context instanceof SalesChannelContext
&& $requestURI === '/account/register')
{
$event->setResponse($this->agentService->getRedirectResponse($context, $response));
}
}
}