Qual a necessidade do método ehAutenticavel? Antes o método login já era o suficiente, não???
export class SistemaAutenticacao {
static login(autenticavel, senha) {
return autenticavel.autenticar(senha);
}
static ehAutenticavel(autenticavel){
return "autenticar" in autenticavel &&
autenticavel.autenticar instanceof Function
}
}
Por que não podemos deixar como estava antes? E na classe cliente acrescentar o método "autenticar(senha)" igual na classe funcionário???
Classe SistemaAutenticacao:
export class SistemaAutenticacao {
static login(autenticavel, senha) {
return autenticavel.autenticar(senha);
}
}
Classe Cliente:
export class Cliente{ //classe, é como se fosse um "molde" de uma peça
//atributos:
// nome;
// _cpf;
// podem ser omitidos quando é utilizado o constructor
constructor (nome, cpf, senha){
this.nome = nome;
this._cpf = cpf;
this._senha = senha;
}
get cpf(){
return this._cpf;
}
autenticar(senha)
{
return senha == this._senha;
}
}
Se tentar rodar o index, ele aceita.... não dá erro..... Index:
import {Cliente} from "./Cliente.js";
import {Gerente} from "./Funcionarios/Gerente.js";
import {Diretor} from "./Funcionarios/Diretor.js";
import {SistemaAutenticacao} from "./SistemaAutenticacao.js";
const diretor = new Diretor ("Rodrigo", 10000, 12345678900);
diretor.cadastrarSenha("123456");
const gerente = new Gerente("Ricardo", 5000, 12345678901);
gerente.cadastrarSenha("123");
const cliente = new Cliente ("Lais", 78945612300, "456");
const gerenteEstaLogado = SistemaAutenticacao.login(gerente, "123");
const diretorEstaLogado = SistemaAutenticacao.login(diretor, "123456");
const clienteEstaLogado = SistemaAutenticacao.login(cliente, "456");
console.log(gerenteEstaLogado, diretorEstaLogado, clienteEstaLogado);