Reputation: 134
so I have the next in my passport.js file:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
var connection = require('./database');
const User = require('./models/user');
const verifyCallback = (username, password, done) => {
User.findUser(username).then((user) => {
if(!user)
return done(null, false);
const isValid = User.validPassword(password, user[0].password).then((isValid)=>{
if(isValid)
return done(null, user);
else
return done(null, false);
})
})
.catch((err) =>{
done(err);
});
};
const strategy = new LocalStrategy(verifyCallback);
passport.use(strategy);
passport.serializeUser((user, done) => {
console.log(user + "\n" + user.id);
done(null. user.id);
});
passport.deserializeUser((userId, done) => {
User.findById(userId)
.then((user) =>{
done(null, user)
})
.catch(err => done(err));
})
Everything works fine until the function passport.serializeUser
which return the error Cannot read property 'user' of null
I don't know where is the user
param coming from, I was following a tutorial but the guy didn't explained. How should I solve that error?
Here is the route:
var express = require('express');
var router = express.Router();
var passport = require('passport');
const controller = require('../controllers/LoginController');
router.get('/', controller.getLoginPage);
router.post('/', passport.authenticate('local', {failureRedirect: '/', successRedirect: '/register'}),controller.login);
module.exports = router;
Upvotes: 1
Views: 405
Reputation: 4553
As per you code you have written done(null. user.id);
, it should be done(null, user.id);
You have used .
instead of a ,
Upvotes: 1