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();