PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` * @author Christopher Schäpers * @author Georg Ehrke * @author Jakob Sack * @author Lukas Reschke * @author Robin Appelman * @author Thomas Müller * * @copyright Copyright (c) 2018, ownCloud GmbH * @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 * */ OC_JSON::checkSubAdminUser(); OCP\JSON::callCheck(); $username = (string)$_POST['username']; $group = (string)$_POST['group']; if ($username === OC_User::getUser() && $group === "admin" && OC_User::isAdminUser($username)) { $l = \OC::$server->getL10N('core'); OC_JSON::error(['data' => ['message' => $l->t('Admins can\'t remove themself from the admin group')]]); exit(); } $isUserAccessible = false; $isGroupAccessible = false; $currentUserObject = \OC::$server->getUserSession()->getUser(); $targetUserObject = \OC::$server->getUserManager()->get($username); $targetGroupObject = \OC::$server->getGroupManager()->get($group); if ($targetUserObject !== null && $currentUserObject !== null && $targetGroupObject !== null) { $isUserAccessible = \OC::$server->getGroupManager()->getSubAdmin()->isUserAccessible($currentUserObject, $targetUserObject); $isGroupAccessible = \OC::$server->getGroupManager()->getSubAdmin()->isSubAdminofGroup($currentUserObject, $targetGroupObject); } if (!OC_User::isAdminUser(OC_User::getUser()) && (!$isUserAccessible || !$isGroupAccessible)) { $l = \OC::$server->getL10N('core'); OC_JSON::error(['data' => ['message' => $l->t('Authentication error')]]); exit(); } if ($targetUserObject === null) { $l = \OC::$server->getL10N('core'); OC_JSON::error(['data' => ['message' => $l->t('Unknown user')]]); exit(); } if (!\OC::$server->getGroupManager()->groupExists($group)) { $targetGroupObject = \OC::$server->getGroupManager()->createGroup($group); } $l = \OC::$server->getL10N('settings'); $action = "add"; // Toggle group if (\OC::$server->getGroupManager()->inGroup($username, $group)) { $action = "remove"; $targetGroupObject->removeUser($targetUserObject); $usersInGroup = $targetGroupObject->getUsers(); $usersInGroup = \array_values(\array_map(function (\OCP\IUser $g) { return $g->getUID(); }, $usersInGroup)); } else { $targetGroupObject->addUser($targetUserObject); } if ($action === "add" && \OC::$server->getGroupManager()->isInGroup($username, $group)) { OC_JSON::success(["data" => ["username" => $username, "action" => $action, "groupname" => $group]]); } elseif ($action === "remove" && !\OC::$server->getGroupManager()->isInGroup($username, $group)) { OC_JSON::success(["data" => ["username" => $username, "action" => $action, "groupname" => $group]]); } else { OC_JSON::error(); }