Skip to content

Instantly share code, notes, and snippets.

@miyamotodev123
Created November 30, 2015 01:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miyamotodev123/c27f603f5947d94bb231 to your computer and use it in GitHub Desktop.
Save miyamotodev123/c27f603f5947d94bb231 to your computer and use it in GitHub Desktop.
passport tdd blog passport.js
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