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 }}
+
-
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);
});
},