groups: local groups can have remote and local users

This commit is contained in:
Girish Ramakrishnan
2024-02-28 16:42:17 +01:00
parent 50a069a7fa
commit 0d38e443d1
3 changed files with 21 additions and 16 deletions
+14 -11
View File
@@ -13,6 +13,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.users = []; // users of current page
$scope.allUsersById = [];
$scope.groups = [];
$scope.hasLocalGroups = false;
$scope.groupsById = { };
$scope.config = Client.getConfig();
$scope.userInfo = Client.getUserInfo();
@@ -270,7 +271,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
fallbackEmail: '',
username: '',
displayName: '',
selectedGroups: [],
selectedLocalGroups: [],
role: 'user',
sendInvite: false,
@@ -280,7 +281,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.userAdd.fallbackEmail = '';
$scope.userAdd.username = '';
$scope.userAdd.displayName = '';
$scope.userAdd.selectedGroups = [];
$scope.userAdd.selectedLocalGroups = [];
$scope.userAdd.role = 'user';
$scope.userAdd.sendInvite = false;
@@ -344,9 +345,9 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
}
}
var groupIds = $scope.userAdd.selectedGroups.map(function (g) { return g.id; });
var localGroupIds = $scope.userAdd.selectedLocalGroups.map(function (g) { return g.id; });
Client.setGroups(userId, groupIds, function (error) {
Client.setLocalGroups(userId, localGroupIds, function (error) {
$scope.userAdd.busy = false;
if (error) return console.error(error);
@@ -376,7 +377,8 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
displayName: '',
active: false,
source: '',
selectedGroups: [],
selectedLocalGroups: [],
externalGroups: [],
role: '',
show: function (userInfo) {
@@ -386,7 +388,8 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.userEdit.displayName = userInfo.displayName;
$scope.userEdit.fallbackEmail = userInfo.fallbackEmail;
$scope.userEdit.userInfo = userInfo;
$scope.userEdit.selectedGroups = userInfo.groupIds.map(function (gid) { return $scope.groupsById[gid]; });
$scope.userEdit.selectedLocalGroups = userInfo.groupIds.map(function (gid) { return $scope.groupsById[gid]; }).filter(function (g) { return g.source === ''; });
$scope.userEdit.externalGroups = userInfo.groupIds.map(function (gid) { return $scope.groupsById[gid]; }).filter(function (g) { return g.source !== ''; });
$scope.userEdit.active = userInfo.active;
$scope.userEdit.source = userInfo.source;
$scope.userEdit.role = userInfo.role;
@@ -422,11 +425,9 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
data.fallbackEmail = $scope.userEdit.fallbackEmail;
Client.updateUserProfile(userId, data, next);
},
function setGroups(next) {
if ($scope.config.ldapGroupsSynced) return next(); // cannot update user groups when syncing ldap groups
var groupIds = $scope.userEdit.selectedGroups.map(function (g) { return g.id; });
Client.setGroups(userId, groupIds, next);
function setLocalGroups(next) {
var localGroupIds = $scope.userEdit.selectedLocalGroups.map(function (g) { return g.id; });
Client.setLocalGroups(userId, localGroupIds, next);
}
], function (error) {
$scope.userEdit.busy = false;
@@ -846,8 +847,10 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
angular.copy(result, $scope.groups);
$scope.groupsById = { };
$scope.hasLocalGroups = false;
for (var i = 0; i < result.length; i++) {
$scope.groupsById[result[i].id] = result[i];
if (result[i].source === '') $scope.hasLocalGroups = true;
}
if (callback) callback();