Skip to content

Instantly share code, notes, and snippets.

@boudhayan-dev
Created December 25, 2019 12:36
Show Gist options
  • Save boudhayan-dev/e426e6d9f2cf6b66b3b612de5508e44e to your computer and use it in GitHub Desktop.
Save boudhayan-dev/e426e6d9f2cf6b66b3b612de5508e44e to your computer and use it in GitHub Desktop.
const passport = require("passport");
const LocalStrategy = require('passport-local').Strategy;
const User = require("../models/User");
// Passport JS serialize user
passport.serializeUser(function (user, done) {
done(null, user.email);
});
// Deserialize user
passport.deserializeUser(async function (email, done) {
try {
let user = await User.findOne({ email:email })
return done(null,user)
} catch (error) {
return console.log(err.message);
}
});
// Sign up strategy
passport.use('local-signup', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
async function (req, email, password, done) {
try {
// Check if all fields are present
if (email.length < 0 || password.length < 0 || (req.body.username).length < 0) {
return done(null, false, {
error: 'Please fill up mandatory fields'
});
}
let user = await User.findOne({ email: email })
if(user){
return done(null, false, {
error: 'Please use a different email'
});
}
else{
let newUser = new User();
newUser.username = req.body.username;
newUser.email = email;
newUser.password = newUser.generateHash(password);
await newUser.save()
return done(null,newUser)
}
} catch (error) {
return done(null, false, {
error: error.message
});
}
}));
// Log in strategy
passport.use('local-login', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
async function (req, email, password, done) {
try {
// Check if all fields are present
if (email.length < 0 || password.length < 0) {
return done(null, false, {
error: 'Please fill up mandatory fields'
});
}
let user = await User.findOne({ email:email })
if(!user){
return done(null,false,{
error: "Uh ho! you are not registered with us. Please sign up."
})
}
if (!user.validPassword(password)) {
return done(null, false, {
error: 'Invalid password try again !'
});
}
return done(null, user);
} catch (error) {
return done(null,false,{
"error": error.message
})
}
}));
module.exports = passport
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment