diff options
| author | Adam Soltys <[email protected]> | 2014-07-31 21:06:23 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2014-07-31 21:06:23 -0700 |
| commit | 7c5dfc8d51efe4df4e67f86f33c489a320fcb8f9 (patch) | |
| tree | f387c3d4e3ce9ed0c464659a787b99d8c6e90fb9 /src/passport.js | |
| parent | de1cdd2e3f9d9f36ce3d8e97335341cc3237e829 (diff) | |
| download | coinos-server-7c5dfc8d51efe4df4e67f86f33c489a320fcb8f9.tar.gz coinos-server-7c5dfc8d51efe4df4e67f86f33c489a320fcb8f9.zip | |
Move coffee files to src/ folder
Diffstat (limited to 'src/passport.js')
| -rw-r--r-- | src/passport.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/passport.js b/src/passport.js new file mode 100644 index 00000000..aa11d658 --- /dev/null +++ b/src/passport.js @@ -0,0 +1,45 @@ +(function() { + var LocalStrategy, bcrypt, db, passport; + + db = require("redis").createClient(); + + bcrypt = require('bcrypt'); + + passport = require('passport'); + + LocalStrategy = require('passport-local').Strategy; + + passport.serializeUser(function(user, done) { + return done(null, user.username); + }); + + passport.deserializeUser(function(username, done) { + return db.hgetall("user:" + username, function(err, user) { + return done(null, user); + }); + }); + + passport.use(new LocalStrategy(function(username, password, done) { + return db.hget("user:" + username, 'password', function(err, hash) { + if (err) { + return done(err); + } + if (hash) { + return bcrypt.compare(password, hash, function(err, match) { + if (match) { + return db.hgetall("user:" + username, function(err, user) { + return done(null, user); + }); + } else { + return done(null, false); + } + }); + } else { + return done(null, false); + } + }); + })); + + module.exports = passport; + +}).call(this); |
