Skip to content

Commit cbaf8dc

Browse files
author
Eugene Tulika
committed
Merge remote-tracking branch 'mainline/develop' into RC1-bugfixes
2 parents 4c8440b + 976b720 commit cbaf8dc

File tree

18 files changed

+231
-53
lines changed

18 files changed

+231
-53
lines changed

app/code/Magento/Backend/Model/Session/AdminConfig.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public function __construct(
8484
$adminPath = $this->extractAdminPath();
8585
$this->setCookiePath($adminPath);
8686
$this->setName($sessionName);
87+
$this->setCookieSecure($this->_httpRequest->isSecure());
8788
}
8889

8990
/**

app/code/Magento/Backend/Test/Unit/Model/Session/AdminConfigTest.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,14 @@ public function testSetCookiePathNonDefault()
105105
}
106106

107107
/**
108-
* Test for setting session name for admin
109-
*
108+
* Test for setting session name and secure_cookie for admin
109+
* @dataProvider requestSecureDataProvider
110+
* @param $secureRequest
110111
*/
111-
public function testSetSessionNameByConstructor()
112+
public function testSetSessionSettingsByConstructor($secureRequest)
112113
{
113114
$sessionName = 'admin';
115+
$this->requestMock->expects($this->once())->method('isSecure')->willReturn($secureRequest);
114116

115117
$validatorMock = $this->getMockBuilder('Magento\Framework\Validator\ValidatorInterface')
116118
->disableOriginalConstructor()
@@ -136,5 +138,11 @@ public function testSetSessionNameByConstructor()
136138
]
137139
);
138140
$this->assertSame($sessionName, $adminConfig->getName());
141+
$this->assertSame($secureRequest, $adminConfig->getCookieSecure());
142+
}
143+
144+
public function requestSecureDataProvider()
145+
{
146+
return [[true], [false]];
139147
}
140148
}

lib/internal/Magento/Framework/Setup/BackupRollback.php

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ public function codeRollback($rollbackFile, $type = Factory::TYPE_FILESYSTEM)
197197
*/
198198
public function dbBackup($time)
199199
{
200-
$this->setAreaCode();
201200
/** @var \Magento\Framework\Backup\Db $dbBackup */
202201
$dbBackup = $this->objectManager->create('Magento\Framework\Backup\Db');
203202
$dbBackup->setRootDir($this->directoryList->getRoot());
@@ -233,7 +232,6 @@ public function dbRollback($rollbackFile)
233232
if (!$this->file->isExists($this->backupsDir . '/' . $rollbackFile)) {
234233
throw new LocalizedException(new Phrase('The rollback file does not exist.'));
235234
}
236-
$this->setAreaCode();
237235
/** @var \Magento\Framework\Backup\Db $dbRollback */
238236
$dbRollback = $this->objectManager->create('Magento\Framework\Backup\Db');
239237
$dbRollback->setRootDir($this->directoryList->getRoot());
@@ -253,22 +251,6 @@ public function dbRollback($rollbackFile)
253251
$this->log->logSuccess('DB rollback completed successfully.');
254252
}
255253

