diff options
Diffstat (limited to 'packages/wekan-ldap/server/testConnection.js')
-rw-r--r-- | packages/wekan-ldap/server/testConnection.js | 39 |
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: [], + }; + }, +}); |