Terminei o curso de Node, está funcionando tudo certo, porém não sei se passou despercebido por mim, mas quando a autenticação falha(login ou senha incorretos), não é mostrada nenhuma mensagem para o usuário. Sendo que meu código está exatamente igual ao do instrutor.
passport.use(new LocalStrategy(
{
usernameField:'email',
passwordField:'senha'
},
(email, senha, done) =>{
const usuarioDao = new UsuarioDao(db)
usuarioDao.buscaPorEmail(email)
.then(usuario => {
if(!usuario || senha != usuario.senha){
return done(null, false, {
message :'Login e/ou senha incorretos.'
});
}
return done(null, usuario);
})
.catch(erro => done(erro,false)
)
}
))
passport.serializeUser((usuario, done) => {
const usuarioSessao = {
nome: usuario.nome_completo,
email: usuario.email
}
done(null, usuarioSessao);
});
passport.deserializeUser((usuarioSessao, done) => {
done(null,usuarioSessao);
})
app.use(sessao({
secret:'node alura',
genid: function(req){
return uuid();
},
resave:false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(function(req, resp, next){
req.passport = passport
next();
});
};
inicializaLogin(){
return function(req,resp, next){
const passport = req.passport;
passport.authenticate('local', function(erro, usuario, info){
if(info){
return resp.marko(templates.base.login)
}
if(erro){
return next(erro)
}
req.login(usuario,(erro) => {
if(erro){
return next(erro)
}
return resp.redirect(LivroControlador.rotas().lista);
})
})(req,resp, next)
}
}
}