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

+
+ +
+
+
+
+ +
+
+
+ +
+ +
+
+ Directory configuration is only available is only available in the paid plans. Setup Subscription Now +
+
+ +
+
+ +
+ +
+

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 = [