/// <summary> /// Retorna uma lista com as permissões de cada item CRUD da página /// </summary> /// <param name="pList">Lista de permissões dos itens da página</param> public List <ItemSegurancaInfo> VerificaPermissoesPagina(List <ItemSegurancaInfo> pList) { ValidarItemSegurancaRequest lRequestSeguranca = new ValidarItemSegurancaRequest() { CodigoSessao = this.CodigoSessao, ItensSeguranca = pList }; ValidarItemSegurancaResponse lResponseSeguranca = this.ServicoSeguranca.ValidarItemSeguranca(lRequestSeguranca); if (lResponseSeguranca.StatusResposta == MensagemResponseStatusEnum.OK) { if (lResponseSeguranca.ItensSeguranca.Count > 0) { return(lResponseSeguranca.ItensSeguranca); } else { string lItensDoRequest = string.Empty; foreach (ItemSegurancaInfo lItem in pList) { lItensDoRequest += string.Format("{0}-{1}, ", lItem.Tag, lItem.PermissoesString); } lItensDoRequest = lItensDoRequest.TrimEnd(", ".ToCharArray()); throw new Exception(string.Format("Sem itens de segurança configurados para [{0}]", lItensDoRequest)); } } else { throw new Exception(string.Format("Erro do Response do serviço de mensageria: [{0}]", lResponseSeguranca.StatusResposta)); } }
public MensagemResponseBase ProcessarMensagem(MensagemRequestBase parametros) { Type lTipoParametro = parametros.GetType(); if (lTipoParametro == typeof(AutenticarUsuarioRequest)) { AutenticarUsuarioResponse lResposta = new AutenticarUsuarioResponse(); lResposta.StatusResposta = MensagemResponseStatusEnum.OK; lResposta.Sessao = new SessaoInfo(); lResposta.Sessao.CodigoSessao = Guid.NewGuid().ToString(); return(lResposta); } else if (lTipoParametro == typeof(ValidarItemSegurancaRequest)) { ValidarItemSegurancaResponse lResposta = new ValidarItemSegurancaResponse(); lResposta.StatusResposta = MensagemResponseStatusEnum.OK; lResposta.ItensSeguranca = ((ValidarItemSegurancaRequest)parametros).ItensSeguranca; foreach (ItemSegurancaInfo lItem in lResposta.ItensSeguranca) { lItem.Valido = true; } return(lResposta); } else if (lTipoParametro == typeof(ListarUsuariosRequest)) { ListarUsuariosResponse lResposta = new ListarUsuariosResponse(); lResposta.Usuarios = new List <UsuarioInfo>(); lResposta.Usuarios.Add(new UsuarioInfo() { Nome = "Teste", Email = "*****@*****.**", CodigoUsuario = "1" }); return(lResposta); } else { throw new NotImplementedException(string.Format("Mock não implementado para [{0}]", lTipoParametro)); } }
public bool UsuarioPodeMesmo(string pGuidPermissao) { List <ItemSegurancaInfo> lList = new List <ItemSegurancaInfo>(); lList.Add(new ItemSegurancaInfo()); lList[0].PermissoesString = pGuidPermissao; ValidarItemSegurancaRequest lRequestSeguranca = new ValidarItemSegurancaRequest() { CodigoSessao = this.CodigoSessao, ItensSeguranca = lList }; try { ValidarItemSegurancaResponse lResponseSeguranca = this.ServicoSeguranca.ValidarItemSeguranca(lRequestSeguranca); if (lResponseSeguranca.StatusResposta == MensagemResponseStatusEnum.OK) { if (lResponseSeguranca.ItensSeguranca[0].Valido.Value) { return(true); } else { // Acesso Negado return(false); } } else { return(false); } } catch (System.Threading.ThreadAbortException) { } return(false); }
protected void Page_Load(object sender, EventArgs e) { if (this.UsuarioLogado == null) { if (string.IsNullOrEmpty(this.Acao)) { this.RedirecionarPara("Default.aspx"); //Server.Transfer("Login.aspx"); } else { this.Response.Clear(); this.Response.Write(base.RetornarErroAjax(RESPOSTA_SESSAO_EXPIRADA)); this.Response.End(); } } else { ReceberSessaoResponse lResSessao = ServicoSeguranca.ReceberSessao(new ReceberSessaoRequest() { CodigoSessao = this.CodigoSessao, CodigoSessaoARetornar = this.CodigoSessao }); if (!lResSessao.Sessao.EhSessaoDeAdministrador) { object[] attrs = this.GetType().GetCustomAttributes(typeof(ValidarSegurancaAttribute), true); if (attrs.Length > 0) { List <ItemSegurancaInfo> list = new List <ItemSegurancaInfo>(); list.Add(((ValidarSegurancaAttribute)attrs[0]).Seguranca); ValidarItemSegurancaRequest lRequestSeguranca = new ValidarItemSegurancaRequest() { CodigoSessao = this.CodigoSessao, ItensSeguranca = list }; try { ValidarItemSegurancaResponse lResponseSeguranca = this.ServicoSeguranca.ValidarItemSeguranca(lRequestSeguranca); if (lResponseSeguranca.StatusResposta == MensagemResponseStatusEnum.OK) { if (!lResponseSeguranca.ItensSeguranca[0].Valido.Value) { //--> Acesso Negado this.Response.Clear(); this.Response.End(); } } else { this.Response.Clear(); this.Response.End(); } } //catch (CommunicationObjectFaultedException) //{ // Ativador.AbortChannel(this.ServicoSeguranca); // this.ServicoSeguranca = Ativador.Get<IServicoSeguranca>(); //} catch (System.Threading.ThreadAbortException) { } catch (Exception ex) { this.Response.Clear(); this.Response.Write(base.RetornarErroAjax(ex.Message)); this.Response.End(); } } } } }
/// <summary> /// Solicita o processamento dos comandos de interface. Verifica os comandos permitidos e retorna /// a árvore. /// </summary> /// <param name="parametros"></param> /// <returns></returns> public ReceberArvoreComandosInterfaceResponse ReceberArvoreComandosInterface(ReceberArvoreComandosInterfaceRequest parametros) { // Referencia para o servico de seguranca IServicoSeguranca servicoSeguranca = Ativador.Get <IServicoSeguranca>(); // Prepara a resposta ReceberArvoreComandosInterfaceResponse resposta = new ReceberArvoreComandosInterfaceResponse() { CodigoMensagemRequest = parametros.CodigoMensagem, CodigoGrupoComandoInterface = parametros.CodigoGrupoComandoInterface }; // Pega grupo de comandos ReceberGrupoComandoInterfaceResponse respostaReceber = this.ReceberGrupoComandoInterface( new ReceberGrupoComandoInterfaceRequest() { CodigoSessao = parametros.CodigoSessao, CodigoGrupoComandoInterface = parametros.CodigoGrupoComandoInterface }); // Transforma a árvore de comandos em lista List <ComandoInterfaceInfo> listaComandos = respostaReceber.GrupoComandoInterface.ListarComandos(); // Cria lista indicando quais comandos são grupo List <string> listaGrupos = (from c in listaComandos where c.Filhos.Count > 0 select c.CodigoComandoInterface).ToList(); // Salva o código do item na tag da segurança para enviar para validação foreach (ComandoInterfaceInfo item in listaComandos) { item.Seguranca.Tag = item.CodigoComandoInterface; } // Cria lista de itens de seguranca a validar List <ItemSegurancaInfo> itensSeguranca = (from c in listaComandos select c.Seguranca).ToList(); // Solicita validação dos itens ValidarItemSegurancaResponse respostaValidacao = servicoSeguranca.ValidarItemSeguranca( new ValidarItemSegurancaRequest() { CodigoSessao = parametros.CodigoSessao, ItensSeguranca = itensSeguranca }); // Cria dicionario com os itens validados para reassociar aos comandos Dictionary <string, ItemSegurancaInfo> dicionarioItens = new Dictionary <string, ItemSegurancaInfo>(); foreach (ItemSegurancaInfo item in respostaValidacao.ItensSeguranca) { dicionarioItens.Add(item.Tag, item); } // Reassocia itens de segurança validado aos comandos foreach (ComandoInterfaceInfo comando in listaComandos) { if (dicionarioItens.ContainsKey(comando.CodigoComandoInterface)) { comando.Seguranca = dicionarioItens[comando.CodigoComandoInterface]; } } // Cria dicionário de pais e filhos // O dicionário está montado como codigoFilho, codigoPai Dictionary <string, ComandoInterfaceInfo> dicionarioPaisFilhos = new Dictionary <string, ComandoInterfaceInfo>(); foreach (ComandoInterfaceInfo comandoPai in listaComandos) { foreach (ComandoInterfaceInfo comandoFilho in comandoPai.Filhos) { dicionarioPaisFilhos.Add(comandoFilho.CodigoComandoInterface, comandoPai); } } // Remove os não válidados pela segurança List <ComandoInterfaceInfo> comandosRemover = (from c in listaComandos where !c.Seguranca.Valido.HasValue || c.Seguranca.Valido.Value == false select c).ToList(); foreach (ComandoInterfaceInfo comandoRemover in comandosRemover) { if (dicionarioPaisFilhos.ContainsKey(comandoRemover.CodigoComandoInterface)) { dicionarioPaisFilhos[comandoRemover.CodigoComandoInterface].Filhos.Remove(comandoRemover); } else { respostaReceber.GrupoComandoInterface.ComandosInterfaceRaiz.Remove(comandoRemover); } } // Remover os menus de grupo que não tem filhos List <ComandoInterfaceInfo> comandosRemover2 = (from c in listaComandos where listaGrupos.Contains(c.CodigoComandoInterface) && c.Filhos.Count == 0 select c).ToList(); foreach (ComandoInterfaceInfo comandoRemover in comandosRemover2) { if (dicionarioPaisFilhos.ContainsKey(comandoRemover.CodigoComandoInterface)) { dicionarioPaisFilhos[comandoRemover.CodigoComandoInterface].Filhos.Remove(comandoRemover); } else { respostaReceber.GrupoComandoInterface.ComandosInterfaceRaiz.Remove(comandoRemover); } } // Retorna a arvore resposta.ComandosInterfaceRaiz = respostaReceber.GrupoComandoInterface.ComandosInterfaceRaiz; // Retorna return(resposta); }