1
resposta

Não entendi porquê mudar o get senha, questão de segurança?

Ele diz que se deixar o get senha, a senha poderia ser exposta no sistema e com o autenticar sso fica mais seguro... Não entendi a ideia, já que o autenticar dá o retorno do valor da senha, também guardando o valor em si mesmo, assim como o get senha, certo?

Alguém pode explicar melhor?

1 resposta

Até onde me lembro dessa parte do curso, o autenticar() não deve retornar o valor da senha, pois isso deixaria a senha exposta. Porém, ele deve apenas validar a senha retornando o valor como true ou false:

// Arquivo Funcionario.js
export class Funcionario{
    //constructor

    autenticar(senha){
        return senha == this._senha;
    }

   // cadastrarSenha(senha)
}

Perceba que o método autenticar(senha), não retorna o valor de this._senha. Ele apenas compara senha com this._senha e retorna um valor booleano true ou false.

Já a classe SistemaAutenticacao, tem um método estático que permite receber o objeto, no caso um diretor, por exemplo, e a senha digitada por este usuário e, com base nestes valores passados por argumento, consegue pegar o método autenticar() que está lá na classe Funcionario passar para ele a senha e receber se a senha confere ou não. Contudo, o valor da senha não é retornado, apenas se é true ou false.

// Arquivo SistemaAutenticacao.js
class SistemaAutenticacao{
    static login(autenticavel, senha){
       return autenticavel.autenticar(senha);
    }
}

Em index.js, temos

import { SistemaAutenticacao } from "./SistemaAutenticacao.js";

const diretor =  new Diretor("Rodrigo", 10000, 12345678900);
diretor.cadastrarSenha("123456");

// perceba que o objeto diretor é passado por login, junto com a senha:
const diretorEstaLogado = SistemaAutenticacao.login(diretor, "123456");

console.log(diretorEstaLogado);