diff --git a/lib/ldapauth.js b/lib/ldapauth.js index 63c5d1e..5462ffe 100644 --- a/lib/ldapauth.js +++ b/lib/ldapauth.js @@ -13,7 +13,6 @@ */ var assert = require('assert'); -var bcrypt = require('bcrypt'); var ldap = require('ldapjs'); var debug = console.warn; var format = require('util').format; @@ -53,7 +52,6 @@ var format = require('util').format; function LdapAuth(opts) { this.opts = opts; assert.ok(opts.url); - assert.ok(opts.adminDn); assert.ok(opts.searchBase); assert.ok(opts.searchFilter); @@ -81,7 +79,10 @@ function LdapAuth(opts) { this._adminBound = false; this._userClient = ldap.createClient(clientOpts); - this._salt = bcrypt.genSaltSync(); + if (opts.cache) { + var bcrypt = require('bcrypt'); + this._salt = bcrypt.genSaltSync(); + } } @@ -180,6 +181,7 @@ LdapAuth.prototype.authenticate = function (username, password, callback) { if (self.opts.cache) { // Check cache. 'cached' is `{password: , user: }`. var cached = self.userCache.get(username); + var bcrypt = require('bcrypt'); if (cached && bcrypt.compareSync(password, cached.password)) { return callback(null, cached.user) } @@ -198,6 +200,7 @@ LdapAuth.prototype.authenticate = function (username, password, callback) { return callback(err); } if (self.opts.cache) { + var bcrypt = require('bcrypt'); bcrypt.hash(password, self._salt, function (err, hash) { self.userCache.set(username, {password: hash, user: user}); return callback(null, user); diff --git a/package.json b/package.json index e419a1d..3866e64 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,9 @@ "engines": ["node >=0.8.0"], "dependencies": { "ldapjs": "0.6.3", - "bcrypt": "0.7.5", "lru-cache": "2.0.4" + }, + "optionalDependencies": { + "bcrypt": "0.7.5" } }