256-
/**
257-
* Sets area code to start a session for database backup and rollback
258-
*
259-
* @return void
260-
*/
261-
private function setAreaCode()
262-
{
263-
$areaCode = 'adminhtml';
264-
/** @var \Magento\Framework\App\State $appState */
265-
$appState = $this->objectManager->get('Magento\Framework\App\State');
266-
$appState->setAreaCode($areaCode);
267-
/** @var \Magento\Framework\ObjectManager\ConfigLoaderInterface $configLoader */
268-
$configLoader = $this->objectManager->get('Magento\Framework\ObjectManager\ConfigLoaderInterface');
269-
$this->objectManager->configure($configLoader->load($areaCode));
270-
}
271-
272254
/**
273255
* Get paths that should be excluded during iterative searches for locations for code backup only
274256
*

setup/pub/magento/setup/complete-backup.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ angular.module('complete-backup', ['ngStorage'])
1010
if ($localStorage.backupInfo) {
1111
$scope.backupInfoPassed = $localStorage.backupInfo;
1212
}
13-
13+
1414
$scope.type = $state.current.type;
1515

1616
$scope.progressCounter = BACKUPCOUNTER;
@@ -111,13 +111,20 @@ angular.module('complete-backup', ['ngStorage'])
111111
$scope.files = files;
112112
$scope.updateOnProcessed($scope.create.responseType);
113113
$scope.stopProgress();
114+
$scope.disableMeintenanceMode();
114115
},
115116
fail: function() {
116117
$scope.requestFailedHandler($scope.create);
118+
$scope.disableMeintenanceMode();
117119
}
118120
}
119121
};
120122

123+
$scope.disableMeintenanceMode = function() {
124+
$http.post('index.php/maintenance/index', {'disable' : true}).success(function(data) {
125+
});
126+
};
127+
121128
$scope.isCompleted = function() {
122129
return $scope.maintenance.processed
123130
&& $scope.check.processed

setup/src/Magento/Setup/Console/Command/BackupCommand.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
132132
$inputOptionProvided = true;
133133
}
134134
if ($input->getOption(self::INPUT_KEY_DB)) {
135+
$this->setAreaCode();
135136
$backupHandler->dbBackup($time);
136137
$inputOptionProvided = true;
137138
}
@@ -147,4 +148,20 @@ protected function execute(InputInterface $input, OutputInterface $output)
147148
$this->maintenanceMode->set(false);
148149
}
149150
}
151+
152+
/**
153+
* Sets area code to start a session for database backup and rollback
154+
*
155+
* @return void
156+
*/
157+
private function setAreaCode()
158+
{
159+
$areaCode = 'adminhtml';
160+
/** @var \Magento\Framework\App\State $appState */
161+
$appState = $this->objectManager->get('Magento\Framework\App\State');
162+
$appState->setAreaCode($areaCode);
163+
/** @var \Magento\Framework\ObjectManager\ConfigLoaderInterface $configLoader */
164+
$configLoader = $this->objectManager->get('Magento\Framework\ObjectManager\ConfigLoaderInterface');
165+
$this->objectManager->configure($configLoader->load($areaCode));
166+
}
150167
}

setup/src/Magento/Setup/Console/Command/ModuleUninstallCommand.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ private function takeBackup(InputInterface $input, OutputInterface $output)
280280
}
281281
if ($input->getOption(self::INPUT_KEY_BACKUP_DB)) {
282282
$dbBackup = $this->backupRollbackFactory->create($output);
283+
$this->setAreaCode();
283284
$dbBackup->dbBackup($time);
284285
}
285286
}
@@ -359,4 +360,20 @@ private function checkDependencies(array $modules)
359360
}
360361
return $messages;
361362
}
363+
364+
/**
365+
* Sets area code to start a session for database backup and rollback
366+
*
367+
* @return void
368+
*/
369+
private function setAreaCode()
370+
{
371+
$areaCode = 'adminhtml';
372+
/** @var \Magento\Framework\App\State $appState */
373+
$appState = $this->objectManager->get('Magento\Framework\App\State');
374+
$appState->setAreaCode($areaCode);
375+
/** @var \Magento\Framework\ObjectManager\ConfigLoaderInterface $configLoader */
376+
$configLoader = $this->objectManager->get('Magento\Framework\ObjectManager\ConfigLoaderInterface');
377+
$this->objectManager->configure($configLoader->load($areaCode));
378+
}
362379
}

