_persistentSession = $persistentSession; $this->_customerSession = $customerSession; $this->_url = $url; $this->messageManager = $messageManager; $this->_expressRedirectHelper = $expressRedirectHelper; } /** * Prevent express checkout * * @param \Magento\Framework\Event\Observer $observer * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { if (!($this->_persistentSession->isPersistent() && !$this->_customerSession->isLoggedIn())) { return; } /** @var $controllerAction \Magento\Checkout\Controller\Express\RedirectLoginInterface*/ $controllerAction = $observer->getEvent()->getControllerAction(); if (!$controllerAction || !$controllerAction instanceof \Magento\Checkout\Controller\Express\RedirectLoginInterface || $controllerAction->getRedirectActionName() != $controllerAction->getRequest()->getActionName() ) { return; } $this->messageManager->addNotice(__('To check out, please sign in using your email address.')); $customerBeforeAuthUrl = $this->_url->getUrl('persistent/index/expressCheckout'); $this->_expressRedirectHelper->redirectLogin($controllerAction, $customerBeforeAuthUrl); } }