Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 32 additions & 25 deletions settings/Controller/UsersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -187,31 +187,38 @@ public function usersList() {
});
}

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',
Expand Down Expand Up @@ -240,7 +247,7 @@ public function usersList() {
$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
Expand Down
2 changes: 1 addition & 1 deletion settings/js/vue-7.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion settings/js/vue-7.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion settings/js/vue-settings-apps-users-management.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion settings/js/vue-settings-apps-users-management.js.map

Large diffs are not rendered by default.

20 changes: 11 additions & 9 deletions settings/src/store/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ 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) {
group.usercount++;
if (group && user.enabled && state.userCount > 0) {
group.usercount++;
}
let groups = user.groups;
groups.push(gid);
Expand All @@ -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;
Expand All @@ -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') {
Expand Down
4 changes: 4 additions & 0 deletions settings/src/views/Users.vue
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,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
}
}
}

Expand Down