setup/src/Magento/Setup/Console/Command/RollbackCommand.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ private function doRollback(InputInterface $input, OutputInterface $output)
157157
$inputOptionProvided = true;
158158
}
159159
if ($input->getOption(self::INPUT_KEY_DB_BACKUP_FILE)) {
160+
$this->setAreaCode();
160161
$rollbackHandler->dbRollback($input->getOption(self::INPUT_KEY_DB_BACKUP_FILE));
161162
$inputOptionProvided = true;
162163
}
@@ -166,4 +167,20 @@ private function doRollback(InputInterface $input, OutputInterface $output)
166167
);
167168
}
168169
}
170+
171+
/**
172+
* Sets area code to start a session for database backup and rollback
173+
*
174+
* @return void
175+
*/
176+
private function setAreaCode()
177+
{
178+
$areaCode = 'adminhtml';
179+
/** @var \Magento\Framework\App\State $appState */
180+
$appState = $this->objectManager->get('Magento\Framework\App\State');
181+
$appState->setAreaCode($areaCode);
182+
/** @var \Magento\Framework\ObjectManager\ConfigLoaderInterface $configLoader */
183+
$configLoader = $this->objectManager->get('Magento\Framework\ObjectManager\ConfigLoaderInterface');
184+
$this->objectManager->configure($configLoader->load($areaCode));
185+
}
169186
}

setup/src/Magento/Setup/Controller/Maintenance.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Magento\Framework\App\MaintenanceMode;
99
use Zend\Mvc\Controller\AbstractActionController;
1010
use Zend\View\Model\JsonModel;
11+
use Zend\Json\Json;
1112

