summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-09-21 09:58:38 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2015-09-21 09:58:38 +0200
commitd2e701d74f42d0e18ad0adff78fa3f3ef757e65f (patch)
tree29f05b0defb8d6ae56de94d22b289a9fbfdf2494 /core
parent7b483dfcbef1d9b72f5cba96310cfa7fe501b112 (diff)
parent5472a5f455cfd6ff9ce956fa51be206789e608db (diff)
downloadnextcloud-server-d2e701d74f42d0e18ad0adff78fa3f3ef757e65f.tar.gz
nextcloud-server-d2e701d74f42d0e18ad0adff78fa3f3ef757e65f.zip
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
Diffstat (limited to 'core')
-rw-r--r--core/command/encryption/decryptall.php18
-rw-r--r--core/command/encryption/encryptall.php24
2 files changed, 35 insertions, 7 deletions
diff --git a/core/command/encryption/decryptall.php b/core/command/encryption/decryptall.php
index 696570b7ae6..c71ba5f04c7 100644
--- a/core/command/encryption/decryptall.php
+++ b/core/command/encryption/decryptall.php
@@ -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;
}
- }
+ }
}
diff --git a/core/command/encryption/encryptall.php b/core/command/encryption/encryptall.php
index 950ce5166d8..4ae6ae47836 100644
--- a/core/command/encryption/encryptall.php
+++ b/core/command/encryption/encryptall.php
@@ -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');
}