Continued the upgrade to proper router link and added navigationItem router linkTo capability
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
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
|
||||
);
|
||||
}
|
||||
|
||||
}
|
|
@ -170,6 +170,7 @@ class UsersController extends Controller {
|
|||
public function usersListByGroup() {
|
||||
return $this->usersList();
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoCSRFRequired
|
||||
* @NoAdminRequired
|
||||
|
@ -243,7 +244,7 @@ class UsersController extends Controller {
|
|||
|
||||
$disabledUsers = $isLDAPUsed ? 0 : $this->userManager->countDisabledUsers();
|
||||
$disabledUsersGroup = [
|
||||
'id' => '_disabled',
|
||||
'id' => 'disabled',
|
||||
'name' => 'Disabled users',
|
||||
'usercount' => $disabledUsers
|
||||
];
|
||||
|
@ -261,10 +262,9 @@ class UsersController extends Controller {
|
|||
\OC::$server->getEventDispatcher()->dispatch('OC\Settings\Users::loadAdditionalScripts');
|
||||
|
||||
/* TOTAL USERS COUNT */
|
||||
function addition($v, $w) {
|
||||
return $v+$w;
|
||||
}
|
||||
$userCount = array_reduce($this->userManager->countUsers(), 'addition', 0);
|
||||
$userCount = array_reduce($this->userManager->countUsers(), function($v, $w) {
|
||||
return $v + (int)$w;
|
||||
}, 0);
|
||||
|
||||
/* LANGUAGES */
|
||||
$languages = $this->l10nFactory->getLanguages();
|
||||
|
|
|
@ -1263,13 +1263,13 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
|
|||
/* Hack to override the javascript orderBy */
|
||||
#usergrouplist > li {
|
||||
order: 4;
|
||||
&#_everyone {
|
||||
&#everyone {
|
||||
order:1;
|
||||
}
|
||||
&#admin {
|
||||
order:2;
|
||||
}
|
||||
&#_disabled {
|
||||
&#disabled {
|
||||
order:3;
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,11 +5,17 @@
|
|||
<div v-if="item.bullet" class="app-navigation-entry-bullet" :style="{ backgroundColor: item.bullet }"></div>
|
||||
|
||||
<!-- Main link -->
|
||||
<a :href="(item.href) ? item.href : '#' " @click="toggleCollapse" :class="item.icon" >
|
||||
<a v-if="item.href" :href="(item.href) ? item.href : '#' " @click="toggleCollapse" :class="item.icon" >
|
||||
<img v-if="item.iconUrl" :alt="item.text" :src="item.iconUrl">
|
||||
{{item.text}}
|
||||
</a>
|
||||
|
||||
<!-- Router link if specified. href OR router -->
|
||||
<router-link :to="item.router" v-else-if="item.router" :class="item.icon" >
|
||||
<img v-if="item.iconUrl" :alt="item.text" :src="item.iconUrl">
|
||||
{{item.text}}
|
||||
</router-link>
|
||||
|
||||
<!-- Popover, counter and button(s) -->
|
||||
<div v-if="item.utils" class="app-navigation-entry-utils">
|
||||
<ul>
|
||||
|
|
|
@ -156,11 +156,11 @@ export default {
|
|||
return this.$store.getters.getServerData;
|
||||
},
|
||||
filteredUsers() {
|
||||
if (this.$route.hash === '#group_disabled') {
|
||||
if (this.selectedGroup === 'disabled') {
|
||||
let disabledUsers = this.users.filter(user => user.enabled !== true);
|
||||
if (disabledUsers.length===0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {
|
||||
// disabled group is empty, redirection to all users
|
||||
window.location.hash = '#group_everyone';
|
||||
this.$router.push('users');
|
||||
this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');
|
||||
}
|
||||
return disabledUsers;
|
||||
|
@ -169,7 +169,7 @@ export default {
|
|||
},
|
||||
groups() {
|
||||
// data provided php side + remove the disabled group
|
||||
return this.$store.getters.getGroups.filter(group => group.id !== '_disabled');
|
||||
return this.$store.getters.getGroups.filter(group => group.id !== 'disabled');
|
||||
},
|
||||
subAdminsGroups() {
|
||||
// data provided php side
|
||||
|
|
|
@ -11,7 +11,7 @@ Vue.prototype.t = t;
|
|||
Vue.prototype.OC = OC;
|
||||
Vue.prototype.oc_userconfig = oc_userconfig;
|
||||
|
||||
window.app = new Vue({
|
||||
const app = new Vue({
|
||||
router,
|
||||
store,
|
||||
render: h => h(App)
|
||||
|
|
|
@ -15,14 +15,14 @@ Vue.use(Router);
|
|||
|
||||
export default new Router({
|
||||
mode: 'history',
|
||||
base: window.location.pathname,
|
||||
parseQuery: function(query) {console.log(query);},
|
||||
routes: [{
|
||||
path: '/settings/users',
|
||||
path: '(/index.php)?/settings/users',
|
||||
component: Users,
|
||||
props: true,
|
||||
name: 'users',
|
||||
children: [{
|
||||
path: ':selectedGroup',
|
||||
name: 'group',
|
||||
component: Users
|
||||
},
|
||||
]
|
||||
|
|
|
@ -37,6 +37,8 @@ export default {
|
|||
* .then((response) => {API success})
|
||||
* .catch((error) => {throw error;});
|
||||
* }).catch((error) => {requireAdmin OR API failure});
|
||||
*
|
||||
* @returns {Promise}
|
||||
*/
|
||||
requireAdmin() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
|
|
|
@ -90,7 +90,7 @@ const mutations = {
|
|||
enableDisableUser(state, { userid, enabled }) {
|
||||
state.users.find(user => user.id == userid).enabled = enabled;
|
||||
// increment or not
|
||||
state.groups.find(group => group.id == '_disabled').usercount += enabled ? -1 : 1;
|
||||
state.groups.find(group => group.id == 'disabled').usercount += enabled ? -1 : 1;
|
||||
state.userCount += enabled ? 1 : -1;
|
||||
console.log(enabled);
|
||||
},
|
||||
|
@ -144,7 +144,7 @@ const actions = {
|
|||
* @param {int} options.limit List number to return from offset
|
||||
* @param {string} options.search Search amongst users
|
||||
* @param {string} options.group Get users from group
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
getUsers(context, { offset, limit, search, group }) {
|
||||
search = typeof search === 'string' ? search : '';
|
||||
|
@ -179,7 +179,7 @@ const actions = {
|
|||
* @param {Object} options
|
||||
* @param {int} options.offset List offset to request
|
||||
* @param {int} options.limit List number to return from offset
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
getUsersFromList(context, { offset, limit, search }) {
|
||||
search = typeof search === 'string' ? search : '';
|
||||
|
@ -201,7 +201,7 @@ const actions = {
|
|||
* @param {Object} options
|
||||
* @param {int} options.offset List offset to request
|
||||
* @param {int} options.limit List number to return from offset
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
getUsersFromGroup(context, { groupid, offset, limit }) {
|
||||
return api.get(OC.linkToOCS(`cloud/users/${groupid}/details?offset=${offset}&limit=${limit}`, 2))
|
||||
|
@ -221,7 +221,7 @@ const actions = {
|
|||
*
|
||||
* @param {Object} context
|
||||
* @param {string} gid Group id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
addGroup(context, gid) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -236,7 +236,7 @@ const actions = {
|
|||
*
|
||||
* @param {Object} context
|
||||
* @param {string} gid Group id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
removeGroup(context, gid) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -253,7 +253,7 @@ const actions = {
|
|||
* @param {Object} options
|
||||
* @param {string} options.userid User id
|
||||
* @param {string} options.gid Group id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
addUserGroup(context, { userid, gid }) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -270,7 +270,7 @@ const actions = {
|
|||
* @param {Object} options
|
||||
* @param {string} options.userid User id
|
||||
* @param {string} options.gid Group id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
removeUserGroup(context, { userid, gid }) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -287,7 +287,7 @@ const actions = {
|
|||
* @param {Object} options
|
||||
* @param {string} options.userid User id
|
||||
* @param {string} options.gid Group id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
addUserSubAdmin(context, { userid, gid }) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -304,7 +304,7 @@ const actions = {
|
|||
* @param {Object} options
|
||||
* @param {string} options.userid User id
|
||||
* @param {string} options.gid Group id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
removeUserSubAdmin(context, { userid, gid }) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -319,7 +319,7 @@ const actions = {
|
|||
*
|
||||
* @param {Object} context
|
||||
* @param {string} userid User id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
deleteUser(context, { userid }) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -340,7 +340,7 @@ const actions = {
|
|||
* @param {string} options.groups User groups
|
||||
* @param {string} options.subadmin User subadmin groups
|
||||
* @param {string} options.quota User email
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
addUser({context, dispatch}, { userid, password, email, groups, subadmin, quota, language }) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -355,7 +355,7 @@ const actions = {
|
|||
*
|
||||
* @param {Object} context
|
||||
* @param {string} userid User id
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
addUserData(context, userid) {
|
||||
return api.requireAdmin().then((response) => {
|
||||
|
@ -371,7 +371,7 @@ const actions = {
|
|||
* @param {Object} options
|
||||
* @param {string} options.userid User id
|
||||
* @param {boolean} options.enabled User enablement status
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
enableDisableUser(context, { userid, enabled = true }) {
|
||||
let userStatus = enabled ? 'enable' : 'disable';
|
||||
|
@ -390,7 +390,7 @@ const actions = {
|
|||
* @param {string} options.userid User id
|
||||
* @param {string} options.key User field to edit
|
||||
* @param {string} options.value Value of the change
|
||||
* @returns {Promise}
|
||||
* @returns Promise
|
||||
*/
|
||||
setUserData(context, { userid, key, value }) {
|
||||
let allowedEmpty = ['email', 'displayname'];
|
||||
|
|
|
@ -129,17 +129,21 @@ export default {
|
|||
groups = groups.map(group => {
|
||||
let item = {};
|
||||
item.id = group.id.replace(' ', '_');
|
||||
item.classes = [];
|
||||
item.href = '#group'+group.id.replace(' ', '_');
|
||||
item.text = group.name;
|
||||
item.utils = {counter: group.usercount};
|
||||
if (item.id !== 'admin' && item.id !== '_disabled') {
|
||||
// add delete button
|
||||
item.classes = []; // empty classes, active will be set later
|
||||
item.router = { // router link to
|
||||
name: 'group',
|
||||
params: {selectedGroup: group.id}
|
||||
};
|
||||
item.text = group.name; // group name
|
||||
item.utils = {counter: group.usercount}; // users count
|
||||
|
||||
if (item.id !== 'admin' && item.id !== 'disabled') {
|
||||
// add delete button on real groups
|
||||
let self = this;
|
||||
item.utils.actions = [{
|
||||
icon: 'icon-delete',
|
||||
text: t('settings', 'Remove group'),
|
||||
action: function(){}
|
||||
action: () => {}
|
||||
}];
|
||||
};
|
||||
return item;
|
||||
|
@ -147,28 +151,29 @@ export default {
|
|||
|
||||
// Adjust data
|
||||
let adminGroup = groups.find(group => group.id == 'admin');
|
||||
let disabledGroup = groups.find(group => group.id == '_disabled');
|
||||
let disabledGroupIndex = groups.findIndex(group => group.id == 'disabled');
|
||||
let disabledGroup = groups[disabledGroupIndex];
|
||||
if (adminGroup.text) {
|
||||
adminGroup.text = t('settings', 'Admins'); // rename admin group
|
||||
}
|
||||
if (disabledGroup.text) {
|
||||
disabledGroup.text = t('settings', 'Disabled users'); // rename disabled group
|
||||
if (disabledGroup.utils.counter === 0) {
|
||||
groups.splice(groups.findIndex(group => group.id == '_disabled'), 1); // remove disabled if empty
|
||||
groups.splice(disabledGroupIndex, 1); // remove disabled if empty
|
||||
}
|
||||
}
|
||||
|
||||
// Add everyone group
|
||||
groups.unshift({
|
||||
id: '_everyone',
|
||||
id: 'everyone',
|
||||
classes: [],
|
||||
href:'#group_everyone',
|
||||
router: {name:'users'},
|
||||
text: t('settings', 'Everyone'),
|
||||
utils: {counter: this.userCount}
|
||||
});
|
||||
|
||||
// Set current group as active
|
||||
let activeGroup = groups.findIndex(group => group.href === this.$route.hash);
|
||||
let activeGroup = groups.findIndex(group => group.id === this.selectedGroup);
|
||||
if (activeGroup >= 0) {
|
||||
groups[activeGroup].classes.push('active');
|
||||
} else {
|
||||
|
|
|
@ -10,10 +10,8 @@
|
|||
* then serve this file as template and include your data into
|
||||
* the $serverData template variable
|
||||
*
|
||||
* $tmpl = new OC_Template('settings', 'settings', 'user');
|
||||
* $tmpl->assign('serverData', $serverData);
|
||||
* $tmpl->printPage();
|
||||
|
||||
* return new TemplateResponse('settings', 'settings', ['serverData' => $serverData]);
|
||||
*
|
||||
*/
|
||||
|
||||
script('settings', 'main');
|
||||
|
|
|
@ -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