Ejemplo n.º 1
0
    private void AddSAMLCookie()
    {
        if (!string.IsNullOrEmpty(SAMLRequest.AssertionConsumerServiceURL))
        {
            HttpCookie cookie = Request.Cookies["SistemasLogged"];
            if (cookie == null)
            {
                cookie = new HttpCookie("SistemasLogged");
                Response.Cookies.Add(cookie);
            }

            // Carrega a Entidade SYS_Sistema apartir do caminho de login
            SYS_Sistema entitySistema = new SYS_Sistema {
                sis_caminho = SAMLRequest.AssertionConsumerServiceURL
            };
            if (SYS_SistemaBO.GetSelectBy_sis_caminho(entitySistema, SYS_SistemaBO.TypePath.login))
            {
                // Armazena sistema no Cookie
                cookie.Values[entitySistema.sis_id.ToString()] = entitySistema.sis_id.ToString();
                // Atualiza dados do Cookie
                Response.Cookies.Set(cookie);
            }
            else
            {
                throw new ValidationException("Não foi possível atender a solicitação, sistema emissor da requisição não está cadastrado corretamente.");
            }
        }
        else
        {
            throw new ValidationException("Não foi possível atender a solicitação, requisição inválida.");
        }
    }
Ejemplo n.º 2
0
    private void RedirecionarLogin(Guid usu_id)
    {
        string caminhoRedirecionar = String.Concat(ApplicationWEB._DiretorioVirtual, "Sistema.aspx");

        if (GetSistemaID_QueryString > 0)
        {
            __SessionWEB.SistemaID_QueryString = GetSistemaID_QueryString;
        }

        if (__SessionWEB.SistemaID_QueryString > 0)
        {
            List <SYS_Sistema> listaSistemaPermissao = new List <SYS_Sistema>(SYS_SistemaBO.GetSelectBy_usu_id(usu_id));

            if (listaSistemaPermissao.Exists(p => p.sis_id == __SessionWEB.SistemaID_QueryString))
            {
                SYS_Sistema sistema = new SYS_Sistema {
                    sis_id = __SessionWEB.SistemaID_QueryString
                };
                SYS_SistemaBO.GetEntity(sistema);

                if (!sistema.IsNew)
                {
                    caminhoRedirecionar = sistema.sis_caminho;
                }
            }
        }

        Response.Redirect(caminhoRedirecionar, false);
        HttpContext.Current.ApplicationInstance.CompleteRequest();
    }
Ejemplo n.º 3
0
        /// <summary>
        /// Configura a Session com os dados do sistema
        /// </summary>
        protected void LoadSessionSistema()
        {
            // Armazena o nome do sistema atual na Session
            SYS_Sistema entitySistema = new SYS_Sistema {
                sis_id = ApplicationWEB.SistemaID
            };

            SYS_SistemaBO.GetEntity(entitySistema);
            __SessionWEB.TituloSistema = entitySistema.sis_nome;

            // Armazena o caminho do logo do sistema atual
            __SessionWEB.UrlLogoSistema = __SessionWEB.LogoImagemCaminho + entitySistema.sis_urlLogoCabecalho;

            // Armazena caminho do logo e url do cliente na entidade logada (se existir)
            SYS_SistemaEntidade entitySistemaEntidade = new SYS_SistemaEntidade {
                sis_id = ApplicationWEB.SistemaID, ent_id = __SessionWEB.__UsuarioWEB.Usuario.ent_id
            };

            SYS_SistemaEntidadeBO.GetEntity(entitySistemaEntidade);

            if (!string.IsNullOrEmpty(entitySistemaEntidade.sen_urlCliente))
            {
                __SessionWEB.UrlInstituicao = entitySistemaEntidade.sen_urlCliente;
            }

            if (!string.IsNullOrEmpty(entitySistemaEntidade.sen_logoCliente))
            {
                __SessionWEB.UrlLogoInstituicao = __SessionWEB.LogoImagemCaminho + entitySistemaEntidade.sen_logoCliente;
            }
            else
            {
                __SessionWEB.UrlLogoInstituicao = __SessionWEB.LogoImagemCaminho + "LOGO_CLIENTE.png";
            }
        }
Ejemplo n.º 4
0
        public IList <SYS_Sistema> SelectBy_usu_id(Guid usu_id)
        {
            List <SYS_Sistema>         lt = new List <SYS_Sistema>();
            QuerySelectStoredProcedure qs = new QuerySelectStoredProcedure("NEW_SYS_Sistema_SELECTBY_usu_id", _Banco);

            try
            {
                #region PARAMETROS

                Param               = qs.NewParameter();
                Param.DbType        = DbType.Guid;
                Param.ParameterName = "@usu_id";
                Param.Size          = 16;
                Param.Value         = usu_id;
                qs.Parameters.Add(Param);

                #endregion

                qs.Execute();

                foreach (DataRow dr in qs.Return.Rows)
                {
                    SYS_Sistema entity = new SYS_Sistema();
                    lt.Add(DataRowToEntity(dr, entity));
                }
                return(lt);
            }
            catch
            {
                throw;
            }
        }
Ejemplo n.º 5
0
    private void _Carregar_dados()
    {
        try
        {
            SYS_Sistema sistemas = new SYS_Sistema {
                sis_id = _VS_sis_id
            };
            SYS_SistemaBO.GetEntity(sistemas);

            _VS_SistemaEntidade = SYS_SistemaEntidadeBO.SelectEntidade(_VS_sis_id, false, 1, 1);

            _VS_sis_id                = sistemas.sis_id;
            _txtsisnome.Text          = sistemas.sis_nome;
            _txtsiscaminho.Text       = sistemas.sis_caminho;
            _txtsiscaminhoLogout.Text = sistemas.sis_caminhoLogout;
            _txtsisDescricao.Text     = sistemas.sis_descricao;
            _txturlintegracao.Text    = sistemas.sis_urlIntegracao;
            _ckbOcultaLogo.Checked    = sistemas.sis_ocultarLogo;

            if (_VS_SistemaEntidade.Rows.Count <= 0)
            {
                _VS_SistemaEntidade = null;
            }

            string caminhoBDImagem = Server.MapPath(caminhoLogos + sistemas.sis_urlImagem);
            if (File.Exists(caminhoBDImagem))
            {
                imgImagemSistema.Visible  = true;
                imgImagemSistema.ImageUrl = caminhoLogos + sistemas.sis_urlImagem;
            }
            else
            {
                imgImagemSistema.Visible = false;
            }

            caminhoBDImagem = Server.MapPath(caminhoLogos + sistemas.sis_urlLogoCabecalho);
            if (File.Exists(caminhoBDImagem))
            {
                imgLogoCabecalho.Visible  = true;
                imgLogoCabecalho.ImageUrl = caminhoLogos + sistemas.sis_urlLogoCabecalho;
            }
            else
            {
                imgLogoCabecalho.Visible = false;
            }

            _dgvSistemaEntidade.DataSource = _VS_SistemaEntidade;
            _dgvSistemaEntidade.DataBind();
            _uppGridSistemaEntidade.Update();
            _uppCadastroSistema.Update();
        }
        catch (Exception e)
        {
            ApplicationWEB._GravaErro(e);
            _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar o sistema.", UtilBO.TipoMensagem.Erro);
            _uppCadastroSistema.Update();
        }
    }
Ejemplo n.º 6
0
        private void CreateSAMLResponse()
        {
            IDProvider config = IDProvider.GetConfig();

            SAMLResponse.ID           = SAMLUtility.GenerateID();
            SAMLResponse.Version      = SAMLUtility.VERSION;
            SAMLResponse.IssueInstant = DateTime.UtcNow.AddMinutes(10);
            SAMLResponse.InResponseTo = SAMLRequest.ID;

            SAMLResponse.Issuer       = new NameIDType();
            SAMLResponse.Issuer.Value = config.id;

            SAMLResponse.Status            = new StatusType();
            SAMLResponse.Status.StatusCode = new StatusCodeType();

            // Atualiza Cookie de sistemas autenticados e configura Status
            HttpCookie cookie = this.Context.Request.Cookies["SistemasLogged"];

            if (cookie != null)
            {
                // Carrega a Entidade SYS_Sistema apartir do caminho de logout
                SYS_Sistema entitySistema = new SYS_Sistema {
                    sis_caminhoLogout = ((NameIDType)SAMLRequest.Item).Value
                };
                if (SYS_SistemaBO.GetSelectBy_sis_caminho(entitySistema, SYS_SistemaBO.TypePath.logout))
                {
                    // Remove o sistema do Cookie
                    cookie.Values.Remove(entitySistema.sis_id.ToString());
                    // Atualiza dados do Cookie
                    this.Context.Response.Cookies.Set(cookie);

                    if (!cookie.Values.AllKeys.Contains(entitySistema.sis_id.ToString()))
                    {
                        SAMLResponse.Status.StatusCode.Value = SAMLUtility.StatusCodes.Success;
                        SAMLResponse.Status.StatusMessage    = "A solicitação foi realizada com sucesso.";
                    }
                    else
                    {
                        SAMLResponse.Status.StatusCode.Value = SAMLUtility.StatusCodes.RequestDenied;
                        SAMLResponse.Status.StatusMessage    = "Não foi possível atender a solicitação, o sistema emissor da requisição não está autenticado.";
                    }
                }
                else
                {
                    SAMLResponse.Status.StatusCode.Value = SAMLUtility.StatusCodes.RequestDenied;
                    SAMLResponse.Status.StatusMessage    = "Não foi possível atender a solicitação, sistema emissor da requisição não está cadastrado corretamente.";;
                }
            }
            else
            {
                SAMLResponse.Status.StatusCode.Value = SAMLUtility.StatusCodes.RequestDenied;
                SAMLResponse.Status.StatusMessage    = "Não foi possível atender a solicitação.";
            }

            HttpPostBinding binding = new HttpPostBinding(SAMLResponse, HttpUtility.UrlDecode(this.Context.Request[HttpBindingConstants.RelayState]));

            binding.SendResponse(this.Context, HttpUtility.UrlDecode(this.Context.Request[HttpBindingConstants.RelayState]), SAMLTypeSSO.logout);
        }
Ejemplo n.º 7
0
    private void _Salvar()
    {
        try
        {
            SYS_Sistema entsis = new SYS_Sistema {
                sis_id = _VS_sis_id
            };
            SYS_SistemaBO.GetEntity(entsis);

            entsis.sis_nome          = _txtsisnome.Text;
            entsis.sis_caminho       = _txtsiscaminho.Text;
            entsis.sis_caminhoLogout = _txtsiscaminhoLogout.Text;
            entsis.sis_descricao     = _txtsisDescricao.Text;
            entsis.sis_urlIntegracao = _txturlintegracao.Text;
            entsis.sis_ocultarLogo   = _ckbOcultaLogo.Checked;
            entsis.IsNew             = false;

            if (!string.IsNullOrEmpty(fupImagemSistema.FileName))
            {
                entsis.sis_urlImagem = NomeLogoImagemMenu;
                SalvaImagem(fupImagemSistema, NomeLogoImagemMenu, tamanhoMaxBytes);
            }

            List <SYS_SistemaEntidade> _List_Entities_SistemEntidade = SYS_SistemaEntidadeBO.CriaList_Entities_SistemaEntidade(_VS_SistemaEntidade);

            if (!string.IsNullOrEmpty(fupLogoCabecalho.FileName))
            {
                entsis.sis_urlLogoCabecalho = NomeLogoCabecalho;
                SalvaImagem(fupLogoCabecalho, NomeLogoCabecalho, tamanhoMaxBytes);
            }

            if (SYS_SistemaBO.SalvarUrlInte(entsis, _List_Entities_SistemEntidade))
            {
                ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Update, "sis_id:" + entsis.sis_id);
                __SessionWEB.PostMessages = UtilBO.GetErroMessage("Sistema salvo com sucesso.", UtilBO.TipoMensagem.Sucesso);

                Response.Redirect(__SessionWEB._AreaAtual._Diretorio + "Sistemas/Busca.aspx", false);
            }
            else
            {
                _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o sistema.", UtilBO.TipoMensagem.Erro);
            }
        }
        catch (ValidationException e)
        {
            _lblMessage.Text = UtilBO.GetErroMessage(e.Message, UtilBO.TipoMensagem.Alerta);
        }
        catch (Exception e)
        {
            ApplicationWEB._GravaErro(e);
            _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o sistema.", UtilBO.TipoMensagem.Erro);
        }
        finally
        {
            _uppCadastroSistema.Update();
        }
    }
