1
resposta

Duvida SistemaAunteticacao simples

Olá estou testando um sistema simples de autenticação e não sei onde estou cometendo os erros,

eu tenho um objeto cliente no meu index

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


const cliente2 = new Cliente("Carlos", 123654789);
cliente2.cadastroSenha("234");

const clienteLogado = SistemaAutenticacao.login(cliente2, "234");

console.log(clienteEstaLogado);

a classe cliente

export class Cliente{

    constructor(nome, cpf){

        this.nome = nome;
        this.cpf = cpf;
    }

    get senha(){
        return this._senha;
     }

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


    autenticar(senha){
        if(this.cadastroSenha == senha){
            return true
        }
        return false
    }
}

e a classe para a autenticação

export class SistemaAutenticacao {

    static login(autenticavel, senha){
        return autenticavel.autenticar(senha);
    }
}

ele sempre está me retornando falso quando compilo o index, qual seria o motivo de não retornar true sendo que existe uma função autenticar na classe cliente e a senha é a mesma do cadastro?

obrigado!

1 resposta

Olá Sung Ju No, tudo bom?

Então. Na sua classe Cliente, o método autenticar está assim:

  autenticar(senha){
      if(this.cadastroSenha == senha){
          return true
      }
      return false
  }

Repare que no seu if, você está comparando a senha recebida com o this.cadastroSenha. Esse cadastroSenha é um método da classe Cliente, que serve para "salvar" a senha, e não para "recuperar" ela. Ou seja, não podemos usar ela para ver qual é a senha do cliente. Para resolver isso, podemos usar o this._senha diretamente, ou criar um método get para ele.

Logo, assim que alterarmos o if, o código ficará assim:

  autenticar(senha){
      if(this._senha == senha){
          return true
      }
      return false
  }

Dessa forma, dentro do if, estamos perguntando se o this._senha (a senha que definimos para o cliente) é igual a senha (o a senha que estamos tentando comparar).

Tenta fazer essa alteração e me fala se funcionou, ok =)