1
resposta

Autenticação local

A autenticação local com o passport não passa de uma validação que verifica se o e-mail existe e se a senha está correta, certo?

Por exemplo, tenho o seguinte código que fiz antes de assistir a aula

 async signInUser(req, res){
        const { email, password } = req.body;

        if(!email || !password) return res.status(400).send({msg: 'Campos inválidos'});

        const user = await knex('usuarios')
        .select('hash')
        .where('email', email)
        .first();

        if (!user) return res.status(404).send({ error:'User not found!'});

        if( !await bcrypt.compare(password, user.hash) ){
            return res.status(401).send({ error: "Invalid Password"});
        }

        const loggedUser = await knex('usuarios')
            .select('*')
            .where('email', email)
            .first();

        delete loggedUser.hash, delete loggedUser.administrador;

        const token = jwt.sign(
            { user: 'alguma coisa' },
            "segredo", {
            expiresIn: 86400
        });

        return res.status(200).send({ user: {...loggedUser}, token });
    }

Aparentemente, -- não cheguei a entender a fundo o passport -- a utilização do passport atua como um middleware na validação e permite uma escalabilidade do código muito mais rápida e organizada. Mas, a diferença nesse caso simples não parece ser tão grande (código abaixo).

passport.use(
    new LocalStrategy({
        usernameField:  'email',
        passwordField: 'password',
        session: false
    },
    async (email, senha, done) =>{
            try{
                const usuario = await Usuario.buscaPorEmail(email);
                 verificaUsuario(usuario);
                await verificaSenha(senha, usuario.senhaHash);
                done(null, usuario);
            } catch(erro){
                done(erro);
            }

Isso confere? A minha implementação seguindo mais ou menos a documentação tá de certa forma correto? (a implementação do professor é muito mais clean)

1 resposta

Oi Gabriel, acho que seu códito tá ok, não vejo nada que realmente precise de ajuste e de fato, em alguns casos, citamos benefícios de bibliotecas que não chegam a ficar muito bem claros nos exemplos, acho que vale ir explorando a biblioteca, aumentando a complexidade do projeto pra ver os reais benefícios.