diff --git a/dashboard/src/js/client.js b/dashboard/src/js/client.js index a1b269ad1..22f5641b7 100644 --- a/dashboard/src/js/client.js +++ b/dashboard/src/js/client.js @@ -1734,8 +1734,8 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; - Client.prototype.setGroups = function (userId, groupIds, callback) { - put('/api/v1/users/' + userId + '/groups', { groupIds: groupIds }, null, function (error, data, status) { + Client.prototype.setLocalGroups = function (userId, localGroupIds, callback) { + put('/api/v1/users/' + userId + '/groups', { groupIds: localGroupIds }, null, function (error, data, status) { if (error) return callback(error); if (status !== 204) return callback(new ClientError(status, data)); diff --git a/dashboard/src/views/users.html b/dashboard/src/views/users.html index 1b7c1f382..7f6086a08 100644 --- a/dashboard/src/views/users.html +++ b/dashboard/src/views/users.html @@ -56,7 +56,7 @@
{{ 'users.user.noGroups' | tr }}
- +
@@ -158,8 +158,10 @@
{{ 'users.user.noGroups' | tr }}
- -
{{ group.name }}
+ + + +

LDAP: {{ group.name }}
diff --git a/dashboard/src/views/users.js b/dashboard/src/views/users.js index 7ccfb7999..65fa72285 100644 --- a/dashboard/src/views/users.js +++ b/dashboard/src/views/users.js @@ -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();