Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>pull/8824/head
parent
2963fdc879
commit
45f1efe953
@ -1,157 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
||||
* |
||||
* @author Joas Schilling <coding@schilljs.com> |
||||
* @author Lukas Reschke <lukas@statuscode.ch> |
||||
* @author Morris Jobke <hey@morrisjobke.de> |
||||
* |
||||
* @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/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OC\Settings\Controller; |
||||
|
||||
use OC\AppFramework\Http; |
||||
use OC\Group\MetaData; |
||||
use OCP\AppFramework\Controller; |
||||
use OCP\AppFramework\Http\DataResponse; |
||||
use OCP\IGroup; |
||||
use OCP\IGroupManager; |
||||
use OCP\IL10N; |
||||
use OCP\IRequest; |
||||
use OCP\IUserSession; |
||||
|
||||
/** |
||||
* @package OC\Settings\Controller |
||||
*/ |
||||
class GroupsController extends Controller { |
||||
/** @var IGroupManager */ |
||||
private $groupManager; |
||||
/** @var IL10N */ |
||||
private $l10n; |
||||
/** @var IUserSession */ |
||||
private $userSession; |
||||
/** @var bool */ |
||||
private $isAdmin; |
||||
|
||||
/** |
||||
* @param string $appName |
||||
* @param IRequest $request |
||||
* @param IGroupManager $groupManager |
||||
* @param IUserSession $userSession |
||||
* @param bool $isAdmin |
||||
* @param IL10N $l10n |
||||
*/ |
||||
public function __construct($appName, |
||||
IRequest $request, |
||||
IGroupManager $groupManager, |
||||
IUserSession $userSession, |
||||
$isAdmin, |
||||
IL10N $l10n) { |
||||
parent::__construct($appName, $request); |
||||
$this->groupManager = $groupManager; |
||||
$this->userSession = $userSession; |
||||
$this->isAdmin = $isAdmin; |
||||
$this->l10n = $l10n; |
||||
} |
||||
|
||||
/** |
||||
* @NoAdminRequired |
||||
* |
||||
* @param string $pattern |
||||
* @param bool $filterGroups |
||||
* @param int $sortGroups |
||||
* @return DataResponse |
||||
*/ |
||||
public function index($pattern = '', $filterGroups = false, $sortGroups = MetaData::SORT_USERCOUNT) { |
||||
$groupPattern = $filterGroups ? $pattern : ''; |
||||
|
||||
$groupsInfo = new MetaData( |
||||
$this->userSession->getUser()->getUID(), |
||||
$this->isAdmin, |
||||
$this->groupManager, |
||||
$this->userSession |
||||
); |
||||
$groupsInfo->setSorting($sortGroups); |
||||
list($adminGroups, $groups) = $groupsInfo->get($groupPattern, $pattern); |
||||
|
||||
return new DataResponse( |
||||
array( |
||||
'data' => array('adminGroups' => $adminGroups, 'groups' => $groups) |
||||
) |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* @PasswordConfirmationRequired |
||||
* @param string $id |
||||
* @return DataResponse |
||||
*/ |
||||
public function create($id) { |
||||
if($this->groupManager->groupExists($id)) { |
||||
return new DataResponse( |
||||
array( |
||||
'message' => (string)$this->l10n->t('Group already exists.') |
||||
), |
||||
Http::STATUS_CONFLICT |
||||
); |
||||
} |
||||
$group = $this->groupManager->createGroup($id); |
||||
if($group instanceof IGroup) { |
||||
return new DataResponse(['groupname' => $group->getDisplayName()], Http::STATUS_CREATED); |
||||
} |
||||
|
||||
return new DataResponse( |
||||
array( |
||||
'status' => 'error', |
||||
'data' => array( |
||||
'message' => (string)$this->l10n->t('Unable to add group.') |
||||
) |
||||
), |
||||
Http::STATUS_FORBIDDEN |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* @PasswordConfirmationRequired |
||||
* @param string $id |
||||
* @return DataResponse |
||||
*/ |
||||
public function destroy($id) { |
||||
$group = $this->groupManager->get($id); |
||||
if ($group) { |
||||
if ($group->delete()) { |
||||
return new DataResponse( |
||||
array( |
||||
'status' => 'success', |
||||
'data' => ['groupname' => $group->getDisplayName()] |
||||
), |
||||
Http::STATUS_NO_CONTENT |
||||
); |
||||
} |
||||
} |
||||
return new DataResponse( |
||||
array( |
||||
'status' => 'error', |
||||
'data' => array( |
||||
'message' => (string)$this->l10n->t('Unable to delete group.') |
||||
), |
||||
), |
||||
Http::STATUS_FORBIDDEN |
||||
); |
||||
} |
||||
|
||||
} |
||||
File diff suppressed because one or more lines are too long
@ -1,156 +0,0 @@ |
||||
<?php |
||||
/** |
||||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
||||
* |
||||
* @author Arthur Schiwon <blizzz@arthur-schiwon.de> |
||||
* @author Bart Visscher <bartv@thisnet.nl> |
||||
* @author Clark Tomlinson <fallen013@gmail.com> |
||||
* @author Daniel Molkentin <daniel@molkentin.de> |
||||
* @author Georg Ehrke <oc.list@georgehrke.com> |
||||
* @author Jakob Sack <mail@jakobsack.de> |
||||
* @author Joas Schilling <coding@schilljs.com> |
||||
* @author Jörn Friedrich Dreyer <jfd@butonic.de> |
||||
* @author Lukas Reschke <lukas@statuscode.ch> |
||||
* @author Morris Jobke <hey@morrisjobke.de> |
||||
* @author Robin Appelman <robin@icewind.nl> |
||||
* @author Roeland Jago Douma <roeland@famdouma.nl> |
||||
* @author Stephan Peijnik <speijnik@anexia-it.com> |
||||
* @author Thomas Müller <thomas.mueller@tmit.eu> |
||||
* @author Thomas Pulzer <t.pulzer@kniel.de> |
||||
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> |
||||
* |
||||
* @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/> |
||||
* |
||||
*/ |
||||
|
||||
OC_Util::checkSubAdminUser(); |
||||
|
||||
\OC::$server->getNavigationManager()->setActiveEntry('core_users'); |
||||
|
||||
$userManager = \OC::$server->getUserManager(); |
||||
$groupManager = \OC::$server->getGroupManager(); |
||||
$appManager = \OC::$server->getAppManager(); |
||||
$config = \OC::$server->getConfig(); |
||||
$l10nFactory = \OC::$server->getL10NFactory(); |
||||
|
||||
/* SORT OPTION: SORT_USERCOUNT or SORT_GROUPNAME */ |
||||
$sortGroupsBy = \OC\Group\MetaData::SORT_USERCOUNT; |
||||
if ($config->getSystemValue('sort_groups_by_name', false)) { |
||||
$sortGroupsBy = \OC\Group\MetaData::SORT_GROUPNAME; |
||||
} else { |
||||
$isLDAPUsed = false; |
||||
if ($appManager->isEnabledForUser('user_ldap')) { |
||||
$isLDAPUsed = |
||||
$groupManager->isBackendUsed('\OCA\User_LDAP\Group_LDAP') |
||||
|| $groupManager->isBackendUsed('\OCA\User_LDAP\Group_Proxy'); |
||||
if ($isLDAPUsed) { |
||||
// LDAP user count can be slow, so we sort by group name here |
||||
$sortGroupsBy = \OC\Group\MetaData::SORT_GROUPNAME; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/* ENCRYPTION CONFIG */ |
||||
$isEncryptionEnabled = \OC::$server->getEncryptionManager()->isEnabled(); |
||||
$useMasterKey = $config->getAppValue('encryption', 'useMasterKey', true); |
||||
// If masterKey enabled, then you can change password. This is to avoid data loss! |
||||
$canChangePassword = ($isEncryptionEnabled && $useMasterKey) || $useMasterKey; |
||||
|
||||
|
||||
/* GROUPS */ |
||||
$uid = \OC_User::getUser(); |
||||
$isAdmin = \OC_User::isAdminUser($uid); |
||||
|
||||
$groupsInfo = new \OC\Group\MetaData( |
||||
$uid, |
||||
$isAdmin, |
||||
$groupManager, |
||||
\OC::$server->getUserSession() |
||||
); |
||||
|
||||
$groupsInfo->setSorting($sortGroupsBy); |
||||
list($adminGroup, $groups) = $groupsInfo->get(); |
||||
|
||||
if ($isAdmin) { |
||||
$subAdmins = \OC::$server->getGroupManager()->getSubAdmin()->getAllSubAdmins(); |
||||
// New class returns IUser[] so convert back |
||||
$result = []; |
||||
foreach ($subAdmins as $subAdmin) { |
||||
$result[] = [ |
||||
'gid' => $subAdmin['group']->getGID(), |
||||
'uid' => $subAdmin['user']->getUID(), |
||||
]; |
||||
} |
||||
$subAdmins = $result; |
||||
} else { |
||||
/* Retrieve group IDs from $groups array, so we can pass that information into OC_Group::displayNamesInGroups() */ |
||||
$gids = array(); |
||||
foreach($groups as $group) { |
||||
if (isset($group['id'])) { |
||||
$gids[] = $group['id']; |
||||
} |
||||
} |
||||
$subAdmins = false; |
||||
} |
||||
|
||||
$disabledUsers = $isLDAPUsed ? 0 : $userManager->countDisabledUsers(); |
||||
$disabledUsersGroup = [ |
||||
'id' => '_disabled', |
||||
'name' => 'Disabled users', |
||||
'usercount' => $disabledUsers |
||||
]; |
||||
$allGroups = array_merge_recursive($adminGroup, $groups); |
||||
|
||||
/* QUOTAS PRESETS */ |
||||
$quotaPreset = $config->getAppValue('files', 'quota_preset', '1 GB, 5 GB, 10 GB'); |
||||
$quotaPreset = explode(',', $quotaPreset); |
||||
foreach ($quotaPreset as &$preset) { |
||||
$preset = trim($preset); |
||||
} |
||||
$quotaPreset = array_diff($quotaPreset, array('default', 'none')); |
||||
$defaultQuota = $config->getAppValue('files', 'default_quota', 'none'); |
||||
|
||||
\OC::$server->getEventDispatcher()->dispatch('OC\Settings\Users::loadAdditionalScripts'); |
||||
|
||||
/* TOTAL USERS COUNT */ |
||||
function addition($v, $w) { |
||||
return $v+$w; |
||||
} |
||||
$userCount = array_reduce($userManager->countUsers(), 'addition', 0); |
||||
|
||||
/* LANGUAGES */ |
||||
$languages = $l10nFactory->getLanguages(); |
||||
|
||||
/* FINAL DATA */ |
||||
$serverData = array(); |
||||
// groups |
||||
$serverData['groups'] = array_merge_recursive($adminGroup, [$disabledUsersGroup], $groups); |
||||
$serverData['subadmingroups'] = $groups; |
||||
// Various data |
||||
$serverData['subadmins'] = $subAdmins; |
||||
$serverData['sortGroups'] = $sortGroupsBy; |
||||
$serverData['quotaPreset'] = $quotaPreset; |
||||
$serverData['userCount'] = $userCount-$disabledUsers; |
||||
$serverData['languages'] = $languages; |
||||
$serverData['defaultLanguage'] = $config->getSystemValue('default_language', 'en'); |
||||
// Settings |
||||
$serverData['defaultQuota'] = $defaultQuota; |
||||
$serverData['canChangePassword'] = $canChangePassword; |
||||
|
||||
// print template + vue + serve data |
||||
$tmpl = new OC_Template('settings', 'settings', 'user'); |
||||
$tmpl->assign('serverData', $serverData); |
||||
$tmpl->printPage(); |
||||
|
||||
Loading…
Reference in new issue