function getLocalStrategy(db, settings) { const localOptions = { usernameField: settings.usernameField || 'email', passwordField: settings.passwordField || 'password', session: false, }; const localStrategy = new LocalStrategy( localOptions, (email, password, done) => { db.findOne(settings.usersTable || 'users', { email }) .then((user) => { if (!user) { return done(null, false, { message: 'This email is not registered', }); } return bcrypt.compare(password, user.password, (err, isMatch) => { if (err || !isMatch) { return done(null, false, { message: 'Incorrect credentials' }); } return done(null, user); }); }) .catch((err) => { done(err, null, { message: 'Error connecting to database' }); }); } ); return localStrategy; }
done(null, user.id); }); done(err, user); }); }); function(username, password, done) { User.findOne({ username: new RegExp(username, 'i'), socialId: null }, function(err, user) { if (err) { return done(err); } return done(null, false, { message: 'Incorrect username or password.' }); if (err) { return done(err); } if (!isMatch){ return done(null, false, { message: 'Incorrect username or password.' }); return done(null, user); }); if (err) { return done(err); } return done(err, user); }); };
// ========================================================================= // EMAIL SIGNUP ============================================================ // ========================================================================= passport.use('email-signup', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email usernameField: 'email', passwordField: 'password', passReqToCallback: true // allows us to pass back the entire request to the callback }, function (req, name, password, done) { User.findOne('email', name.toLowerCase(), function (userToUpdate) { userToUpdate.set("password", bcrypt.hashSync(password, 10)); userToUpdate.update(function (err) { Invitation.findOne("user_id", userToUpdate.get("id"), function (invite) { invite.delete(function () { return done(null, userToUpdate); }); }); }); }); }));
User.findOne('email', name.toLowerCase(), async function (result) { if (!result.data) { return done(null, false, {message: "bad user"}); // req.flash is the way to set flashdata using connect-flash return done(null, false, {message: "invited user has no password"}); } catch (e) { console.error(e) return done(null, false, {message: e}); // create the loginMessage and save it to session as flashdata return done(null, false, {message: "Account Suspended"}); return done(null, result); });
passport.use(new LocalStrategy({ usernameField: 'user[email]', passwordField: 'user[password]' }, function(email, password, done) { User.findOne({email: email}).then(function(user){ if(!user || !user.validPassword(password)){ return done(null, false, {errors: {'email or password': 'is invalid'}}); } return done(null, user); }).catch(done); }));