1213
class Maintenance extends AbstractActionController
1314
{
@@ -36,7 +37,9 @@ public function __construct(MaintenanceMode $maintenanceMode)
3637
public function indexAction()
3738
{
3839
try {
39-
$this->maintenanceMode->set(true);
40+
$params = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
41+
$action = isset($params['disable']) && $params['disable'] ? false : true;
42+
$this->maintenanceMode->set($action);
4043
return new JsonModel(['responseType' => ResponseTypeInterface::RESPONSE_TYPE_SUCCESS]);
4144
} catch (\Exception $e) {
4245
return new JsonModel(

setup/src/Magento/Setup/Controller/Session.php

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,31 @@
66
namespace Magento\Setup\Controller;
77

88
use Zend\Mvc\Controller\AbstractActionController;
9-
use Magento\Setup\Model\ObjectManagerProvider;
9+
use Zend\View\Model\JsonModel;
1010
use Zend\View\Model\ViewModel;
1111

1212
class Session extends AbstractActionController
1313
{
1414
/**
15-
* @var \Magento\Framework\ObjectManagerInterface
15+
* @var \Zend\ServiceManager\ServiceManager
1616
*/
17-
private $objectManager;
17+
private $serviceManager;
1818

1919
/**
20+
* @var \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
21+
*/
22+
private $objectManagerProvider;
23+
24+
/**
25+
* @param \Zend\ServiceManager\ServiceManager $serviceManager
2026
* @param \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
2127
*/
2228
public function __construct(
23-
ObjectManagerProvider $objectManagerProvider
29+
\Zend\ServiceManager\ServiceManager $serviceManager,
30+
\Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider
2431
) {
25-
$this->objectManager = $objectManagerProvider->get();
32+
$this->serviceManager = $serviceManager;
33+
$this->objectManagerProvider = $objectManagerProvider;
2634
}
2735

2836
/**
@@ -33,27 +41,28 @@ public function __construct(
3341
public function prolongAction()
3442
{
3543
try {
36-
if ($this->objectManager->get('Magento\Framework\App\DeploymentConfig')->isAvailable()) {
44+
if ($this->serviceManager->get('Magento\Framework\App\DeploymentConfig')->isAvailable()) {
45+
$objectManager = $this->objectManagerProvider->get();
3746
/** @var \Magento\Framework\App\State $adminAppState */
38-
$adminAppState = $this->objectManager->get('Magento\Framework\App\State');
47+
$adminAppState = $objectManager->get('Magento\Framework\App\State');
3948
$adminAppState->setAreaCode(\Magento\Framework\App\Area::AREA_ADMIN);
4049

4150
/* @var \Magento\Backend\Model\Auth\Session $session */
42-
$sessionConfig = $this->objectManager->get('Magento\Backend\Model\Session\AdminConfig');
51+
$sessionConfig = $objectManager->get('Magento\Backend\Model\Session\AdminConfig');
4352
$sessionConfig->setCookiePath('/setup');
44-
$session = $this->objectManager->create(
53+
$session = $objectManager->create(
4554
'Magento\Backend\Model\Auth\Session',
4655
[
4756
'sessionConfig' => $sessionConfig,
4857
'appState' => $adminAppState
4958
]
5059
);
5160
$session->prolong();
52-
return \Zend_Json::encode(['success' => true]);
61+
return new JsonModel(['success' => true]);
5362
}
5463
} catch (\Exception $e) {
5564
}
56-
return \Zend_Json::encode(['success' => false]);
65+
return new JsonModel(['success' => false]);
5766
}
5867

5968
/**

setup/src/Magento/Setup/Model/Cron/AbstractJob.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Symfony\Component\Console\Output\OutputInterface;
99
use Magento\Framework\App\Cache;
10+
use Magento\Framework\ObjectManagerInterface;
1011

1112
/**
1213
* Abstract class for jobs run by setup:cron:run command
@@ -48,6 +49,11 @@ abstract class AbstractJob
4849
*/
4950
protected $status;
5051

52+
/**
53+
* @var ObjectManagerInterface
54+
*/
55+
protected $objectManager;
56+
5157

5258
/**
5359
* Constructor
@@ -70,9 +76,9 @@ public function __construct(
7076
$this->name = $name;
7177
$this->params = $params;
7278

73-
$objectManager = $objectManagerProvider->get();
74-
$this->cleanupFiles = $objectManager->get('Magento\Framework\App\State\CleanupFiles');
75-
$this->cache = $objectManager->get('Magento\Framework\App\Cache');
79+
$this->objectManager = $objectManagerProvider->get();
80+
$this->cleanupFiles = $this->objectManager->get('Magento\Framework\App\State\CleanupFiles');
81+
$this->cache = $this->objectManager->get('Magento\Framework\App\Cache');
7682
}
7783

7884
/**

setup/src/Magento/Setup/Model/Cron/JobComponentUninstall.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class JobComponentUninstall extends AbstractJob
3939
/**
4040
* @var \Magento\Framework\ObjectManagerInterface
4141
*/
42-
private $objectManager;
42+
protected $objectManager;
4343

4444
/**
4545
* @var \Magento\Setup\Model\Updater

setup/src/Magento/Setup/Model/Cron/JobDbRollback.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public function execute()
5454
$rollbackHandler = $this->backupRollbackFactory->create($this->output);
5555
$dbBackupFile = $this->params['backup_file_name'];
5656
if (!empty($dbBackupFile)) {
57+
$this->setAreaCode();
5758
$rollbackHandler->dbRollback(basename($dbBackupFile));
5859
} else {
5960
$this->status->add(
@@ -70,4 +71,20 @@ public function execute()
7071
);
7172
}
7273
}
74+
75+
/**
76+
* Sets area code to start a session for database backup and rollback
77+
*
78+
* @return void
79+
*/
80+
private function setAreaCode()
81+
{
82+
$areaCode = 'adminhtml';
83+
/** @var \Magento\Framework\App\State $appState */
84+
$appState = $this->objectManager->get('Magento\Framework\App\State');
85+
$appState->setAreaCode($areaCode);
86+
/** @var \Magento\Framework\ObjectManager\ConfigLoaderInterface $configLoader */
87+
$configLoader = $this->objectManager->get('Magento\Framework\ObjectManager\ConfigLoaderInterface');
88+
$this->objectManager->configure($configLoader->load($areaCode));
89+
}
7390
}

0 commit comments

Comments
 (0)