Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 1x | const util = require('util'); const createClient = require('./internal/service.createClient'); const hasEvents = require('./internal/service.hasEvents'); const log = require('./internal/service.log'); const isPasswordLoggingEnabled = false; /** * Attempts to authenticate the specified username / password combination. * * @public * @param {String} username The username to authenticate. * @param {String} password The password to use for authentication. * @param {Function} callback The callback to execute when the authenication is completed. callback(err: {Object}, authenticated: {Boolean}) */ function authenticate(username, password, callback) { var self = this; return new Promise((resolve, reject) => { log.trace('authenticate(%j,%s)', username, isPasswordLoggingEnabled ? password : '********'); // Skip authentication if an empty username or password is provided. Iif ((!username) || (!password)) { var err = { 'code': 0x31, 'errno': 'LDAP_INVALID_CREDENTIALS', 'description': 'The supplied credential is invalid' }; if(callback){ callback(err, false); } return reject(err); } var errorHandled = false; function handleError(err) { if (!errorHandled) { errorHandled = true; if (hasEvents.call(self, 'error')) self.emit('error', err); if(callback){ callback(err, null); } return reject(err); } } var client = createClient.call(self); client.on('error', handleError); client.bind(username, password, function (err) { client.unbind(); var message = util.format('Authentication %s for "%s" as "%s" (password: "%s")', err ? 'failed' : 'succeeded', self.opts.url, username, isPasswordLoggingEnabled ? password : '********'); if (err) { log.warn('%s. Error: %s', message, err); return (handleError(err)); } log.info(message); if(callback){ callback(null, true); } return resolve(true); }); }); }; module.exports = authenticate; |