summaryrefslogtreecommitdiffstats
path: root/packages/wekan-ldap/server/testConnection.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/wekan-ldap/server/testConnection.js')
-rw-r--r--packages/wekan-ldap/server/testConnection.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/packages/wekan-ldap/server/testConnection.js b/packages/wekan-ldap/server/testConnection.js
new file mode 100644
index 00000000..02866ce5
--- /dev/null
+++ b/packages/wekan-ldap/server/testConnection.js
@@ -0,0 +1,39 @@
+import LDAP from './ldap';
+
+Meteor.methods({
+ ldap_test_connection() {
+ const user = Meteor.user();
+ if (!user) {
+ throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'ldap_test_connection' });
+ }
+
+ //TODO: This needs to be fixed - security issue -> alanning:meteor-roles
+ //if (!RocketChat.authz.hasRole(user._id, 'admin')) {
+ // throw new Meteor.Error('error-not-authorized', 'Not authorized', { method: 'ldap_test_connection' });
+ //}
+
+ if (LDAP.settings_get(LDAP_ENABLE) !== true) {
+ throw new Meteor.Error('LDAP_disabled');
+ }
+
+ let ldap;
+ try {
+ ldap = new LDAP();
+ ldap.connectSync();
+ } catch (error) {
+ console.log(error);
+ throw new Meteor.Error(error.message);
+ }
+
+ try {
+ ldap.bindIfNecessary();
+ } catch (error) {
+ throw new Meteor.Error(error.name || error.message);
+ }
+
+ return {
+ message: 'Connection_success',
+ params: [],
+ };
+ },
+});