Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RequestPreprocessor.php
Go to the documentation of this file.
1 <?php
7 
9 {
13  protected $_scopeConfig;
14 
18  protected $_responseFactory;
19 
23  protected $_url;
24 
28  protected $_storeManager;
29 
33  private $baseUrlChecker;
34 
41  public function __construct(
42  \Magento\Store\Model\StoreManagerInterface $storeManager,
43  \Magento\Framework\UrlInterface $url,
44  \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
45  \Magento\Framework\App\ResponseFactory $responseFactory
46  ) {
47  $this->_storeManager = $storeManager;
48  $this->_url = $url;
49  $this->_scopeConfig = $scopeConfig;
50  $this->_responseFactory = $responseFactory;
51  }
52 
64  public function aroundDispatch(
65  \Magento\Framework\App\FrontController $subject,
66  \Closure $proceed,
67  \Magento\Framework\App\RequestInterface $request
68  ) {
69  if ($this->isHttpsRedirect($request) || (!$request->isPost() && $this->getBaseUrlChecker()->isEnabled())) {
70  $baseUrl = $this->_storeManager->getStore()->getBaseUrl(
71  \Magento\Framework\UrlInterface::URL_TYPE_WEB,
72  $this->_storeManager->getStore()->isCurrentlySecure()
73  );
74  if ($baseUrl) {
75  $uri = parse_url($baseUrl);
76  if (!$this->getBaseUrlChecker()->execute($uri, $request)) {
77  $redirectUrl = $this->_url->getRedirectUrl(
78  $this->_url->getUrl(ltrim($request->getPathInfo(), '/'), ['_nosid' => true])
79  );
80  $redirectCode = (int)$this->_scopeConfig->getValue(
81  'web/url/redirect_to_base',
83  ) !== 301 ? 302 : 301;
84 
85  $response = $this->_responseFactory->create();
86  $response->setRedirect($redirectUrl, $redirectCode);
87  $response->setNoCacheHeaders();
88  return $response;
89  }
90  }
91  }
92  $request->setDispatched(false);
93 
94  return $proceed($request);
95  }
96 
103  private function getBaseUrlChecker()
104  {
105  if ($this->baseUrlChecker === null) {
106  $this->baseUrlChecker = \Magento\Framework\App\ObjectManager::getInstance()->get(
107  \Magento\Store\Model\BaseUrlChecker::class
108  );
109  }
110 
111  return $this->baseUrlChecker;
112  }
113 
120  private function isHttpsRedirect(\Magento\Framework\App\RequestInterface $request)
121  {
122  $result = false;
123  if ($this->getBaseUrlChecker()->isFrontendSecure() && $request->isPost() && !$request->isSecure()) {
124  $result = true;
125  }
126 
127  return $result;
128  }
129 }
$response
Definition: 404.php:11
$storeManager
__construct(\Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Framework\UrlInterface $url, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\App\ResponseFactory $responseFactory)
aroundDispatch(\Magento\Framework\App\FrontController $subject, \Closure $proceed, \Magento\Framework\App\RequestInterface $request)