injectFn(function (IManager $encryptionManager) use ($context): void { if (!($encryptionManager instanceof \OC\Encryption\Manager)) { return; } if (!$encryptionManager->isReady()) { return; } $context->injectFn($this->registerEncryptionModule(...)); $context->injectFn($this->registerHooks(...)); $context->injectFn($this->setUp(...)); }); } public function setUp(IManager $encryptionManager) { if ($encryptionManager->isEnabled()) { /** @var Setup $setup */ $setup = $this->getContainer()->query(Setup::class); $setup->setupSystem(); } } /** * register hooks */ public function registerHooks(IConfig $config) { if (!$config->getSystemValueBool('maintenance')) { $container = $this->getContainer(); $server = $container->getServer(); // Register our hooks and fire them. $hookManager = new HookManager(); $hookManager->registerHook([ new UserHooks($container->query(KeyManager::class), $server->getUserManager(), $server->get(LoggerInterface::class), $container->query(Setup::class), $server->getUserSession(), $container->query(Util::class), $container->query(Session::class), $container->query(Crypt::class), $container->query(Recovery::class)) ]); $hookManager->fireHooks(); } else { // Logout user if we are in maintenance to force re-login $this->getContainer()->getServer()->getUserSession()->logout(); } } public function registerEncryptionModule(IManager $encryptionManager) { $container = $this->getContainer(); $encryptionManager->registerEncryptionModule( Encryption::ID, Encryption::DISPLAY_NAME, function () use ($container) { return new Encryption( $container->query(Crypt::class), $container->query(KeyManager::class), $container->query(Util::class), $container->query(Session::class), $container->query(EncryptAll::class), $container->query(DecryptAll::class), $container->getServer()->get(LoggerInterface::class), $container->getServer()->getL10N($container->getAppName()) ); }); } }