Browse Source

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

hide strange Everyone and Disabled group numbers with LDAP
tags/v18.0.0beta1
blizzz 4 years ago
parent
commit
75ecae28e6
No account linked to committer's email address

+ 2
- 2
apps/settings/js/vue-6.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-6.js.map
File diff suppressed because it is too large
View File


+ 3
- 3
apps/settings/js/vue-settings-apps-users-management.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-apps-users-management.js.map
File diff suppressed because it is too large
View File


+ 32
- 25
apps/settings/lib/Controller/UsersController.php 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;

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);
$disabledUsers = -1;
$userCount = 0;

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

+ 10
- 8
apps/settings/src/store/users.js 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') {

+ 4
- 0
apps/settings/src/views/Users.vue 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
}
}
}


Loading…
Cancel
Save