diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php deleted file mode 100644 index 93a4253bd4..0000000000 --- a/apps/user_ldap/appinfo/app.php +++ /dev/null @@ -1,64 +0,0 @@ - - * @author Christoph Wurst - * @author Dominik Schmidt - * @author Joas Schilling - * @author Juan Pablo Villafáñez - * @author Morris Jobke - * @author Roeland Jago Douma - * @author Vinicius Cubas Brand - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License, version 3, - * along with this program. If not, see - * - */ - -$app = \OC::$server->query(\OCA\User_LDAP\AppInfo\Application::class); - -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); -$configPrefixes = $helper->getServerConfigurationPrefixes(true); -if (count($configPrefixes) > 0) { - $ldapWrapper = new OCA\User_LDAP\LDAP(); - $ocConfig = \OC::$server->getConfig(); - $notificationManager = \OC::$server->getNotificationManager(); - $notificationManager->registerNotifierService(\OCA\User_LDAP\Notification\Notifier::class); - $userSession = \OC::$server->getUserSession(); - - $userPluginManager = \OC::$server->query(\OCA\User_LDAP\UserPluginManager::class); - $groupPluginManager = \OC::$server->query(\OCA\User_LDAP\GroupPluginManager::class); - - $userBackend = new OCA\User_LDAP\User_Proxy( - $configPrefixes, $ldapWrapper, $ocConfig, $notificationManager, $userSession, $userPluginManager - ); - $groupBackend = new OCA\User_LDAP\Group_Proxy($configPrefixes, $ldapWrapper, $groupPluginManager); - // register user backend - OC_User::useBackend($userBackend); - - // Hook to allow plugins to work on registered backends - OC::$server->getEventDispatcher()->dispatch('OCA\\User_LDAP\\User\\User::postLDAPBackendAdded'); - - \OC::$server->getGroupManager()->addBackend($groupBackend); - - $app->registerBackendDependents(); -} - -\OCP\Util::connectHook( - '\OCA\Files_Sharing\API\Server2Server', - 'preLoginNameUsedAsUserName', - '\OCA\User_LDAP\Helper', - 'loginName2UserName' -); diff --git a/apps/user_ldap/lib/AppInfo/Application.php b/apps/user_ldap/lib/AppInfo/Application.php index 6e5b73a9be..ddf40a13d3 100644 --- a/apps/user_ldap/lib/AppInfo/Application.php +++ b/apps/user_ldap/lib/AppInfo/Application.php @@ -28,14 +28,23 @@ namespace OCA\User_LDAP\AppInfo; use OCA\Files_External\Service\BackendService; use OCA\User_LDAP\Controller\RenewPasswordController; +use OCA\User_LDAP\Group_Proxy; +use OCA\User_LDAP\GroupPluginManager; use OCA\User_LDAP\Handler\ExtStorageConfigHandler; +use OCA\User_LDAP\Helper; use OCA\User_LDAP\ILDAPWrapper; use OCA\User_LDAP\LDAP; +use OCA\User_LDAP\Notification\Notifier; +use OCA\User_LDAP\User_Proxy; +use OCA\User_LDAP\UserPluginManager; use OCP\AppFramework\App; +use OCP\AppFramework\Bootstrap\IBootContext; +use OCP\AppFramework\Bootstrap\IBootstrap; +use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\AppFramework\IAppContainer; use OCP\IL10N; -class Application extends App { +class Application extends App implements IBootstrap { public function __construct() { parent::__construct('user_ldap'); $container = $this->getContainer(); @@ -63,15 +72,55 @@ class Application extends App { }); } - public function registerBackendDependents() { - $container = $this->getContainer(); + public function register(IRegistrationContext $context): void { + } - $container->getServer()->getEventDispatcher()->addListener( + public function boot(IBootContext $context): void { + $server = $context->getServerContainer(); + $config = $server->getConfig(); + + $helper = new Helper($config); + $configPrefixes = $helper->getServerConfigurationPrefixes(true); + if (count($configPrefixes) > 0) { + $ldapWrapper = new LDAP(); + + $notificationManager = $server->getNotificationManager(); + $notificationManager->registerNotifierService(Notifier::class); + $userSession = $server->getUserSession(); + + $userPluginManager = $server->query(UserPluginManager::class); + $groupPluginManager = $server->query(GroupPluginManager::class); + + $userBackend = new User_Proxy( + $configPrefixes, $ldapWrapper, $config, $notificationManager, $userSession, $userPluginManager + ); + $groupBackend = new Group_Proxy($configPrefixes, $ldapWrapper, $groupPluginManager); + // register user backend + \OC_User::useBackend($userBackend); + + // Hook to allow plugins to work on registered backends + $server->getEventDispatcher()->dispatch('OCA\\User_LDAP\\User\\User::postLDAPBackendAdded'); + + $server->getGroupManager()->addBackend($groupBackend); + + $this->registerBackendDependents($context->getAppContainer()); + } + + \OCP\Util::connectHook( + '\OCA\Files_Sharing\API\Server2Server', + 'preLoginNameUsedAsUserName', + '\OCA\User_LDAP\Helper', + 'loginName2UserName' + ); + } + + public function registerBackendDependents(IAppContainer $appContainer) { + $appContainer->getServer()->getEventDispatcher()->addListener( 'OCA\\Files_External::loadAdditionalBackends', - function () use ($container) { - $storagesBackendService = $container->query(BackendService::class); - $storagesBackendService->registerConfigHandler('home', function () use ($container) { - return $container->query(ExtStorageConfigHandler::class); + function () use ($appContainer) { + $storagesBackendService = $appContainer->query(BackendService::class); + $storagesBackendService->registerConfigHandler('home', function () use ($appContainer) { + return $appContainer->query(ExtStorageConfigHandler::class); }); } );