diff --git a/src/js/client.js b/src/js/client.js
index 5f8176dc4..fc24328a8 100644
--- a/src/js/client.js
+++ b/src/js/client.js
@@ -406,6 +406,7 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout
// this._config.features.privateDockerRegistry = false;
// this._config.features.branding = true;
// this._config.features.support = true;
+ // this._config.features.directoryConfig = true;
this._configListener.forEach(function (callback) {
callback(that._config);
@@ -702,6 +703,24 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout
});
};
+ Client.prototype.setDirectoryConfig = function (config, callback) {
+ post('/api/v1/settings/directory_config', config, null, function (error, data, status) {
+ if (error) return callback(error);
+ if (status !== 200) return callback(new ClientError(status, data));
+
+ callback(null);
+ });
+ };
+
+ Client.prototype.getDirectoryConfig = function (callback) {
+ get('/api/v1/settings/directory_config', null, function (error, data, status) {
+ if (error) return callback(error);
+ if (status !== 200) return callback(new ClientError(status, data));
+
+ callback(null, data);
+ });
+ };
+
Client.prototype.setSysinfoConfig = function (config, callback) {
post('/api/v1/settings/sysinfo_config', config, null, function (error, data, status) {
if (error) return callback(error);
diff --git a/src/views/users.html b/src/views/users.html
index 64dfc54d0..5ecf5dd78 100644
--- a/src/views/users.html
+++ b/src/views/users.html
@@ -398,12 +398,12 @@
-
+
Users
-
+
@@ -478,10 +478,10 @@
-
+
Groups
-
+
@@ -522,7 +522,37 @@
-
LDAP
+ Settings
+
+
+
+
+
+
LDAP
diff --git a/src/views/users.js b/src/views/users.js
index 1f5e1b6b5..80651a5a2 100644
--- a/src/views/users.js
+++ b/src/views/users.js
@@ -464,6 +464,42 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
}
};
+ $scope.directoryConfig = {
+ editableUserProfiles: true,
+ error: {},
+
+ loadDirectoryConfig: function () {
+ Client.getDirectoryConfig(function (error, result) {
+ if (error) return console.error('Unable to get directory config.', error);
+
+ $scope.directoryConfig.editableUserProfiles = !result.lockUserProfiles;
+ });
+ },
+
+ submit: function () {
+ $scope.directoryConfig.error = '';
+ $scope.directoryConfig.busy = true;
+ $scope.directoryConfig.success = false;
+
+ var data = {
+ lockUserProfiles: !$scope.directoryConfig.editableUserProfiles
+ };
+
+ Client.setDirectoryConfig(data, function (error) {
+ if (error) $scope.directoryConfig.error = error.message;
+
+ $scope.directoryConfig.success = true;
+
+ $scope.directoryConfigForm.$setUntouched();
+ $scope.directoryConfigForm.$setPristine();
+
+ $timeout(function () {
+ $scope.directoryConfig.busy = false;
+ }, 3000);
+ });
+ }
+ };
+
$scope.externalLdap = {
busy: false,
percent: 0,
@@ -722,6 +758,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
Client.onReady(refresh);
Client.onReady(function () { if ($scope.user.isAtLeastAdmin) loadExternalLdapConfig(); });
+ Client.onReady(function () { if ($scope.user.isAtLeastAdmin) $scope.directoryConfig.loadDirectoryConfig(); });
Client.onReady(refreshAllUsers);
Client.onReady(function () {
$scope.roles = [