Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PreventExpressCheckoutObserver.php
Go to the documentation of this file.
1 <?php
8 
10 
12 {
16  protected $messageManager;
17 
23  protected $_url;
24 
30  protected $_persistentSession = null;
31 
35  protected $_customerSession;
36 
41 
49  public function __construct(
50  \Magento\Persistent\Helper\Session $persistentSession,
51  \Magento\Customer\Model\Session $customerSession,
52  \Magento\Framework\UrlInterface $url,
53  \Magento\Framework\Message\ManagerInterface $messageManager,
54  \Magento\Checkout\Helper\ExpressRedirect $expressRedirectHelper
55  ) {
56  $this->_persistentSession = $persistentSession;
57  $this->_customerSession = $customerSession;
58  $this->_url = $url;
59  $this->messageManager = $messageManager;
60  $this->_expressRedirectHelper = $expressRedirectHelper;
61  }
62 
69  public function execute(\Magento\Framework\Event\Observer $observer)
70  {
71  if (!($this->_persistentSession->isPersistent() && !$this->_customerSession->isLoggedIn())) {
72  return;
73  }
74 
76  $controllerAction = $observer->getEvent()->getControllerAction();
77  if (!$controllerAction ||
78  !$controllerAction instanceof \Magento\Checkout\Controller\Express\RedirectLoginInterface ||
79  $controllerAction->getRedirectActionName() != $controllerAction->getRequest()->getActionName()
80  ) {
81  return;
82  }
83 
84  $this->messageManager->addNotice(__('To check out, please sign in using your email address.'));
85  $customerBeforeAuthUrl = $this->_url->getUrl('persistent/index/expressCheckout');
86 
87  $this->_expressRedirectHelper->redirectLogin($controllerAction, $customerBeforeAuthUrl);
88  }
89 }
__()
Definition: __.php:13
$persistentSession
Definition: persistent.php:11
__construct(\Magento\Persistent\Helper\Session $persistentSession, \Magento\Customer\Model\Session $customerSession, \Magento\Framework\UrlInterface $url, \Magento\Framework\Message\ManagerInterface $messageManager, \Magento\Checkout\Helper\ExpressRedirect $expressRedirectHelper)