diff options
Diffstat (limited to 'apps/user_ldap/ajax/clearMappings.php')
-rw-r--r-- | apps/user_ldap/ajax/clearMappings.php | 74 |
1 files changed, 40 insertions, 34 deletions
diff --git a/apps/user_ldap/ajax/clearMappings.php b/apps/user_ldap/ajax/clearMappings.php index 8f9cf981e57..c3b64f08a16 100644 --- a/apps/user_ldap/ajax/clearMappings.php +++ b/apps/user_ldap/ajax/clearMappings.php @@ -1,48 +1,54 @@ <?php + /** - * @author Arthur Schiwon <blizzz@owncloud.com> - * @author Christopher Schäpers <kondou@ts.unde.re> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @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 <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ - -use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\Mapping\GroupMapping; +use OCA\User_LDAP\Mapping\UserMapping; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\IDBConnection; +use OCP\IUserManager; +use OCP\Server; +use OCP\User\Events\BeforeUserIdUnassignedEvent; +use OCP\User\Events\UserIdUnassignedEvent; +use OCP\Util; // Check user and app status -OCP\JSON::checkAdminUser(); -OCP\JSON::checkAppEnabled('user_ldap'); -OCP\JSON::callCheck(); +\OC_JSON::checkAdminUser(); +\OC_JSON::checkAppEnabled('user_ldap'); +\OC_JSON::callCheck(); $subject = (string)$_POST['ldap_clear_mapping']; $mapping = null; -if($subject === 'user') { - $mapping = new UserMapping(\OC::$server->getDatabaseConnection()); -} else if($subject === 'group') { - $mapping = new GroupMapping(\OC::$server->getDatabaseConnection()); -} try { - if(is_null($mapping) || !$mapping->clear()) { - $l = \OC::$server->getL10N('user_ldap'); + if ($subject === 'user') { + $mapping = Server::get(UserMapping::class); + /** @var IEventDispatcher $dispatcher */ + $dispatcher = Server::get(IEventDispatcher::class); + $result = $mapping->clearCb( + function (string $uid) use ($dispatcher): void { + $dispatcher->dispatchTyped(new BeforeUserIdUnassignedEvent($uid)); + /** @psalm-suppress UndefinedInterfaceMethod For now we have to emit, will be removed when all hooks are removed */ + Server::get(IUserManager::class)->emit('\OC\User', 'preUnassignedUserId', [$uid]); + }, + function (string $uid) use ($dispatcher): void { + $dispatcher->dispatchTyped(new UserIdUnassignedEvent($uid)); + /** @psalm-suppress UndefinedInterfaceMethod For now we have to emit, will be removed when all hooks are removed */ + Server::get(IUserManager::class)->emit('\OC\User', 'postUnassignedUserId', [$uid]); + } + ); + } elseif ($subject === 'group') { + $mapping = new GroupMapping(Server::get(IDBConnection::class)); + $result = $mapping->clear(); + } + + if ($mapping === null || !$result) { + $l = Util::getL10N('user_ldap'); throw new \Exception($l->t('Failed to clear the mappings.')); } - OCP\JSON::success(); + \OC_JSON::success(); } catch (\Exception $e) { - OCP\JSON::error(array('message' => $e->getMessage())); + \OC_JSON::error(['message' => $e->getMessage()]); } |