Merge pull request #19148 from owncloud/issue-19113-stop-setting-single-user-in-constructor
Do not set single user in constructor of encryption occ commands
This commit is contained in:
commit
d2e701d74f
|
@ -75,14 +75,22 @@ class DecryptAll extends Command {
|
|||
$this->config = $config;
|
||||
$this->decryptAll = $decryptAll;
|
||||
$this->questionHelper = $questionHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set single user mode and disable the trashbin app
|
||||
*/
|
||||
protected function forceSingleUserAndTrashbin() {
|
||||
$this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin');
|
||||
$this->wasSingleUserModeEnabled = $this->config->getSystemValue('singleuser', false);
|
||||
$this->config->setSystemValue('singleuser', true);
|
||||
$this->appManager->disableApp('files_trashbin');
|
||||
}
|
||||
|
||||
public function __destruct() {
|
||||
/**
|
||||
* Reset the single user mode and re-enable the trashbin app
|
||||
*/
|
||||
protected function resetSingleUserAndTrashbin() {
|
||||
$this->config->setSystemValue('singleuser', $this->wasSingleUserModeEnabled);
|
||||
if ($this->wasTrashbinEnabled) {
|
||||
$this->appManager->enableApp('files_trashbin');
|
||||
|
@ -115,7 +123,6 @@ class DecryptAll extends Command {
|
|||
} else {
|
||||
$output->writeln('Server side encryption not enabled. Nothing to do.');
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
$output->writeln("\n");
|
||||
|
@ -126,12 +133,14 @@ class DecryptAll extends Command {
|
|||
$output->writeln('');
|
||||
$question = new ConfirmationQuestion('Do you really want to continue? (y/n) ', false);
|
||||
if ($this->questionHelper->ask($input, $output, $question)) {
|
||||
$this->forceSingleUserAndTrashbin();
|
||||
$user = $input->getArgument('user');
|
||||
$result = $this->decryptAll->decryptAll($input, $output, $user);
|
||||
if ($result === false) {
|
||||
$this->output->writeln(' aborted.');
|
||||
$output->writeln(' aborted.');
|
||||
$this->config->setAppValue('core', 'encryption_enabled', 'yes');
|
||||
}
|
||||
$this->resetSingleUserAndTrashbin();
|
||||
} else {
|
||||
$output->write('Enable server side encryption... ');
|
||||
$this->config->setAppValue('core', 'encryption_enabled', 'yes');
|
||||
|
@ -141,8 +150,9 @@ class DecryptAll extends Command {
|
|||
} catch (\Exception $e) {
|
||||
// enable server side encryption again if something went wrong
|
||||
$this->config->setAppValue('core', 'encryption_enabled', 'yes');
|
||||
$this->resetSingleUserAndTrashbin();
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,13 +67,22 @@ class EncryptAll extends Command {
|
|||
$this->encryptionManager = $encryptionManager;
|
||||
$this->config = $config;
|
||||
$this->questionHelper = $questionHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set single user mode and disable the trashbin app
|
||||
*/
|
||||
protected function forceSingleUserAndTrashbin() {
|
||||
$this->wasTrashbinEnabled = $this->appManager->isEnabledForUser('files_trashbin');
|
||||
$this->wasSingleUserModeEnabled = $this->config->getSystemValue('singleuser', false);
|
||||
$this->config->setSystemValue('singleuser', true);
|
||||
$this->appManager->disableApp('files_trashbin');
|
||||
}
|
||||
|
||||
public function __destruct() {
|
||||
/**
|
||||
* Reset the single user mode and re-enable the trashbin app
|
||||
*/
|
||||
protected function resetSingleUserAndTrashbin() {
|
||||
$this->config->setSystemValue('singleuser', $this->wasSingleUserModeEnabled);
|
||||
if ($this->wasTrashbinEnabled) {
|
||||
$this->appManager->enableApp('files_trashbin');
|
||||
|
@ -104,8 +113,17 @@ class EncryptAll extends Command {
|
|||
$output->writeln('');
|
||||
$question = new ConfirmationQuestion('Do you really want to continue? (y/n) ', false);
|
||||
if ($this->questionHelper->ask($input, $output, $question)) {
|
||||
$defaultModule = $this->encryptionManager->getEncryptionModule();
|
||||
$defaultModule->encryptAll($input, $output);
|
||||
$this->forceSingleUserAndTrashbin();
|
||||
|
||||
try {
|
||||
$defaultModule = $this->encryptionManager->getEncryptionModule();
|
||||
$defaultModule->encryptAll($input, $output);
|
||||
} catch (\Exception $ex) {
|
||||
$this->resetSingleUserAndTrashbin();
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
$this->resetSingleUserAndTrashbin();
|
||||
} else {
|
||||
$output->writeln('aborted');
|
||||
}
|
||||
|
|
|
@ -79,7 +79,8 @@ class DecryptAllTest extends TestCase {
|
|||
|
||||
}
|
||||
|
||||
public function testConstructDesctruct() {
|
||||
public function testSingleUserAndTrashbin() {
|
||||
|
||||
// on construct we enable single-user-mode and disable the trash bin
|
||||
$this->config->expects($this->at(1))
|
||||
->method('setSystemValue')
|
||||
|
@ -103,6 +104,7 @@ class DecryptAllTest extends TestCase {
|
|||
$this->decryptAll,
|
||||
$this->questionHelper
|
||||
);
|
||||
$this->invokePrivate($instance, 'forceSingleUserAndTrashbin');
|
||||
|
||||
$this->assertTrue(
|
||||
$this->invokePrivate($instance, 'wasTrashbinEnabled')
|
||||
|
@ -111,6 +113,7 @@ class DecryptAllTest extends TestCase {
|
|||
$this->assertFalse(
|
||||
$this->invokePrivate($instance, 'wasSingleUserModeEnabled')
|
||||
);
|
||||
$this->invokePrivate($instance, 'resetSingleUserAndTrashbin');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -187,7 +190,7 @@ class DecryptAllTest extends TestCase {
|
|||
->with('core', 'encryption_enabled', 'no');
|
||||
|
||||
// make sure that we enable encryption again after a exception was thrown
|
||||
$this->config->expects($this->at(1))
|
||||
$this->config->expects($this->at(3))
|
||||
->method('setAppValue')
|
||||
->with('core', 'encryption_enabled', 'yes');
|
||||
|
||||
|
|
|
@ -85,7 +85,9 @@ class EncryptAllTest extends TestCase {
|
|||
$this->config->expects($this->at(1))->method('setSystemValue')->with('singleuser', true);
|
||||
$this->config->expects($this->at(2))->method('setSystemValue')->with('singleuser', false);
|
||||
|
||||
new EncryptAll($this->encryptionManager, $this->appManager, $this->config, $this->questionHelper);
|
||||
$instance = new EncryptAll($this->encryptionManager, $this->appManager, $this->config, $this->questionHelper);
|
||||
$this->invokePrivate($instance, 'forceSingleUserAndTrashbin');
|
||||
$this->invokePrivate($instance, 'resetSingleUserAndTrashbin');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue