/// <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); }
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); }
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)); } }
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")); }
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")); }
/// <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); }
/// <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); }