src/EventListener/CheckoutListener.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  4. use Sylius\Component\Core\Model\OrderInterface;
  5. use Symfony\Component\EventDispatcher\GenericEvent;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use Symfony\Component\Routing\RouterInterface;
  10. use Symfony\Component\Security\Core\Security;
  11. use Webmozart\Assert\Assert;
  12. class CheckoutListener
  13. {
  14.     private $security;
  15.     private $router;
  16.     private $session;
  17.     public function __construct(Security $securityRouterInterface $routerSessionInterface $session)
  18.     {
  19.         $this->security $security;
  20.         $this->router $router;
  21.         $this->session $session;
  22.     }
  23.     public function onPreAddress(ResourceControllerEvent $event)
  24.     {
  25.         $user $this->security->getUser();
  26.         if($user == null) {
  27.             $this->session->set('adresseRedirect',true);
  28.             $url $this->router->generate('sylius_shop_login');
  29.             $response = new RedirectResponse($url);
  30.             $event->setResponse($response);
  31.         }
  32.     }
  33.     /**
  34.      * @param RequestEvent $event
  35.      */
  36.     public function onAfterLogin(RequestEvent $event)
  37.     {
  38.         $user $this->security->getUser();
  39.         if($user != null && $this->session->get('adresseRedirect')) {
  40.             $url $this->router->generate('sylius_shop_checkout_address');
  41.             $response = new RedirectResponse($url);
  42.             $this->session->remove('adresseRedirect');
  43.             $event->setResponse($response);
  44.         }
  45.     }
  46. }