/// <summary> /// Exibe login do operador e pede usuário e senha /// </summary> /// <param name="pListOperadores">Lista de operadores</param> /// <returns></returns> public static Operador ExecutaLoginOperador(List <Operador> pListOperadores) { Operador operador = null; string user = null; do { Console.WriteLine(); Console.WriteLine("---- LOGIN DO OPERADOR ----"); Console.Write("Usuário: "); user = EeS.ReadConsoleLine(); operador = Operador.BuscaOperador(pListOperadores, user); } while (operador == null); string pass = null; bool senhaCorreta = true; do { if (!senhaCorreta) { Console.WriteLine("Senha incorreta!"); } Console.Write("Senha: "); pass = EeS.ReadConsoleLine(); } while (!(senhaCorreta = Password.CompararSenhas(pass, operador.Salt, operador.Senha))); return(operador); }
/// <summary> /// Valida senha, saldo e executa saque /// </summary> /// <param name="pValorSaque">Valor a ser sacado</param> /// <param name="pSenha">Senha digitada pelo cliente para autorização da operação</param> /// <returns></returns> public bool Sacar(double pValorSaque, string pSenha) { // Validação de saldo suficiente if (this.Saldo - pValorSaque < (this.Credito * -1)) { Console.WriteLine("Saldo insuficiente!"); return(false); } //Validação de senha if (!Password.CompararSenhas(pSenha, this.Salt, this.Senha)) { Console.WriteLine("Senha incorreta!"); return(false); } //executa retirada this.Saldo -= pValorSaque; //Exibe saldo atual Console.WriteLine($"Conta [{this.NumConta}] - Saldo atual: {this.Saldo}"); // https://docs.microsoft.com/pt-br/dotnet/standard/base-types/composite-formatting return(true); }
/// <summary> /// Verifica senha antiga inserida e troca pela senha nova /// </summary> /// <param name="pSenhaAntiga"></param> /// <param name="pSenhaNova"></param> /// <returns></returns> public bool AlterarSenha(string pSenhaAntiga, string pSenhaNova) { if (!Password.CompararSenhas(pSenhaAntiga, this.Salt, this.Senha)) { Console.WriteLine("Senha incorreta!"); return(false); } this.Senha = Password.GenerateSaltedHash(pSenhaNova, this.Salt); return(true); }
/// <summary> /// Solicita senha ao operador e verifica. Retorna via out a senha digitada. /// </summary> /// <param name="senha"></param> /// <returns>True se as senhas conferem</returns> internal bool SolicitarSenha(out string senha) { Console.WriteLine($"Operador [{this.Nome}], insira a senha: "); senha = EeS.ReadConsoleLine(); bool senhasConferem = false; if (!(senhasConferem = Password.CompararSenhas(senha, this.Salt, this.Senha))) { Console.WriteLine("Senha incorreta!"); } return(senhasConferem); }
/// <summary> /// Solicita dados e altera a senha da conta de cliente /// </summary> private static void AlterarSenhaDeConta() { try { Console.WriteLine("Alterar Senha De Conta"); Cliente objCliente = Cliente.PedeContaEBuscaCliente(listClientes, pVerboseForAvailability: false); if (objCliente == null) { return; } Console.Write("Digite a senha atual: "); string senhaAntiga = EeS.ReadConsoleLine(); //Validação de senha if (!Password.CompararSenhas(senhaAntiga, objCliente.Salt, objCliente.Senha)) { Console.WriteLine("Senha incorreta!"); return; } Console.Write("Crie a nova senha com 6 dígitos numéricos: "); String senhaNova = EeS.ReadConsoleLine(); while (!Password.ValidaRegraSenha(senhaNova)) { Console.WriteLine("Por favor, insira uma senha numérica de 6 dígitos."); senhaNova = EeS.ReadConsoleLine(); } if (objCliente.AlterarSenha(senhaAntiga, senhaNova)) { //salva o arquivo incluindo a nova conta ArmazenaDados.SaveList(pathListClientesFile, listClientes); logger.Trace($"Senha da conta [{objCliente.NumConta} - {objCliente.Nome} ] alterada com sucesso!"); } } catch (Exception ex) { logger.Error(ex); } }//fim AlterarSenhaDeConta()