Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

passport.authenticate()(req, res, next)

Boa tarde Alura, gostaria de intender melho o que esta acontecendo aqui: passport.authenticate()(req, res, next). authenticate e um método com suas assinaturas esse (req, res, next) seria o que ? me parece um metodo chamando outro metodo? esse e o codigo todo:


local: (req, res, next)=>{
        passport.authenticate(
            'local', 
            {session: false}, 
            (erro, usuario, info)=>{
                if(erro && erro.name === 'InvalidArgumentError'){
                    return res.status(401).json({erro: erro.message});
                }
                if(erro){
                    return res.status(500).json({erro: erro.message});
                }
                if(!usuario){
                    return res.status(401).json();
                }


                req.user = usuario;
                return next();
            }
        )(req, res, next);        
    }

obrigado

1 resposta
solução!

Oi Marcelo, tudo bem? O passport.authenticate() é um método sim, só que ao executar esse método, ele devolve pra você um middleware, ou seja, uma função que poderia ser executada pelo próprio Express, porém, pelo que entendi olhando o código, esse middleware não é passado diretamente para o Express, então ao chamar o authenticate, já foi feita a execução do middleware logo em sequência. Por isso passport.authenticate(params)(req, res, next).

Deu pra entender? Ficou mais claro? Caso não, comenta aqui que eu tento explicar de outra forma.