Merge pull request #17450 from nextcloud/fix/17368/odd-group-numbers

hide strange Everyone and Disabled group numbers with LDAP
This commit is contained in:
blizzz 2019-10-21 11:53:44 +02:00 committed by GitHub
commit 75ecae28e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 52 additions and 39 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -184,31 +184,38 @@ class UsersController extends Controller {
});
}
if ($this->isAdmin) {
$disabledUsers = $isLDAPUsed ? -1 : $this->userManager->countDisabledUsers();
$userCount = $isLDAPUsed ? 0 : array_reduce($this->userManager->countUsers(), function($v, $w) {
return $v + (int)$w;
}, 0);
} else {
// User is subadmin !
// Map group list to names to retrieve the countDisabledUsersOfGroups
$userGroups = $this->groupManager->getUserGroups($user);
$groupsNames = [];
$userCount = 0;
$disabledUsers = -1;
$userCount = 0;
foreach($groups as $key => $group) {
// $userCount += (int)$group['usercount'];
array_push($groupsNames, $group['name']);
// we prevent subadmins from looking up themselves
// so we lower the count of the groups he belongs to
if (array_key_exists($group['id'], $userGroups)) {
$groups[$key]['usercount']--;
$userCount = -1; // we also lower from one the total count
}
};
$userCount += $isLDAPUsed ? 0 : $this->userManager->countUsersOfGroups($groupsInfo->getGroups());
$disabledUsers = $isLDAPUsed ? -1 : $this->userManager->countDisabledUsersOfGroups($groupsNames);
if(!$isLDAPUsed) {
if ($this->isAdmin) {
$disabledUsers = $this->userManager->countDisabledUsers();
$userCount = array_reduce($this->userManager->countUsers(), function($v, $w) {
return $v + (int)$w;
}, 0);
} else {
// User is subadmin !
// Map group list to names to retrieve the countDisabledUsersOfGroups
$userGroups = $this->groupManager->getUserGroups($user);
$groupsNames = [];
foreach($groups as $key => $group) {
// $userCount += (int)$group['usercount'];
array_push($groupsNames, $group['name']);
// we prevent subadmins from looking up themselves
// so we lower the count of the groups he belongs to
if (array_key_exists($group['id'], $userGroups)) {
$groups[$key]['usercount']--;
$userCount -= 1; // we also lower from one the total count
}
};
$userCount += $this->userManager->countUsersOfGroups($groupsInfo->getGroups());
$disabledUsers = $this->userManager->countDisabledUsersOfGroups($groupsNames);
}
$userCount -= $disabledUsers;
}
$disabledUsersGroup = [
'id' => 'disabled',
'name' => 'Disabled users',
@ -237,7 +244,7 @@ class UsersController extends Controller {
$serverData['isAdmin'] = $this->isAdmin;
$serverData['sortGroups'] = $sortGroupsBy;
$serverData['quotaPreset'] = $quotaPreset;
$serverData['userCount'] = $userCount - $disabledUsers;
$serverData['userCount'] = $userCount;
$serverData['languages'] = $languages;
$serverData['defaultLanguage'] = $this->config->getSystemValue('default_language', 'en');
// Settings

View File

@ -98,7 +98,7 @@ const mutations = {
let group = state.groups.find(groupSearch => groupSearch.id === gid)
let user = state.users.find(user => user.id === userid)
// increase count if user is enabled
if (group && user.enabled) {
if (group && user.enabled && state.userCount > 0) {
group.usercount++
}
let groups = user.groups
@ -109,7 +109,7 @@ const mutations = {
let group = state.groups.find(groupSearch => groupSearch.id === gid)
let user = state.users.find(user => user.id === userid)
// lower count if user is enabled
if (group && user.enabled) {
if (group && user.enabled && state.userCount > 0) {
group.usercount--
}
let groups = user.groups
@ -135,12 +135,14 @@ const mutations = {
let user = state.users.find(user => user.id === userid)
user.enabled = enabled
// increment or not
state.groups.find(group => group.id === 'disabled').usercount += enabled ? -1 : 1
state.userCount += enabled ? 1 : -1
user.groups.forEach(group => {
// Increment disabled count
state.groups.find(groupSearch => groupSearch.id === group).disabled += enabled ? -1 : 1
})
if (state.userCount > 0) {
state.groups.find(group => group.id === 'disabled').usercount += enabled ? -1 : 1
state.userCount += enabled ? 1 : -1
user.groups.forEach(group => {
// Increment disabled count
state.groups.find(groupSearch => groupSearch.id === group).disabled += enabled ? -1 : 1
})
}
},
setUserData(state, { userid, key, value }) {
if (key === 'quota') {

View File

@ -283,6 +283,10 @@ export default {
|| disabledGroup.utils.counter === -1) // add disabled if ldap enabled
) {
groups.unshift(disabledGroup)
if (disabledGroup.utils.counter === -1) {
// hides the counter instead of showing -1
delete disabledGroup.utils.counter
}
}
}