Created
November 30, 2015 01:41
-
-
Save miyamotodev123/c27f603f5947d94bb231 to your computer and use it in GitHub Desktop.
passport tdd blog passport.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var LocalStrategy = require('passport-local').Strategy; | |
var User = require('../app/models/user'); | |
module.exports = function (passport) { | |
passport.serializeUser(function (user, done) { | |
done(null, user.id); | |
}); | |
passport.deserializeUser(function (id, done) { | |
User.findById(id, function (err, user) { | |
done(err, user); | |
}); | |
}); | |
passport.use('local-signup', new LocalStrategy({ | |
usernameField: 'username', | |
passwordField: 'password', | |
passReqToCallback: true | |
}, | |
function (req, username, password, done) { | |
process.nextTick(function () { | |
if (!req.user) { | |
User.findOne({'username': username}, function (err, user) { | |
if (err) return done(err); | |
if (user) return done(null, {error: 'That username is already taken.'}); | |
var newUser = new User() | |
newUser.username = username; | |
newUser.password = newUser.generateHash(password); | |
newUser.save(function (err) { | |
if (err) return done(null, {error: err.message}); | |
return done(null, newUser); | |
}); | |
}); | |
} else { | |
return done(null, req.user); | |
} | |
}); | |
})); | |
passport.use('local-login', new LocalStrategy({ | |
usernameField: 'username', | |
passwordField: 'password', | |
passReqToCallback: true | |
}, | |
function (req, username, password, done) { | |
if (username) { | |
username = username.toLowerCase(); | |
} | |
process.nextTick(function () { | |
User.findOne({'username': username}, function (err, user) { | |
if (err) return done(err); | |
if (!user) | |
return done(null, {error: 'No user found.'}); | |
if (!user.validPassword(password)) { | |
return done(null, {error: 'Wrong password.'}); | |
} | |
return done(null, user); | |
}); | |
}); | |
})); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment