예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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()