public async Task <PessoaJwt> LoginPessoa(PessoaLogin pessoa, IToken token)
        {
            if (pessoa.Login.Length >= 11)
            {
                if (!ValidaCPF.ValidarCPF(pessoa.Login))
                {
                    throw new Exception("CPF inválido !");
                }
            }

            var pessoaLogada = await repositorio.BuscarLoginSenha(pessoa.Login, pessoa.Senha);

            if (pessoaLogada == null)
            {
                throw new Exception("Usuario e Login invalidos");
            }

            return(new PessoaJwt()
            {
                Id = pessoaLogada.Id,
                Name = pessoaLogada.Nome,
                Documento = pessoaLogada.Documento,
                Tipo = pessoaLogada.Tipo.ToString(),
                Token = token.GerarToken(pessoaLogada)
            });
        }
Exemple #2
0
        public TokenDTO Login(LoginDTO Usuario)
        {
            TokenDTO Retorno = new TokenDTO();

            if (Usuario.Operador)
            {
                int Matricula;
                try
                {
                    Matricula = Convert.ToInt32(Usuario.Login);
                }
                catch
                {
                    throw new Exception($"O login informado: {Usuario.Login} não é uma matrícula de operador válida.");
                }
                Operadores Operador = this._operadoresRepositorio.GetByLogin(Matricula);

                if (Operador == null)
                {
                    throw new Exception($"O login informado: {Usuario.Login} não existe.");
                }

                bool ValidaSenha = Operador.Senha.Equals(MD5Hash.GerarHashMd5(Usuario.Senha));

                if (!ValidaSenha)
                {
                    throw new Exception($"A senha para login informado: {Usuario.Login} não corresponde.");
                }

                Tuple <string, DateTime> Token = GerarToken(new UsuarioDTO {
                    Nome = Operador.Nome, Perfil = "Operador"
                });

                Retorno.Usuario   = Operador.Nome;
                Retorno.Perfil    = "Operador";
                Retorno.Token     = Token.Item1;
                Retorno.Expiracao = Token.Item2;
            }
            else
            {
                if (!ValidaCPF.ValidarCPF(Usuario.Login))
                {
                    throw new Exception($"O login informado: {Usuario.Login} não é um CPF de cliente válido.");
                }

                Clientes Cliente = this._clientesRepositorio.GetByCpf(Usuario.Login);

                if (Cliente == null)
                {
                    throw new Exception($"O cliente informado: {Usuario.Login} não existe.");
                }

                bool ValidaSenha = Cliente.Senha.Equals(MD5Hash.GerarHashMd5(Usuario.Senha));

                if (!ValidaSenha)
                {
                    throw new Exception($"A senha para o cliente informado: {Usuario.Login} não corresponde.");
                }

                Tuple <string, DateTime> Token = GerarToken(new UsuarioDTO {
                    Nome = Cliente.Nome, Perfil = "Cliente"
                });

                Retorno.Usuario   = Cliente.Nome;
                Retorno.Perfil    = "Cliente";
                Retorno.Token     = Token.Item1;
                Retorno.Expiracao = Token.Item2;
            }

            return(Retorno);
        }