private bool Acessar(string email, string senha, int contratanteId) { Usuario usuario = usuarioBP.BuscarPorLoginParaAcesso(email); if (usuario != null) { if (PasswordHash.ValidatePassword(senha, usuario.SENHA)) { Autenticado aut = Mapper.Map <Autenticado>(usuario); string caminhoFisico = Server.MapPath("/ImagensUsuarios"); string caminhoCompleto = string.Empty; Contratante contratante = contratanteBP.BuscarPorId(contratanteId); string arquivo = "ImagemContratante" + contratanteId + (string.IsNullOrEmpty(contratante.EXTENSAO_IMAGEM) ? ".png" : contratante.EXTENSAO_IMAGEM); caminhoCompleto = caminhoFisico + "\\" + arquivo; aut.Imagem = arquivo; aut.NomeEmpresa = ((string.IsNullOrEmpty(contratante.NOME_FANTASIA)) ? contratante.RAZAO_SOCIAL : contratante.NOME_FANTASIA); if (contratante.WFD_GRUPO.Count > 0) { aut.Grupo = contratante.WFD_GRUPO.First().ID; } string nomeUsuario = User.Identity.Name; MemoryStream stream1 = new MemoryStream(); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Autenticado)); ser.WriteObject(stream1, aut); stream1.Position = 0; StreamReader sr = new StreamReader(stream1); string sSr = sr.ReadToEnd(); string dados = Cripto.Criptografar(sSr, Key); List <Perfil> lstWacUsuarioPerfil = usuario.WAC_PERFIL.ToList(); string roles = string.Empty; foreach (var perfil in lstWacUsuarioPerfil) { foreach (var funcao in perfil.WAC_FUNCAO) { if (!roles.Contains(funcao.CODIGO)) { roles += funcao.CODIGO + ","; } } } _metodosGerais.CriarAuthTicket(dados, roles); if (usuario.TROCAR_SENHA != null) { usuario.TROCAR_SENHA = null; usuarioBP.AlterarUsuario(usuario); } if (usuario.CONTRATANTE_ID != null) { if (usuario.Contratante.LOGO_FOTO != null && System.IO.Directory.Exists(caminhoFisico)) { System.IO.File.WriteAllBytes(caminhoCompleto, usuario.Contratante.LOGO_FOTO.ToArray()); } } _metodosGerais.AuthenticateRequest(); return(true); } } return(false); }
public ActionResult Acesso(AcessoVM model) { string chave = Path.GetRandomFileName().Replace(".", ""); try { var usuarioLogado = _usuarioService.BuscarPorLogin(model.Login); //Valida Usuário Existe if (usuarioLogado == null) { Log.Info("Usuário inválido!"); FinalizarAcesso(); ModelState.AddModelError("", "Usuário inválido!"); } if (ModelState.IsValid) { ProcessoLoginDTO processoLogin = _processoLoginService.ExecutarLogin(model.Login, model.Senha); if (usuarioLogado.ATIVO) { if (Acessar(model.Login, model.Senha)) { if (model.TipoCadastroNovoUsuario == EnumTipoCadastroNovoUsuario.PreCadastrado) { return(RedirectToAction("PopularValidarUsuarioSenha", "PreCadastro", new { area = "Externo", chaveurl = Cripto.Criptografar(string.Format("idContratante={0}&cnpj={1}&senha={2}", model.ContratanteId, model.Login, model.Senha), Key), returnUrl = model.ReturnUrl })); } if (usuarioLogado.CONTRATANTE_ID == null) //Se for Fornecedor vá pra essa página { if (model.SolicitacaoId == null) { var pjpf = _pjPfService.BuscarIdFornecedorPorCnpj(model.Login); if (pjpf == 0) { model.SolicitacaoId = _solicitacaoCadastroFornecedorService.BuscarIdSolicitacaoPorCnpj(model.Login); } else { model.FornecedorId = pjpf; } } return(RedirectToActionPermanent("FichaCadastral", "Documento", new { chaveurl = Cripto.Criptografar(string.Format("SolicitacaoID={0}&FornecedorID={1}&ContratanteID=0", model.SolicitacaoId, model.FornecedorId), Key) })); } if (usuarioLogado.PRIMEIRO_ACESSO == true) { usuarioLogado.TROCAR_SENHA = chave; _usuarioService.AlterarUsuario(usuarioLogado); return(RedirectToAction("TrocaSenhaEsqueceu", "Home", new { chaveurl = Cripto.Criptografar(string.Format("id={0}&chave={1}", usuarioLogado.ID, chave), Key) })); } if (string.IsNullOrEmpty(model.ReturnUrl)) { return(RedirectToAction("Index", "HomeAdmin")); } else { string[] url = model.ReturnUrl.Split(new char[] { '/' }); if (url.Length > 0) { return(Redirect(model.ReturnUrl)); } else { return(RedirectToAction("Index", "HomeAdmin")); } } } } else { Log.Error(processoLogin.Mensagem); ModelState.AddModelError("", processoLogin.Mensagem); } } Log.Info("Erro ao tentar logar!"); FinalizarAcesso(); ModelState.AddModelError("", "Erro ao tentar logar confirme login e senha de seu usuário"); return(View(model)); } catch (EntityException ex) { Log.Error(ex); ModelState.AddModelError("", "Ocorreu um erro de conexão."); FinalizarAcesso(); return(View(model)); } catch (Exception ex) { Log.Error(ex); ModelState.AddModelError("", ex.Message); FinalizarAcesso(); return(View(model)); } }