1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- /**
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\Checkout\Controller\Index;
- use Magento\Framework\App\Action\HttpGetActionInterface as HttpGetActionInterface;
- class Index extends \Magento\Checkout\Controller\Onepage implements HttpGetActionInterface
- {
- /**
- * Checkout page
- *
- * @return \Magento\Framework\Controller\ResultInterface
- */
- public function execute()
- {
- /** @var \Magento\Checkout\Helper\Data $checkoutHelper */
- $checkoutHelper = $this->_objectManager->get(\Magento\Checkout\Helper\Data::class);
- if (!$checkoutHelper->canOnepageCheckout()) {
- $this->messageManager->addErrorMessage(__('One-page checkout is turned off.'));
- return $this->resultRedirectFactory->create()->setPath('checkout/cart');
- }
- $quote = $this->getOnepage()->getQuote();
- if (!$quote->hasItems() || $quote->getHasError() || !$quote->validateMinimumAmount()) {
- return $this->resultRedirectFactory->create()->setPath('checkout/cart');
- }
- if (!$this->_customerSession->isLoggedIn() && !$checkoutHelper->isAllowedGuestCheckout($quote)) {
- $this->messageManager->addErrorMessage(__('Guest checkout is disabled.'));
- return $this->resultRedirectFactory->create()->setPath('checkout/cart');
- }
- // generate session ID only if connection is unsecure according to issues in session_regenerate_id function.
- // @see http://php.net/manual/en/function.session-regenerate-id.php
- if (!$this->isSecureRequest()) {
- $this->_customerSession->regenerateId();
- }
- $this->_objectManager->get(\Magento\Checkout\Model\Session::class)->setCartWasUpdated(false);
- $this->getOnepage()->initCheckout();
- $resultPage = $this->resultPageFactory->create();
- $resultPage->getConfig()->getTitle()->set(__('Checkout'));
- return $resultPage;
- }
- /**
- * Checks if current request uses SSL and referer also is secure.
- *
- * @return bool
- */
- private function isSecureRequest(): bool
- {
- $request = $this->getRequest();
- $referrer = $request->getHeader('referer');
- $secure = false;
- if ($referrer) {
- $scheme = parse_url($referrer, PHP_URL_SCHEME);
- $secure = $scheme === 'https';
- }
- return $secure && $request->isSecure();
- }
- }
|