Ejemplo n.º 8
0
        /// <summary>
        /// Atribui o sis_id que efetuou o logout à session, caso o login seja feito diretamente através da query string
        /// </summary>
        /// <param name="caminhoLogout">Caminho de logout do sistema que efetuou a solicitação</param>
        private void AtribuirSessionSisIDLogout(string caminhoLogout)
        {
            if (__SessionWEB.SistemaID_QueryString > 0 && __SessionWEB.SistemaIDLogout_QueryString <= 0)
            {
                SYS_Sistema sistemaLogout = new SYS_Sistema {
                    sis_caminhoLogout = caminhoLogout
                };
                SYS_SistemaBO.GetSelectBy_sis_caminho(sistemaLogout, SYS_SistemaBO.TypePath.logout);

                __SessionWEB.SistemaIDLogout_QueryString = sistemaLogout.sis_id;
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Carrega sistema apartir do caminho de login
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public bool SelectBy_sis_caminho(SYS_Sistema entity)
        {
            QuerySelectStoredProcedure qs = new QuerySelectStoredProcedure("NEW_SYS_Sistema_SELECTBY_sis_caminho", _Banco);

            try
            {
                #region PARAMETROS

                Param               = qs.NewParameter();
                Param.DbType        = DbType.AnsiString;
                Param.ParameterName = "@sis_caminho";
                Param.Size          = 2000;
                if (!string.IsNullOrEmpty(entity.sis_caminho))
                {
                    Param.Value = entity.sis_caminho;
                }
                else
                {
                    throw new ArgumentNullException("entity", "O parâmetro entity.sis_caminho não pode ser vázio ou nulo.");
                }

                qs.Parameters.Add(Param);

                #endregion

                qs.Execute();

                if (qs.Return.Rows.Count > 0)
                {
                    entity = DataRowToEntity(qs.Return.Rows[0], entity, false);
                    return(true);
                }
                return(false);
            }
            catch
            {
                throw;
            }
            finally
            {
                qs.Parameters.Clear();
            }
        }
Ejemplo n.º 10
0
        private static IList <Claim> GetClaims(SYS_Usuario usuarioCore, SYS_Grupo entityGrupo = null)
        {
            string roles   = "";
            string grupoId = null;

            if (entityGrupo != null)
            {
                SYS_Sistema entitySistema = new SYS_Sistema
                {
                    sis_id = entityGrupo.sis_id
                };
                grupoId = entityGrupo.gru_id.ToString();

                SYS_SistemaBO.GetEntity(entitySistema);

                if (entitySistema.sis_tipoAutenticacao == 1)
                {
                    SYS_Visao entityVisao = new SYS_Visao
                    {
                        vis_id = entityGrupo.vis_id
                    };
                    SYS_VisaoBO.GetEntity(entityVisao);

                    roles = entityVisao.vis_nome;
                }
            }

            string name = FormatarUserNameDoCookie(usuarioCore.ent_id.ToString(), usuarioCore.usu_login, grupoId);

            var claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.NameIdentifier, usuarioCore.usu_id.ToString()));
            claims.Add(new Claim(ClaimTypes.Name, name));
            claims.Add(new Claim(ClaimTypes.Email, usuarioCore.usu_email ?? string.Empty));
            claims.Add(new Claim(ClaimTypes.Role, roles));
            claims.Add(new Claim(AutenticadorCustomClaimTypes.EntidadeId, usuarioCore.ent_id.ToString()));
            claims.Add(new Claim(AutenticadorCustomClaimTypes.GrupoId, grupoId ?? string.Empty));

            return(claims);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Atualiza o campo de auditoria nos modulos
        /// </summary>
        /// <returns>True: ocorreu alguma alteração / False: não ocorreu nenhuma alteração </returns>
        public bool UpdateUrlInte
        (
            SYS_Sistema sistema
        )
        {
            int totalRecords;

            QuerySelectStoredProcedure ques = new QuerySelectStoredProcedure("NEW_SYS_Sistema_UPDATE_UrlIntegracao", _Banco);

            try
            {
                #region PARAMETROS

                Param               = ques.NewParameter();
                Param.DbType        = DbType.Int32;
                Param.ParameterName = "@sis_id";
                Param.Size          = 4;
                if (sistema.sis_id > 0)
                {
                    Param.Value = sistema.sis_id;
                }
                else
                {
                    Param.Value = DBNull.Value;
                }
                ques.Parameters.Add(Param);

                Param               = ques.NewParameter();
                Param.DbType        = DbType.AnsiString;
                Param.ParameterName = "@sis_caminho";
                Param.Size          = 100;
                if (!string.IsNullOrEmpty(sistema.sis_caminho))
                {
                    Param.Value = sistema.sis_caminho;
                }
                else
                {
                    Param.Value = DBNull.Value;
                }
                ques.Parameters.Add(Param);

                Param               = ques.NewParameter();
                Param.DbType        = DbType.AnsiString;
                Param.ParameterName = "@sis_urlIntegracao";
                Param.Size          = 200;
                if (!string.IsNullOrEmpty(sistema.sis_urlIntegracao))
                {
                    Param.Value = sistema.sis_urlIntegracao;
                }
                else
                {
                    Param.Value = DBNull.Value;
                }
                ques.Parameters.Add(Param);

                #endregion

                ques.Execute();
                totalRecords = ques.Return.Rows.Count;

                if (totalRecords > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                ques.Parameters.Clear();
            }
        }
Ejemplo n.º 12
0
        public new void ProcessRequest(HttpContext context)
        {
            try
            {
                // ***** REQUEST *****
                if (!String.IsNullOrEmpty(context.Request[HttpBindingConstants.SAMLRequest]))
                {
                    // Recupera LogoutRequest
                    StringBuilder result = new StringBuilder();

                    byte[]       encoded      = Convert.FromBase64String(HttpUtility.UrlDecode(context.Request[HttpBindingConstants.SAMLRequest]).Replace(" ", "+"));
                    MemoryStream memoryStream = new MemoryStream(encoded);
                    using (DeflateStream stream = new DeflateStream(memoryStream, CompressionMode.Decompress))
                    {
                        StreamReader reader = new StreamReader(new BufferedStream(stream), Encoding.GetEncoding("iso-8859-1"));
                        reader.Peek();
                        result.Append(reader.ReadToEnd());
                        stream.Close();
                    }
                    SAMLRequest = SAMLUtility.DeserializeFromXmlString <LogoutRequestType>(result.ToString());

                    AtribuirSessionSisIDLogout(((NameIDType)SAMLRequest.Item).Value);

                    // Criação e configuração LogoutResponse
                    SAMLResponse = new ResponseType();
                    CreateSAMLResponse();
                }
                // ***** RESPONSE *****
                else if (!String.IsNullOrEmpty(context.Request[HttpBindingConstants.SAMLResponse]))
                {
                    throw new NotImplementedException();
                }
                else
                {
                    AtribuirSessionSisIDLogout(String.Concat(ApplicationWEB._DiretorioVirtual, "Logout.ashx"));

                    __SessionWEB.SistemasRequestLogout++;

                    //Se existir link de retorno na primeira vez, significa que o sistema que iniciou o processo de logout
                    //enviou na queryString o endereço que deve ser redirecionado após terminar todo o processo.
                    if (!String.IsNullOrEmpty(context.Request["SistemaUrlLogout"]) && __SessionWEB.SistemasRequestLogout == 1)
                    {
                        __SessionWEB.SistemaUrlLogout_QueryString = context.Request["SistemaUrlLogout"];
                    }

                    // Verifica se existe sistemas autenticados em Cookie para realizar logout
                    HttpCookie cookie = context.Request.Cookies["SistemasLogged"];
                    if (cookie != null &&
                        cookie.Values.AllKeys.Count(p => p != null) > 0)
                    {
                        SYS_Sistema entitySistema = SYS_SistemaBO.GetEntity(new SYS_Sistema {
                            sis_id = Convert.ToInt32(cookie.Values.AllKeys.First())
                        });
                        HttpContext.Current.Response.Redirect(entitySistema.sis_caminhoLogout, false);
                        HttpContext.Current.ApplicationInstance.CompleteRequest();
                    }
                    else
                    {
                        HttpCookie cookieBH = context.Request.Cookies["BH"];
                        if (cookieBH != null &&
                            !String.IsNullOrEmpty(IdentitySettingsConfig.IDSSettings.LogoutUrlAVA))
                        {
                            HttpContext.Current.Response.Redirect(IdentitySettingsConfig.IDSSettings.LogoutUrlAVA, false);
                            HttpContext.Current.ApplicationInstance.CompleteRequest();
                        }
                        else
                        {
                            RedirecionarParaLogoutIdentityServer(context);
                        }
                    }
                }
            }
            catch (ValidationException ex)
            {
                ApplicationWEB._GravaErro(ex);
                //ErrorMessage(ex.Message);
                RedirecionarParaLogoutIdentityServer(context);
            }
            catch (Exception ex)
            {
                ApplicationWEB._GravaErro(ex);
                //ErrorMessage("Não foi possível atender a solicitação.");
                RedirecionarParaLogoutIdentityServer(context);
            }
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Grava log de sistema no banco de dados.
 /// </summary>
 /// <param name="acao">Ação executada pelo usuário</param>
 /// <param name="descricao">Descrição do log</param>
 /// <param name="usu_login">Login do usuário que tentou realizar a operação (utilizado para operações de login sem sucesso)</param>
 /// <returns>Informa se o log de sistema foi salvo com sucesso.</returns>
 public static Guid _GravaLogSistema(LOG_SistemaTipo acao, string descricao)
 {
     try
     {
         LOG_Sistema entity = new LOG_Sistema();
         entity.log_acao      = Enum.GetName(typeof(LOG_SistemaTipo), acao);
         entity.log_dataHora  = DateTime.Now;
         entity.log_descricao = descricao;
         if (HttpContext.Current != null)
         {
             //Preenche dados do host do site
             LOG_SistemaBO.GenerateLogID();
             entity.log_id          = new Guid(HttpContext.Current.Session[LOG_Sistema.SessionName].ToString());
             entity.log_ip          = HttpContext.Current.Request.UserHostAddress;
             entity.log_machineName = HttpContext.Current.Server.MachineName;
             if (HttpContext.Current.Session != null)
             {
                 SessionWEB session = (SessionWEB)HttpContext.Current.Session[SessSessionWEB];
                 if (session != null)
                 {
                     //Preenche dados referente ao usuário
                     if (session.__UsuarioWEB != null && session.__UsuarioWEB.Usuario != null)
                     {
                         entity.usu_id    = session.__UsuarioWEB.Usuario.usu_id;
                         entity.usu_login = session.__UsuarioWEB.Usuario.usu_login;
                     }
                     //Preenche dados referente ao grupo do usuário
                     if (session.__UsuarioWEB != null && session.__UsuarioWEB.Grupo != null)
                     {
                         //Preenche os dados do grupo
                         entity.gru_id   = session.__UsuarioWEB.Grupo.gru_id;
                         entity.gru_nome = session.__UsuarioWEB.Grupo.gru_nome;
                         //Preenche os dados do sistema
                         SYS_Sistema sistema = new SYS_Sistema
                         {
                             sis_id = session.__UsuarioWEB.Grupo.sis_id
                         };
                         SYS_SistemaBO.GetEntity(sistema);
                         entity.sis_id   = sistema.sis_id;
                         entity.sis_nome = sistema.sis_nome;
                         //Preenche os dados do módulo
                         if (HttpContext.Current.Session[SYS_Modulo.SessionName] != null)
                         {
                             SYS_Modulo modulo = (SYS_Modulo)HttpContext.Current.Session[SYS_Modulo.SessionName];
                             entity.mod_id   = modulo.mod_id;
                             entity.mod_nome = modulo.mod_nome;
                         }
                         else
                         {
                             entity.mod_id   = 0;
                             entity.mod_nome = string.Empty;
                         }
                         //Preenche as entidades e unidades administrativa do grupo
                         if (session.__UsuarioWEB.GrupoUA != null)
                         {
                             //Formata a entidade no padrão JSON
                             JavaScriptSerializer oSerializer = new JavaScriptSerializer();
                             entity.log_grupoUA = oSerializer.Serialize(session.__UsuarioWEB.GrupoUA);
                         }
                     }
                 }
             }
         }
         if (!LOG_SistemaBO.Save(entity))
         {
             throw new Exception("Não foi possível salvar o log do sistema.");
         }
         if (HttpContext.Current != null)
         {
             HttpContext.Current.Session[LOG_Sistema.SessionName] = null;
         }
         return(entity.log_id);
     }
     catch (Exception)
     {
         throw;
     }
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Salva log de erro no banco de dados.
        /// Em caso de exceção salva em arquivo teste
        /// na pasta Log da raiz do site.
        /// </summary>
        /// <param name="ex">Exception</param>
        public new static void _GravaErro(Exception ex)
        {
            try
            {
                string   path     = String.Concat(_DiretorioFisico, "Log");
                LogError logError = new LogError(path);
                //Liga o método no delegate para salvar log no banco de dados.
                logError.SaveLogBD = delegate(string message)
                {
                    LOG_Erros entity = new LOG_Erros();
                    try
                    {
                        //Preenche a entidade com os dados necessário
                        entity.err_descricao = message;
                        entity.err_erroBase  = ex.GetBaseException().Message;
                        entity.err_tipoErro  = ex.GetBaseException().GetType().FullName;
                        entity.err_dataHora  = DateTime.Now;
                        if (HttpContext.Current != null)
                        {
                            string infoRequest = "";
                            try
                            {
                                string        naoGravar      = SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.LOG_ERROS_CHAVES_NAO_GRAVAR);
                                List <string> listaNaoGravar = new List <string>(naoGravar.Split(';'));

                                bool gravarQueryString;
                                Boolean.TryParse(SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.LOG_ERROS_GRAVAR_QUERYSTRING), out gravarQueryString);
                                if (gravarQueryString)
                                {
                                    infoRequest += retornaListaColecao(HttpContext.Current.Request.QueryString, "QueryString", listaNaoGravar);
                                }

                                bool gravarServerVariables;
                                Boolean.TryParse(SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.LOG_ERROS_GRAVAR_SERVERVARIABLES), out gravarServerVariables);
                                if (gravarServerVariables)
                                {
                                    infoRequest += retornaListaColecao(HttpContext.Current.Request.ServerVariables, "ServerVariables", listaNaoGravar);
                                }

                                bool gravarParams;
                                Boolean.TryParse(SYS_ParametroBO.ParametroValor(SYS_ParametroBO.eChave.LOG_ERROS_GRAVAR_PARAMS), out gravarParams);
                                if (gravarParams)
                                {
                                    infoRequest += retornaListaColecao(HttpContext.Current.Request.Params, "Params", listaNaoGravar);
                                }
                            }
                            catch
                            {
                            }

                            entity.err_descricao = entity.err_descricao + infoRequest;

                            entity.err_ip          = HttpContext.Current.Request.UserHostAddress;
                            entity.err_machineName = HttpContext.Current.Server.MachineName;
                            entity.err_caminhoArq  = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
                            try
                            {
                                entity.err_browser = String.Concat(new[] { HttpContext.Current.Request.Browser.Browser, HttpContext.Current.Request.Browser.MajorVersion.ToString(), HttpContext.Current.Request.Browser.MinorVersionString });
                            }
                            catch
                            {
                                entity.err_browser = string.Empty;
                            }
                            if (HttpContext.Current.Session != null)
                            {
                                SessionWEB session = (SessionWEB)HttpContext.Current.Session[SessSessionWEB];
                                if (session != null)
                                {
                                    if (session.__UsuarioWEB.Usuario != null)
                                    {
                                        entity.usu_id    = session.__UsuarioWEB.Usuario.usu_id;
                                        entity.usu_login = session.__UsuarioWEB.Usuario.usu_login;
                                    }
                                    if (session.__UsuarioWEB.Grupo != null)
                                    {
                                        SYS_Sistema sistema = new SYS_Sistema
                                        {
                                            sis_id = session.__UsuarioWEB.Grupo.sis_id
                                        };
                                        SYS_SistemaBO.GetEntity(sistema);
                                        entity.sis_id       = sistema.sis_id;
                                        entity.sis_decricao = sistema.sis_nome;
                                    }
                                }
                            }
                        }
                        //Salva o log no banco de dados
                        LOG_ErrosBO.Save(entity);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                };
                logError.Log(ex, true);
            }
            catch { }
        }