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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software