Add directory config ui

This commit is contained in:
Girish Ramakrishnan
2020-07-09 21:51:51 -07:00
parent fbe3545153
commit a725fc7a0b
3 changed files with 91 additions and 5 deletions
+19
View File
@@ -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);
+35 -5
View File
@@ -398,12 +398,12 @@
<div class="content content-large">
<div class="text-left">
<h1>
<h2>
Users
<button class="btn btn-primary btn-outline pull-right" ng-click="useradd.show()">
<i class="fa fa-user-plus"></i> New User
</button>
</h1>
</h2>
</div>
<div class="row">
@@ -478,10 +478,10 @@
<br/>
<div class="text-left">
<h1>
<h2>
Groups
<button class="btn btn-primary btn-outline pull-right" ng-click="groupAdd.show()"><i class="fa fa-plus"></i> New Group</button>
</h1>
</h2>
</div>
<div class="card card-large">
@@ -522,7 +522,37 @@
</div>
<div class="text-left" style="margin-top: 50px;" ng-show="user.isAtLeastAdmin">
<h1>LDAP</h1>
<h2>Settings</h2>
</div>
<div class="card card-large" ng-show="user.isAtLeastAdmin">
<form name="directoryConfigForm" role="form" novalidate ng-submit="directoryConfig.submit()" autocomplete="off">
<fieldset>
<div class="checkbox">
<label>
<input type="checkbox" ng-model="directoryConfig.editableUserProfiles">&nbsp;&nbsp;Allow users to edit their profile <sup><a ng-href="{{ config.webServerOrigin }}/documentation/user-management/#lock-profile" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup>
</label>
</div>
</fieldset>
</form>
<br/>
<div class="row">
<div class="col-md-8">
<span ng-hide="config.features.directoryConfig">Directory configuration is only available is only available in the paid plans. <a href="" ng-click="openSubscriptionSetup()">Setup Subscription Now</a></span>
</div>
<div class="col-md-4">
<button class="btn btn-outline btn-primary pull-right" ng-click="directoryConfig.submit()" ng-disabled="!directoryConfigForm.$dirty || directoryConfig.busy || !config.features.directoryConfig">
<i class="fa fa-circle-notch fa-spin" ng-show="directoryConfig.busy"></i> Save
</button>
</div>
</div>
</div>
<div class="text-left" style="margin-top: 50px;" ng-show="user.isAtLeastAdmin">
<h2>LDAP</h2>
</div>
<div class="card card-large" ng-show="user.isAtLeastAdmin">
+37
View File
@@ -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 = [