Fix crash when LDAP server is unreachable

Fixes #667
This commit is contained in:
Girish Ramakrishnan 2016-10-15 23:47:30 -07:00
parent 5598da73d9
commit 09f2d069de
1 changed files with 10 additions and 4 deletions

View File

@ -13,7 +13,6 @@ var Helper = require("./helper");
var ldap = require("ldapjs"); var ldap = require("ldapjs");
var manager = null; var manager = null;
var ldapclient = null;
var authFunction = localAuth; var authFunction = localAuth;
module.exports = function() { module.exports = function() {
@ -61,9 +60,6 @@ module.exports = function() {
} }
if (!config.public && (config.ldap || {}).enable) { if (!config.public && (config.ldap || {}).enable) {
ldapclient = ldap.createClient({
url: config.ldap.url
});
authFunction = ldapAuth; authFunction = ldapAuth;
} }
@ -271,12 +267,22 @@ function ldapAuth(client, user, password, callback) {
var userDN = user.replace(/([,\\\/#+<>;"= ])/g, "\\$1"); var userDN = user.replace(/([,\\\/#+<>;"= ])/g, "\\$1");
var bindDN = Helper.config.ldap.primaryKey + "=" + userDN + "," + Helper.config.ldap.baseDN; var bindDN = Helper.config.ldap.primaryKey + "=" + userDN + "," + Helper.config.ldap.baseDN;
var ldapclient = ldap.createClient({
url: Helper.config.ldap.url
});
ldapclient.on("error", function(err) {
log.error("Unable to connect to LDAP server", err);
callback(!err);
});
ldapclient.bind(bindDN, password, function(err) { ldapclient.bind(bindDN, password, function(err) {
if (!err && !client) { if (!err && !client) {
if (!manager.addUser(user, null)) { if (!manager.addUser(user, null)) {
log.error("Unable to create new user", user); log.error("Unable to create new user", user);
} }
} }
ldapclient.unbind();
callback(!err); callback(!err);
}); });
} }