//evento pre-definido private void PreRequestHandlerExecute(Object source, EventArgs e) { //obtem dados da aplicacao http (site) application = (HttpApplication)source; context = application.Context; //obtem o nome do arquivo que está sendo acessado string origem = context.Request.FilePath; if (!origem.Contains("aspx") || origem.Contains("WebForm1") || origem.Contains("Rel") || origem.Contains("default.aspx") || origem.Contains("Pesquisar.aspx") || origem.Contains("PesquisarItens.aspx") || origem.Contains("recuperacaoLogin.aspx") || origem.Contains("ops.aspx")) { return; } //se houver usuario logado, e o site já estiver carregado //verifica qual é o usuario para definir permissoes de acesso //se nao houver usuário logado, sempre direciona para a tela de login if (context.Session != null && context.Session["usuario"] == null) { //somente chama a tela de login se a origem nao for a propria tela //faz isso, pois no primeira acesso é solicitada a tela de login if (!origem.Contains("login.aspx")) { //chama a tela de login context.Response.Redirect("~/login.aspx", true); } } else { //exemplo //Cria objeto usuario local, baseado no objeto da sessao List<Usuarios> usuarios = (List<Usuarios>)context.Session["usuario"]; PermissoesBL perBL = new PermissoesBL(); foreach (Usuarios ltUsu in usuarios) { List<Permissoes> permissoes = perBL.PesquisarBL(ltUsu.CategoriaId, origem); if (permissoes.Count == 0 && !origem.Contains("erroPermissao.aspx")) { context.Session["usuPermissoes"] = null; context.Response.Redirect("~/erroPermissao.aspx?nomeUsuario=" + ltUsu.Nome, true); } else if (!origem.Contains("erroPermissao.aspx")) { Permissoes per = new Permissoes(); per.Editar = permissoes[0].Editar; per.Excluir = permissoes[0].Excluir; per.Inserir = permissoes[0].Inserir; context.Session["usuPermissoes"] = per; } } } }
private void Pesquisar(int id_cat, string modulo) { DataTable tabela = new DataTable(); DataColumn coluna1 = new DataColumn("ID", Type.GetType("System.Int32")); DataColumn coluna2 = new DataColumn("CONSULTAR", Type.GetType("System.Boolean")); DataColumn coluna3 = new DataColumn("EDITAR", Type.GetType("System.Boolean")); DataColumn coluna4 = new DataColumn("INSERIR", Type.GetType("System.Boolean")); DataColumn coluna5 = new DataColumn("EXCLUIR", Type.GetType("System.Boolean")); DataColumn coluna6 = new DataColumn("FORMULARIOID", Type.GetType("System.Int32")); DataColumn coluna7 = new DataColumn("CODFORMULARIO", Type.GetType("System.Int32")); DataColumn coluna8 = new DataColumn("DESCFORMULARIO", Type.GetType("System.String")); DataColumn coluna9 = new DataColumn("TIPO", Type.GetType("System.String")); DataColumn coluna10 = new DataColumn("CATEGORIAID", Type.GetType("System.Int32")); tabela.Columns.Add(coluna1); tabela.Columns.Add(coluna2); tabela.Columns.Add(coluna3); tabela.Columns.Add(coluna4); tabela.Columns.Add(coluna5); tabela.Columns.Add(coluna6); tabela.Columns.Add(coluna7); tabela.Columns.Add(coluna8); tabela.Columns.Add(coluna9); tabela.Columns.Add(coluna10); FormulariosBL forBL = new FormulariosBL(); List<Formularios> formularios = forBL.PesquisarBL(modulo); PermissoesBL perBL = new PermissoesBL(); List<Permissoes> permissoes; foreach (Formularios formu in formularios) { DataRow linha = tabela.NewRow(); linha["FORMULARIOID"] = formu.Id; linha["CODFORMULARIO"] = formu.Codigo; linha["DESCFORMULARIO"] = formu.Descricao; linha["CATEGORIAID"] = id_cat; switch (formu.Tipo.ToUpper()) { case "C": { linha["TIPO"] = "Edição"; break; } case "V": { linha["TIPO"] = "Consulta"; break; } } permissoes = perBL.PesquisarBL(id_cat, formu.Id); if (permissoes.Count > 0) { foreach (Permissoes per in permissoes) { linha["Id"] = per.Id; linha["CONSULTAR"] = per.Consultar; linha["EDITAR"] = per.Editar; linha["INSERIR"] = per.Inserir; linha["EXCLUIR"] = per.Excluir; } } else { linha["Id"] = 0; linha["CONSULTAR"] = false; linha["EDITAR"] = false; linha["INSERIR"] = false; linha["EXCLUIR"] = false; } tabela.Rows.Add(linha); } repPermissao.DataSource = tabela; repPermissao.DataBind(); }