Skip to content

Commit 2e35c2b

Browse files
MAGETWO-64317: POST request to /setup/index.php/session/prolong returns successful json
1 parent 86d67e4 commit 2e35c2b

File tree

2 files changed

+44
-6
lines changed

2 files changed

+44
-6
lines changed

setup/src/Magento/Setup/Mvc/Bootstrap/InitParamListener.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ class InitParamListener implements ListenerAggregateInterface, FactoryInterface
4747
* @var array
4848
*/
4949
private $controllersToSkip = [
50-
\Magento\Setup\Controller\Session::class,
51-
\Magento\Setup\Controller\Success::class
50+
\Magento\Setup\Controller\Session::class => ['index', 'unlogin'],
51+
\Magento\Setup\Controller\Success::class => ['index']
5252
];
5353

5454
/**
@@ -110,8 +110,12 @@ public function authPreDispatch($event)
110110
/** @var RouteMatch $routeMatch */
111111
$routeMatch = $event->getRouteMatch();
112112
$controller = $routeMatch->getParam('controller');
113+
$action = $routeMatch->getParam('action');
113114

114-
if (!in_array($controller, $this->controllersToSkip)) {
115+
$skipCheck = array_key_exists($controller, $this->controllersToSkip)
116+
&& in_array($action, $this->controllersToSkip[$controller]);
117+
118+
if (!$skipCheck) {
115119
/** @var Application $application */
116120
$application = $event->getApplication();
117121
$serviceManager = $application->getServiceManager();

setup/src/Magento/Setup/Test/Unit/Mvc/Bootstrap/InitParamListenerTest.php

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,12 @@ public function testAuthPreDispatch()
302302
->disableOriginalConstructor()
303303
->getMock();
304304

305-
$routeMatchMock->expects($this->once())
305+
$routeMatchMock->expects($this->exactly(2))
306306
->method('getParam')
307-
->with('controller')
308-
->willReturn('testController');
307+
->willReturnMap([
308+
['controller', null, 'testController'],
309+
['action', null, 'testAction']
310+
]);
309311
$eventMock->expects($this->once())
310312
->method('getRouteMatch')
311313
->willReturn($routeMatchMock);
@@ -403,4 +405,36 @@ public function testAuthPreDispatch()
403405
$responseMock
404406
);
405407
}
408+
409+
public function testAuthPreDispatchSkip()
410+
{
411+
$eventMock = $this->getMockBuilder(\Zend\Mvc\MvcEvent::class)
412+
->disableOriginalConstructor()
413+
->getMock();
414+
$routeMatchMock = $this->getMockBuilder(\Zend\Mvc\Router\Http\RouteMatch::class)
415+
->disableOriginalConstructor()
416+
->getMock();
417+
$deploymentConfigMock = $this->getMockBuilder(\Magento\Framework\App\DeploymentConfig::class)
418+
->disableOriginalConstructor()
419+
->getMock();
420+
421+
$deploymentConfigMock->expects($this->never())
422+
->method('isAvailable');
423+
$routeMatchMock->expects($this->exactly(2))
424+
->method('getParam')
425+
->willReturnMap([
426+
['controller', null, \Magento\Setup\Controller\Session::class],
427+
['action', null, 'unlogin']
428+
]);
429+
$eventMock->expects($this->once())
430+
->method('getRouteMatch')
431+
->willReturn($routeMatchMock);
432+
$eventMock->expects($this->never())
433+
->method('getApplication');
434+
435+
$this->assertSame(
436+
$this->listener->authPreDispatch($eventMock),
437+
false
438+
);
439+
}
406440
}

0 commit comments

Comments
 (0)