<?php
namespace App\EventListener;
use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
use Sylius\Component\Core\Model\OrderInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Security;
use Webmozart\Assert\Assert;
class CheckoutListener
{
private $security;
private $router;
private $session;
public function __construct(Security $security, RouterInterface $router, SessionInterface $session)
{
$this->security = $security;
$this->router = $router;
$this->session = $session;
}
public function onPreAddress(ResourceControllerEvent $event)
{
$user = $this->security->getUser();
if($user == null) {
$this->session->set('adresseRedirect',true);
$url = $this->router->generate('sylius_shop_login');
$response = new RedirectResponse($url);
$event->setResponse($response);
}
}
/**
* @param RequestEvent $event
*/
public function onAfterLogin(RequestEvent $event)
{
$user = $this->security->getUser();
if($user != null && $this->session->get('adresseRedirect')) {
$url = $this->router->generate('sylius_shop_checkout_address');
$response = new RedirectResponse($url);
$this->session->remove('adresseRedirect');
$event->setResponse($response);
}
}
}