aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <DeepDiver1975@users.noreply.github.com>2016-04-19 15:56:47 +0200
committerThomas Müller <DeepDiver1975@users.noreply.github.com>2016-04-19 15:56:47 +0200
commit5b2ef92eb2931804057596c4ce9bac1920c4e5de (patch)
treea2706582c7b327f7b7ada20ff5a2a76bffc1465a /lib
parenta86fd873d6102d4defeb4a7e4d4882685753a006 (diff)
parent50e20e531ea942d900c50b510c8c13a6a1dd1465 (diff)
downloadnextcloud-server-5b2ef92eb2931804057596c4ce9bac1920c4e5de.tar.gz
nextcloud-server-5b2ef92eb2931804057596c4ce9bac1920c4e5de.zip
Merge pull request #24004 from owncloud/dont-transfer-files-to-not-ready-user
Introduce isReadyForUser and verify in file transfer ownership
Diffstat (limited to 'lib')
-rw-r--r--lib/private/encryption/manager.php19
-rw-r--r--lib/public/encryption/iencryptionmodule.php12
2 files changed, 31 insertions, 0 deletions
diff --git a/lib/private/encryption/manager.php b/lib/private/encryption/manager.php
index d45bbf07ee9..8714d161807 100644
--- a/lib/private/encryption/manager.php
+++ b/lib/private/encryption/manager.php
@@ -117,6 +117,25 @@ class Manager implements IManager {
}
/**
+ * @param string $user
+ */
+ public function isReadyForUser($user) {
+ if (!$this->isReady()) {
+ return false;
+ }
+
+ foreach ($this->getEncryptionModules() as $module) {
+ /** @var IEncryptionModule $m */
+ $m = call_user_func($module['callback']);
+ if (!$m->isReadyForUser($user)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
* Registers an callback function which must return an encryption module instance
*
* @param string $id
diff --git a/lib/public/encryption/iencryptionmodule.php b/lib/public/encryption/iencryptionmodule.php
index df30dd57cee..8d20a1ab57d 100644
--- a/lib/public/encryption/iencryptionmodule.php
+++ b/lib/public/encryption/iencryptionmodule.php
@@ -168,4 +168,16 @@ interface IEncryptionModule {
*/
public function prepareDecryptAll(InputInterface $input, OutputInterface $output, $user = '');
+ /**
+ * Check if the module is ready to be used by that specific user.
+ * In case a module is not ready - because e.g. key pairs have not been generated
+ * upon login this method can return false before any operation starts and might
+ * cause issues during operations.
+ *
+ * @param string $user
+ * @return boolean
+ * @since 9.1.0
+ */
+ public function isReadyForUser($user);
+
}