1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- /**
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Persistent\Observer;
- use Magento\Framework\Event\ObserverInterface;
- class PreventExpressCheckoutObserver implements ObserverInterface
- {
- /**
- * @var \Magento\Framework\Message\ManagerInterface
- */
- protected $messageManager;
- /**
- * Url model
- *
- * @var \Magento\Framework\UrlInterface
- */
- protected $_url;
- /**
- * Persistent session
- *
- * @var \Magento\Persistent\Helper\Session
- */
- protected $_persistentSession = null;
- /**
- * @var \Magento\Customer\Model\Session
- */
- protected $_customerSession;
- /**
- * @var \Magento\Checkout\Helper\ExpressRedirect
- */
- protected $_expressRedirectHelper;
- /**
- * @param \Magento\Persistent\Helper\Session $persistentSession
- * @param \Magento\Customer\Model\Session $customerSession
- * @param \Magento\Framework\UrlInterface $url
- * @param \Magento\Framework\Message\ManagerInterface $messageManager
- * @param \Magento\Checkout\Helper\ExpressRedirect $expressRedirectHelper
- */
- public function __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
- ) {
- $this->_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);
- }
- }
|