summaryrefslogtreecommitdiffstats
path: root/packages/wekan-ldap/client/loginHelper.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/wekan-ldap/client/loginHelper.js')
-rw-r--r--packages/wekan-ldap/client/loginHelper.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/packages/wekan-ldap/client/loginHelper.js b/packages/wekan-ldap/client/loginHelper.js
new file mode 100644
index 00000000..48a290c1
--- /dev/null
+++ b/packages/wekan-ldap/client/loginHelper.js
@@ -0,0 +1,52 @@
+// Pass in username, password as normal
+// customLdapOptions should be passed in if you want to override LDAP_DEFAULTS
+// on any particular call (if you have multiple ldap servers you'd like to connect to)
+// You'll likely want to set the dn value here {dn: "..."}
+Meteor.loginWithLDAP = function(username, password, customLdapOptions, callback) {
+ // Retrieve arguments as array
+ const args = [];
+ for (let i = 0; i < arguments.length; i++) {
+ args.push(arguments[i]);
+ }
+ // Pull username and password
+ username = args.shift();
+ password = args.shift();
+
+ // Check if last argument is a function
+ // if it is, pop it off and set callback to it
+ if (typeof args[args.length-1] === 'function') {
+ callback = args.pop();
+ } else {
+ callback = null;
+ }
+
+ // if args still holds options item, grab it
+ if (args.length > 0) {
+ customLdapOptions = args.shift();
+ } else {
+ customLdapOptions = {};
+ }
+
+ // Set up loginRequest object
+ const loginRequest = {
+ ldap: true,
+ username,
+ ldapPass: password,
+ ldapOptions: customLdapOptions,
+ };
+
+ Accounts.callLoginMethod({
+ // Call login method with ldap = true
+ // This will hook into our login handler for ldap
+ methodArguments: [loginRequest],
+ userCallback(error/*, result*/) {
+ if (error) {
+ if (callback) {
+ callback(error);
+ }
+ } else if (callback) {
+ callback();
+ }
+ },
+ });
+};