aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
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);
+
}