diff options
author | Thomas Müller <DeepDiver1975@users.noreply.github.com> | 2016-04-19 15:56:47 +0200 |
---|---|---|
committer | Thomas Müller <DeepDiver1975@users.noreply.github.com> | 2016-04-19 15:56:47 +0200 |
commit | 5b2ef92eb2931804057596c4ce9bac1920c4e5de (patch) | |
tree | a2706582c7b327f7b7ada20ff5a2a76bffc1465a /lib | |
parent | a86fd873d6102d4defeb4a7e4d4882685753a006 (diff) | |
parent | 50e20e531ea942d900c50b510c8c13a6a1dd1465 (diff) | |
download | nextcloud-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.php | 19 | ||||
-rw-r--r-- | lib/public/encryption/iencryptionmodule.php | 12 |
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); + } |