1
1
<?php
2
2
/**
3
- *
4
3
* Copyright © Magento, Inc. All rights reserved.
5
4
* See COPYING.txt for license details.
6
5
*/
7
6
namespace Magento \Backend \Controller \Adminhtml \Auth ;
8
7
8
+ use Magento \Backend \App \Area \FrontNameResolver ;
9
+ use Magento \Backend \Model \UrlFactory ;
9
10
use Magento \Framework \App \Action \HttpGetActionInterface as HttpGet ;
10
11
use Magento \Framework \App \Action \HttpPostActionInterface as HttpPost ;
12
+ use Magento \Framework \App \ObjectManager ;
11
13
12
14
/**
13
15
* @api
@@ -20,18 +22,34 @@ class Login extends \Magento\Backend\Controller\Adminhtml\Auth implements HttpGe
20
22
*/
21
23
protected $ resultPageFactory ;
22
24
25
+ /**
26
+ * @var FrontNameResolver
27
+ */
28
+ private $ frontNameResolver ;
29
+
30
+ /**
31
+ * @var UrlFactory
32
+ */
33
+ private $ backendUrlFactory ;
34
+
23
35
/**
24
36
* Constructor
25
37
*
26
38
* @param \Magento\Backend\App\Action\Context $context
27
39
* @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
40
+ * @param FrontNameResolver $frontNameResolver
41
+ * @param UrlFactory $backendUrlFactory
28
42
*/
29
43
public function __construct (
30
44
\Magento \Backend \App \Action \Context $ context ,
31
- \Magento \Framework \View \Result \PageFactory $ resultPageFactory
45
+ \Magento \Framework \View \Result \PageFactory $ resultPageFactory ,
46
+ FrontNameResolver $ frontNameResolver = null ,
47
+ UrlFactory $ backendUrlFactory = null
32
48
) {
33
49
$ this ->resultPageFactory = $ resultPageFactory ;
34
50
parent ::__construct ($ context );
51
+ $ this ->frontNameResolver = $ frontNameResolver ?? ObjectManager::getInstance ()->get (FrontNameResolver::class);
52
+ $ this ->backendUrlFactory = $ backendUrlFactory ?? ObjectManager::getInstance ()->get (UrlFactory::class);
35
53
}
36
54
37
55
/**
@@ -49,7 +67,8 @@ public function execute()
49
67
}
50
68
51
69
$ requestUrl = $ this ->getRequest ()->getUri ();
52
- if (!$ requestUrl ->isValid ()) {
70
+
71
+ if (!$ requestUrl ->isValid () || !$ this ->isValidBackendUri ()) {
53
72
return $ this ->getRedirect ($ this ->getUrl ('* ' ));
54
73
}
55
74
@@ -69,4 +88,18 @@ private function getRedirect($path)
69
88
$ resultRedirect ->setPath ($ path );
70
89
return $ resultRedirect ;
71
90
}
91
+
92
+ /**
93
+ * Verify if correct backend uri requested.
94
+ *
95
+ * @return bool
96
+ */
97
+ private function isValidBackendUri (): bool
98
+ {
99
+ $ backendFrontName = $ this ->frontNameResolver ->getFrontName ();
100
+ $ requestUri = $ this ->getRequest ()->getRequestUri ();
101
+ $ baseUrl = parse_url ($ this ->backendUrlFactory ->create ()->getBaseUrl (), PHP_URL_PATH );
102
+
103
+ return strpos ($ requestUri , $ baseUrl . $ backendFrontName ) === 0 ;
104
+ }
72
105
}
0 commit comments