0

I am using passport for authentication. The code doesn't giving any errors but does nothing when I use the right credentials. I tried console log in the authenticateUser function and serializeUser function, it does print statements in both.

My passportConfig.js file

const LocalStrategy = require('passport-local').Strategy;
const db = require('../postgresql');
const bcrypt = require('bcrypt');

function initialize(passport) {
    
    const authenticateUser = async (email, password, done) => {
        try {
            const user = await db.oneOrNone('SELECT * FROM users WHERE email = $1', [email]);
            if(user) {
                if(!bcrypt.compareSync(password, user.password)) {
                    return done(null, false, { message: "Email or password is incorrect"});
                }
                else {
                    console.log('Authenticated user');
                    return done(null, user);
                }
            }
            else {
                return done(null, false, { message: "Email or password is incorrect"});
            }  
        }
        catch (err) {
            console.log(err);
        }
    }

    passport.use(
      new LocalStrategy({
          usernameField: 'email',
          passwordField: 'password'
      }, authenticateUser
      )  
    );

    passport.serializeUser((user, done) => {
        console.log('Serialized user');
        done(null, user.id)
    });
    passport.deserializeUser(async (id, done) => {
        try {
            const user = await db.oneOrNone('SELECT * FROM users WHERE id = $1', [id]);
            return done(null, user);
        }
        catch(err) {
            console.log(err);
        }
    });
}

module.exports = initialize;

Snippet of my route file

router.post('/login', passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/login',
    failureFlash: true
}));
supmethods
  • 525
  • 6
  • 18

0 Answers0