Ejemplo n.º 1
0
        /// <summary>
        /// Preenche uma requição com a identificação e id do usuário
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <returns></returns>
        public static bool RetornarAutenticacaoRequisicaoPreenchida(BaseRequisicaoDto requisicaoDto)
        {
            UsuarioBll usuarioBll         = new UsuarioBll(true);
            string     senhaCriptografada = "";

            UtilitarioBll.CriptografarSenha(DateTime.Now.AddDays(-2).Date.ToString("dd/MM/yyyy").Replace("/", ""), ref senhaCriptografada);

            RequisicaoFazerLoginDto requisicaoLoginDto = new RequisicaoFazerLoginDto()
            {
                Email = "Suporte",
                Senha = senhaCriptografada
            };

            RetornoFazerLoginDto retornoDto = new RetornoFazerLoginDto();

            if (!usuarioBll.FazerLogin(requisicaoLoginDto, ref retornoDto))
            {
                return(false);
            }

            requisicaoDto.Identificacao = retornoDto.Identificacao;
            requisicaoDto.IdUsuario     = retornoDto.IdUsuario;

            return(true);
        }
Ejemplo n.º 2
0
        public void CrudUsuario()
        {
            RequisicaoEntidadeDto <UsuarioDto> requisicaoDto = new RequisicaoEntidadeDto <UsuarioDto>()
            {
                EntidadeDto = RetornarNovoUsuario()
            };

            string senhaCrip = "";

            UtilitarioBll.CriptografarSenha(requisicaoDto.EntidadeDto.Senha, ref senhaCrip);

            requisicaoDto.EntidadeDto.Senha = senhaCrip;

            Assert.IsTrue(Utilidades.RetornarAutenticacaoRequisicaoPreenchida(requisicaoDto));
            UsuarioBll usuarioBll = new UsuarioBll(true);

            // Incluir
            RetornoDto retornoDto = new RetornoDto();

            usuarioBll.Incluir(requisicaoDto, ref retornoDto);
            Assert.AreEqual(true, retornoDto.Retorno);

            // Editar
            requisicaoDto.EntidadeDto.Nome = "Usuario atualizado " + DateTime.Now;
            usuarioBll.Editar(requisicaoDto, ref retornoDto);
            Assert.AreEqual(true, retornoDto.Retorno);

            // Obter
            RetornoObterDto <UsuarioDto> retornoObterDto    = new RetornoObterDto <UsuarioDto>();
            RequisicaoObterDto           requisicaoObterDto = new RequisicaoObterDto()
            {
                Id            = requisicaoDto.EntidadeDto.Id,
                IdUsuario     = requisicaoDto.IdUsuario,
                Identificacao = requisicaoDto.Identificacao
            };

            usuarioBll.Obter(requisicaoObterDto, ref retornoObterDto);
            Assert.AreEqual(true, retornoObterDto.Retorno);

            // Obter lista
            RequisicaoObterListaDto requisicaoObterListaDto = new RequisicaoObterListaDto()
            {
                CampoOrdem           = "NOME",
                IdUsuario            = requisicaoDto.IdUsuario,
                Identificacao        = requisicaoDto.Identificacao,
                NumeroItensPorPagina = 2,
                Pagina = 1
            };

            RetornoObterListaDto <UsuarioDto> retornoObterListaDto = new RetornoObterListaDto <UsuarioDto>();

            usuarioBll.ObterListaFiltrada(requisicaoObterListaDto, ref retornoObterListaDto);
            Assert.AreEqual(true, retornoObterDto.Retorno);

            // Excluir
            usuarioBll.Excluir(requisicaoObterDto, ref retornoDto);
            Assert.AreEqual(true, retornoObterDto.Retorno);
        }
Ejemplo n.º 3
0
        public ActionResult Login(LoginModel model)
        {
            //Validar a model recebida
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            string senhaCriptografada = "";

            UtilitarioBll.CriptografarSenha(model.SenhaLogin, ref senhaCriptografada);

            model.SenhaLogin = senhaCriptografada;

            //Converter para DTO
            string mensagemErro = "";
            RequisicaoFazerLoginDto requisicaoFazerLoginDto = new RequisicaoFazerLoginDto();

            if (!model.ConverterModelParaDto(ref requisicaoFazerLoginDto, ref mensagemErro))
            {
                ModelState.AddModelError("", mensagemErro);
                return(View(model));
            }

            //Preparar requisição e retorno
            RetornoFazerLoginDto retorno = new RetornoFazerLoginDto();

            //Consumir o serviço
            UsuarioBll usuarioBll = new UsuarioBll(true);

            usuarioBll.FazerLogin(requisicaoFazerLoginDto, ref retorno);

            //Verificar o retorno
            if (retorno.Retorno == false)
            {
                //Se houver erro, exibir na tela de inclusão
                ModelState.AddModelError("", retorno.Mensagem);
                return(View(model));
            }

            //Guardar na sessão
            SessaoUsuario.SessaoLogin.Identificacao = retorno.Identificacao;
            SessaoUsuario.SessaoLogin.IdUsuario     = retorno.IdUsuario;
            SessaoUsuario.SessaoLogin.NomeUsuario   = retorno.NomeUsuario;
            SessaoUsuario.SessaoLogin.Administrador = retorno.UsuarioAdministrador;

            //Retornar para index do site
            if (string.IsNullOrWhiteSpace(model.EnderecoRetorno))
            {
                return(Redirect("Inicio"));
            }
            else
            {
                return(Redirect(model.EnderecoRetorno));
            }
        }
Ejemplo n.º 4
0
        public ActionResult Editar(UsuarioModel model)
        {
            //Se não tiver login, encaminhar para a tela de login
            if (string.IsNullOrWhiteSpace(SessaoUsuario.SessaoLogin.Identificacao))
            {
                return(RedirectToAction("Login", "Usuario"));
            }

            if (!SessaoUsuario.SessaoLogin.Administrador)
            {
                ViewBag.MensagemErro = "Para editar um usuário é necessário " +
                                       $"logar com um usuário administrador.";
                return(View("SemPermissao"));
            }

            //Valida a entidade recebida
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            string senhaCriptografada = "";

            if (!string.IsNullOrWhiteSpace(model.Senha))
            {
                UtilitarioBll.CriptografarSenha(model.Senha, ref senhaCriptografada);
            }

            if (string.IsNullOrWhiteSpace(model.SenhaAntiga))
            {
                ModelState.AddModelError("", "Para alterar os dados do usuário informa a senha atual.");
                return(View(model));
            }

            string senhaAntigaCriptografada = "";

            UtilitarioBll.CriptografarSenha(model.SenhaAntiga, ref senhaAntigaCriptografada);

            //Converte para DTO
            UsuarioDto usuarioDto   = new UsuarioDto();
            string     mensagemErro = "";

            if (!model.ConverterModelParaDto(ref usuarioDto, ref mensagemErro))
            {
                ViewBag.MensagemErro = mensagemErro;
                return(View("Erro"));
            }

            usuarioDto.SenhaAntiga = senhaAntigaCriptografada;
            if (string.IsNullOrWhiteSpace(senhaCriptografada))
            {
                usuarioDto.Senha = senhaAntigaCriptografada;
            }
            else
            {
                usuarioDto.Senha = senhaCriptografada;
            }

            //Preparar requisição e retorno
            RetornoDto retorno = new RetornoDto();
            RequisicaoEntidadeDto <UsuarioDto> requisicaoDto = new RequisicaoEntidadeDto <UsuarioDto>()
            {
                EntidadeDto   = usuarioDto,
                Identificacao = SessaoUsuario.SessaoLogin.Identificacao,
                IdUsuario     = SessaoUsuario.SessaoLogin.IdUsuario
            };

            //Consumir o serviço
            UsuarioBll usuarioBll = new UsuarioBll(true);

            usuarioBll.Editar(requisicaoDto, ref retorno);

            //Tratar o retorno
            if (retorno.Retorno == false)
            {
                ModelState.AddModelError("", retorno.Mensagem);
                return(View(model));
            }

            TempData["Retorno"] = "ALTERADO";

            //Voltar para o visualizar do usuario
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 5
0
        public ActionResult Incluir(UsuarioModel model)
        {
            //Se não tiver login, encaminhar para a tela de login
            if (string.IsNullOrWhiteSpace(SessaoUsuario.SessaoLogin.Identificacao))
            {
                return(RedirectToAction("Login", "Usuario"));
            }

            if (!SessaoUsuario.SessaoLogin.Administrador)
            {
                ViewBag.MensagemErro = "Para incluir um usuário é necessário " +
                                       $"logar com um usuário administrador.";
                return(View("SemPermissao"));
            }

            //Validar a model recebida
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Checar se a senha foi preenchida
            if (string.IsNullOrWhiteSpace(model.Senha))
            {
                ModelState.AddModelError("Senha", "A senha é obrigatória para incluir o usuário");
                return(View(model));
            }

            //Converter para DTO
            UsuarioDto usuarioDto   = new UsuarioDto();
            string     mensagemErro = "";

            if (!model.ConverterModelParaDto(ref usuarioDto, ref mensagemErro))
            {
                ModelState.AddModelError("", $"Erro ao converter para Dto: {mensagemErro}");
                return(View(model));
            }

            string senhaCriptografada = "";

            if (!string.IsNullOrWhiteSpace(model.Senha))
            {
                UtilitarioBll.CriptografarSenha(model.Senha, ref senhaCriptografada);
            }

            usuarioDto.Senha = senhaCriptografada;
            usuarioDto.Id    = Guid.NewGuid();

            //Preparar requisição e retorno
            RetornoDto retorno = new RetornoDto();
            RequisicaoEntidadeDto <UsuarioDto> requisicaoDto = new RequisicaoEntidadeDto <UsuarioDto>()
            {
                EntidadeDto   = usuarioDto,
                Identificacao = SessaoUsuario.SessaoLogin.Identificacao,
                IdUsuario     = SessaoUsuario.SessaoLogin.IdUsuario
            };

            //Consumir o serviço
            UsuarioBll usuarioBll = new UsuarioBll(true);

            usuarioBll.Incluir(requisicaoDto, ref retorno);

            //Verificar o retorno
            if (retorno.Retorno == false)
            {
                //Se houver erro, exibir na tela de inclusão
                ModelState.AddModelError("", retorno.Mensagem);
                return(View(model));
            }

            TempData["Retorno"] = "INCLUIDO";

            //Retornar para index
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Envia um email com uma nova senha
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        public bool EnviarEmailRecuperacao(RequisicaoFazerLoginDto requisicaoDto, RetornoDto retornoDto)
        {
            LogVo logVo = new LogVo()
            {
                Id         = Guid.NewGuid(),
                IdEntidade = Guid.Empty,
                IdUsuario  = Guid.Empty,
                Recurso    = LogRecursos.FazerLogin
            };

            if (string.IsNullOrWhiteSpace(requisicaoDto.Email))
            {
                retornoDto.Mensagem = "Informe o email para recuperar a senha.";
                retornoDto.Retorno  = false;

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            string mensagemErro = "";
            IQueryable <UsuarioVo> query;

            if (!ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = $"Erro ao listar os usuários: {mensagemErro}";

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            //Procurar o email com o flag válido
            UsuarioVo usuarioVo;

            query = query.Where(u => u.Email.Trim() == requisicaoDto.Email.Trim() && u.Inativo == false);

            try
            {
                usuarioVo = query.FirstOrDefault();
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = $"Falha ao obter o usuário do banco de dados: {ex.Message}";

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            if (usuarioVo == null)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = $"Email não encontrado.";

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            string opcoes = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvxzwy";
            Random random = new Random();
            string senha  = new string(Enumerable.Repeat(opcoes, 8).Select(s => s[random.Next(s.Length)]).ToArray());

            string senhaCriptografada = "";

            UtilitarioBll.CriptografarSenha(senha, ref senhaCriptografada);
            usuarioVo.Senha = senhaCriptografada;

            if (!EditarBd(usuarioVo, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Erro ao editar o usuário: {retornoDto.Mensagem}";

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            UsuarioDto usuarioDto = new UsuarioDto();

            if (!ConverterVoParaDto(usuarioVo, ref usuarioDto, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Erro ao converter o usuário de Vo para Dto: {mensagemErro}";
                retornoDto.Retorno  = false;

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            string corpoEmail = $"<p> Olá <strong>{usuarioVo.Nome}</strong></p>" +
                                "<p> Sua senha para acessar o sistema PizzaByte foi recuperada. Você poderá utilizar essa senha para acessar " +
                                "o sistema e, se desejar, você poderá alterar esta senha editando o seu usuário.</p>" +
                                $"<p> Sua nova senha é: <strong>{senha}</strong></p><br/>" +
                                "<p> Por favor não responda este e-mail.</p>";

            if (!UtilitarioBll.EnviarEmail(usuarioVo.Email, "Recuperação de senha - PizzaByte", corpoEmail, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Problemas para enviar o email com a nova senha. Se o erro persistir, entre em contato com o suporte. Mensagem: " + mensagemErro;
                retornoDto.Retorno  = false;

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            // Salva as alterações
            if (!pizzaByteContexto.Salvar(ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Problemas para salvar a nova senha: " + mensagemErro;

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            retornoDto.Mensagem = "Ok";
            retornoDto.Retorno  = true;
            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Faz o login com email e senha
        /// </summary>
        public bool FazerLogin(RequisicaoFazerLoginDto requisicaoDto, ref RetornoFazerLoginDto retornoDto)
        {
            LogVo logVo = new LogVo()
            {
                Id         = Guid.NewGuid(),
                IdEntidade = Guid.Empty,
                IdUsuario  = Guid.Empty,
                Recurso    = LogRecursos.FazerLogin
            };

            //Validar email e senha
            if (string.IsNullOrWhiteSpace(requisicaoDto.Email))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "O email é obrigatório para fazer o login";

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            if (string.IsNullOrWhiteSpace(requisicaoDto.Senha))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "A senha é obrigatória para fazer o login";

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            string nomeUsuario = "Suporte";
            Guid   idUsuario   = UtilitarioBll.RetornarIdUsuarioSuporte();
            bool   usuarioAdm  = false;

            //Se for o usuário suporte
            if (requisicaoDto.Email.Trim().ToUpper() == "SUPORTE")
            {
                string senhaCriptografada = "";
                UtilitarioBll.CriptografarSenha(DateTime.Now.AddDays(-2).Date.ToString("dd/MM/yyyy").Replace("/", ""), ref senhaCriptografada);

                if (requisicaoDto.Senha.Trim() != senhaCriptografada)
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Senha de suporte incorreta.";

                    logVo.Mensagem = retornoDto.Mensagem;
                    logBll.RegistrarLogVo(logVo);
                    return(false);
                }

                usuarioAdm = true;
            }
            else
            {
                string mensagemErro = "";
                IQueryable <UsuarioVo> query;
                if (!ObterQueryBd(out query, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = $"Falha ao listar os usuários: {mensagemErro}";

                    logVo.Mensagem = retornoDto.Mensagem;
                    logBll.RegistrarLogVo(logVo);
                    return(false);
                }

                UsuarioVo usuarioVo;

                //Procurar o email com o flag ativo
                query = query.Where(u => u.Email.Trim() == requisicaoDto.Email.Trim() && u.Inativo == false);

                try
                {
                    usuarioVo = query.FirstOrDefault();
                }
                catch (Exception ex)
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = $"Falha ao obter o usuário do banco de dados: {ex.Message}";

                    logVo.Mensagem = retornoDto.Mensagem;
                    logBll.RegistrarLogVo(logVo);
                    return(false);
                }

                if (usuarioVo == null)
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = $"Email ou senha inválidos. ";

                    logVo.Mensagem = retornoDto.Mensagem;
                    logBll.RegistrarLogVo(logVo);
                    return(false);
                }

                if (!requisicaoDto.Senha.Equals(usuarioVo.Senha))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = $"Email ou senha inválidos ";

                    logVo.Mensagem = retornoDto.Mensagem;
                    logBll.RegistrarLogVo(logVo);
                    return(false);
                }

                usuarioAdm  = usuarioVo.Administrador;
                nomeUsuario = usuarioVo.Nome;
                idUsuario   = usuarioVo.Id;
            }

            string identificacao = DateTime.Now.ToString("dd/MM/yyyy hh:mm") + UtilitarioBll.RetornaGuidValidação() + idUsuario.ToString() + $"Adm={(usuarioAdm ? "1" : "0")}";
            string identificacaoCriptografada = "";

            if (!UtilitarioBll.CriptografarString(identificacao, ref identificacaoCriptografada))
            {
                retornoDto.Mensagem = "Falha ao fazer o login: Não foi possível obter a identificação.";
                retornoDto.Retorno  = false;

                logVo.Mensagem = retornoDto.Mensagem;
                logBll.RegistrarLogVo(logVo);
                return(false);
            }

            retornoDto.IdUsuario            = idUsuario;
            retornoDto.NomeUsuario          = nomeUsuario;
            retornoDto.Identificacao        = identificacaoCriptografada;
            retornoDto.UsuarioAdministrador = usuarioAdm;
            retornoDto.Retorno = true;
            return(true);
        }