Skip to content

Instantly share code, notes, and snippets.

@pphetra
Last active December 19, 2015 12:28
Show Gist options
  • Select an option

  • Save pphetra/5954741 to your computer and use it in GitHub Desktop.

Select an option

Save pphetra/5954741 to your computer and use it in GitHub Desktop.
var pg = require('pg');
var async = require('async');
var _ = require('underscore');
var when = require('when');
var conString = "tcp://erp:erp@localhost/poc";
var authenFn = function(user, password) {
var deferred = when.defer();
pg.connect(conString, function(err, client, done) {
if(err) {
deferred.reject('connection error');
return;
}
fetchUserFromDB(client, user).then(function(result) {
if (password === result.password) {
console.log('match')
deferred.resolve(true);
} else {
console.log('mismatch')
deferred.reject('password mismatch');
}
}, function(reason) {
// user not found in db
deferred.reject(reason);
}).ensure(function() {
done();
});
});
return deferred.promise;
};
function fetchUserFromDB(client, user) {
var deferred = when.defer();
client.query('select username, password from users where username = $1', [user], function(err, result) {
if (result.rows.length > 0) {
console.log(result.rows[0])
deferred.resolve({
username: user,
password: result.rows[0].password
});
} else {
deferred.reject('no user found');
}
});
return deferred.promise;
}
authenFn('pok', 'bunny').then(function() {
console.log('login success');
}, function(reason) {
console.log('fail with' + reason)
}).ensure(function() {
pg.end();
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment