1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Controller;
/**
* Sets up session for setup/index.php/session/prolong or redirects to error page
*/
class Session extends \Zend\Mvc\Controller\AbstractActionController
{
/**
* @var \Zend\ServiceManager\ServiceManager
*/
private $serviceManager;
/**
* @var \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
*/
private $objectManagerProvider;
/**
* @param \Zend\ServiceManager\ServiceManager $serviceManager
* @param \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
*/
public function __construct(
\Zend\ServiceManager\ServiceManager $serviceManager,
\Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
) {
$this->serviceManager = $serviceManager;
$this->objectManagerProvider = $objectManagerProvider;
}
/**
* No index action, return 404 error page
*
* @return \Zend\View\Model\ViewModel|\Zend\Http\Response
*/
public function indexAction()
{
$view = new \Zend\View\Model\ViewModel();
$view->setTemplate('/error/404.phtml');
$this->getResponse()->setStatusCode(\Zend\Http\Response::STATUS_CODE_404);
return $view;
}
/**
* Prolong session
*
* @return string
*/
public function prolongAction()
{
try {
if ($this->serviceManager->get(\Magento\Framework\App\DeploymentConfig::class)->isAvailable()) {
$objectManager = $this->objectManagerProvider->get();
/* @var \Magento\Backend\Model\Auth\Session $session */
$session = $objectManager->get(\Magento\Backend\Model\Auth\Session::class);
// check if session was already set in \Magento\Setup\Mvc\Bootstrap\InitParamListener::authPreDispatch
if (!$session->isSessionExists()) {
/** @var \Magento\Framework\App\State $adminAppState */
$adminAppState = $objectManager->get(\Magento\Framework\App\State::class);
$adminAppState->setAreaCode(\Magento\Framework\App\Area::AREA_ADMINHTML);
$sessionConfig = $objectManager->get(\Magento\Backend\Model\Session\AdminConfig::class);
/** @var \Magento\Backend\Model\Url $backendUrl */
$backendUrl = $objectManager->get(\Magento\Backend\Model\Url::class);
$urlPath = parse_url($backendUrl->getBaseUrl(), PHP_URL_PATH);
$cookiePath = $urlPath . 'setup';
$sessionConfig->setCookiePath($cookiePath);
/* @var \Magento\Backend\Model\Auth\Session $session */
$session = $objectManager->create(
\Magento\Backend\Model\Auth\Session::class,
[
'sessionConfig' => $sessionConfig,
'appState' => $adminAppState
]
);
}
$session->prolong();
return new \Zend\View\Model\JsonModel(['success' => true]);
}
} catch (\Exception $e) {
}
return new \Zend\View\Model\JsonModel(['success' => false]);
}
/**
* Unlogin action, return 401 error page
*
* @return \Zend\View\Model\ViewModel|\Zend\Http\Response
*/
public function unloginAction()
{
$view = new \Zend\View\Model\ViewModel();
$view->setTemplate('/error/401.phtml');
$this->getResponse()->setStatusCode(\Zend\Http\Response::STATUS_CODE_401);
return $view;
}
}