diff --git a/src/views/users.html b/src/views/users.html index b3ad2f824..69049e5ee 100644 --- a/src/views/users.html +++ b/src/views/users.html @@ -472,21 +472,86 @@
-

Cloudron will authenticate users against the configured LDAP server.

-

LDAP authentication is currently {{ externalLdap.provider === 'noop' ? 'disabled' : 'enabled' }}.

+ Cloudron will authenticate users against the configured LDAP server. +
+
+
-
+
+
+ Provider +
+
+ {{ externalLdap.provider }} +
+
- - - Show Logs +
+
+ Server URL +
+
+ {{ externalLdap.url }} +
+
+ +
+
+ Base DN +
+
+ {{ externalLdap.baseDn }} +
+
+ +
+
+ Filter +
+
+ {{ externalLdap.filter }} +
+
+ +
+
+ Username Field +
+
+ {{ externalLdap.usernameField || 'uid' }} +
+
+ +
+
+ Auth +
+
+ {{ externalLdap.bindDn ? 'Yes' : 'No' }} +
+
+ +
+
+
+
+
+
+

{{ externalLdap.message }}

+

+

{{ externalLdap.errorMessage }}
+

-
+ +
+ + + Show Logs
diff --git a/src/views/users.js b/src/views/users.js index dac1c0144..6668933e8 100644 --- a/src/views/users.js +++ b/src/views/users.js @@ -433,8 +433,10 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio $scope.externalLdap = { busy: false, + percent: 0, + message: '', + errorMessage: '', error: {}, - syncBusy: false, taskId: 0, // fields @@ -446,30 +448,49 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio bindPassword: '', usernameField: '', + checkStatus: function () { + Client.getLatestTaskByType('syncExternalLdap', function (error, task) { + if (error) return console.error(error); + + if (!task) return; + + $scope.externalLdap.taskId = task.id; + $scope.externalLdap.updateStatus(); + }); + }, + sync: function () { - $scope.externalLdap.syncBusy = true; + $scope.externalLdap.busy = true; Client.startExternalLdapSync(function (error, taskId) { if (error) { - $scope.externalLdap.syncBusy = false; + $scope.externalLdap.busy = false; console.error('Unable to start ldap syncer task.', error); return; } $scope.externalLdap.taskId = taskId; + $scope.externalLdap.updateStatus(); + }); + }, - function refreshTaskStatus() { - Client.getTask(taskId, function (error, result) { - if (error) console.error(error); - if (result && result.active) return $timeout(refreshTaskStatus, 2000); + updateStatus: function () { + Client.getTask($scope.externalLdap.taskId, function (error, data) { + if (error) return window.setTimeout($scope.externalLdap.updateStatus, 5000); - $scope.externalLdap.syncBusy = false; + if (!data.active) { + $scope.externalLdap.busy = false; + $scope.externalLdap.message = ''; + $scope.externalLdap.percent = 100; // indicates that 'result' is valid + $scope.externalLdap.errorMessage = data.success ? '' : data.error.message; - refreshUsers(); - }); + return refreshUsers(); } - refreshTaskStatus(); + $scope.externalLdap.busy = true; + $scope.externalLdap.percent = data.percent; + $scope.externalLdap.message = data.message; + window.setTimeout($scope.externalLdap.updateStatus, 3000); }); },