const uuid = require('uuid/v4');
const sessao = require('express-session');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const db =require('./database')
const UsuarioDao = require('../app/infra/usuario-dao')
module.exports = (app) => {
    passport.use(new LocalStrategy(),
    {
        usernameField : 'email',
        passwordField : 'senha'
    }),
    (email,senha,done) =>
    {
        const usuario = new UsuarioDao(db);
        usuario.buscaPorEmail(email)
            .then(user=>
                {
                    if(!user || user.senha != senha)
                    {
                        return done(null,false,
                            {
                                mensagem:'login e senha incorrretos'
                            })
                    }
                    return done(mull,true,user)
                })
                .catch(erro=>
                    {
                        return 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())
}fala ae pessoal , o passport e o session sao configurados separados correto? so passam a trabalhar juntos quando e feito este comando : app.use(passport.initialize()) app.use(passport.session())
e isso?
outra coisa o passport serve somente para veriricar se os dados estao corretos , para facilitar essa verificaçao, poderia me dar um exemplo sem uso dele , para eu poder ver como ele simplifica isso?
alem disso,o secret seria o hash de sessao?
 
            