/** * Método inicial do controle */ public function inicial() { try { $this->passarProximoControle(definicaoEntidade::controle($this, 'verSelecionarAcessos')); $negocio = definicaoEntidade::negocio($this); $conexao = conexao::criar(); $conexao->iniciarTransacao(); $negocio = new $negocio($conexao); $negocio->passarIdUsuario($_POST['idUsuario']); $negocio->carregarAcessos(); $negocio->coAcessos->excluir(); $negocio = new $negocio($conexao); foreach ($_POST['controle'] as $index => $controle) { $nAcesso = new NAcesso($conexao); $nAcesso->passarIdUsuario($_POST['idUsuario']); $nAcesso->passarNmAcesso($controle); $negocio->coAcessos->{$index} = $nAcesso; } $negocio->coAcessos->gravar(); $this->sessao->registrar('negocio', $negocio); $this->registrarComunicacao($this->inter->pegarMensagem('gravarSucesso')); $conexao->validarTransacao(); $this->passarProximoControle(definicaoEntidade::controle($this, 'verPesquisa')); } catch (erro $e) { $conexao->desfazerTransacao(); throw $e; } }
/** * Método construtor que lê os acessos liberados para o usuário logado */ public function __construct() { try { $definicoes = definicao::pegarDefinicao(); $controleDeAcesso = $definicoes->xpath('//controleDeAcesso'); $this->menuLiberado = isset($controleDeAcesso[0]) && strval($controleDeAcesso[0]['liberado']) == 'sim' ? true : false; if (!$this->menuLiberado) { $nUsuario = sessaoSistema::pegar('usuario'); $nAcesso = new NAcesso(); $this->acessosLiberados = array_flip($nAcesso->lerAcessosPorUsuario($nUsuario)->gerarVetorDeAtributo('nmAcesso')); } return true; } catch (erro $e) { return false; } }
/** * Método criado para efetuar a validação de acesso a um controle do sistema * @param string nome do controle acessado */ public static function validarAcesso($controleAcessado) { try { $definicoes = definicao::pegarDefinicao(); if (strval($definicoes->controleDeAcesso['liberado']) == 'sim') { return true; } switch (true) { case !sessaoSistema::tem('usuario'): throw new erroAcesso('Acesso não permitido, usuário não registrado!'); default: $nUsuario = sessaoSistema::pegar('usuario'); $nUsuario->carregarPerfis(); $nAcesso = new NAcesso(); $colecao = $nAcesso->lerAcessosPorUsuario($nUsuario, $controleAcessado); if (!$colecao->contarItens()) { throw new erroAcesso('Acesso Não Permitido!'); } } return true; } catch (erro $e) { throw $e; } }
/** * Carrega a coleção de acessos do usuario */ public function carregarAcessos() { $nAcesso = new NAcesso($this->conexao); $nAcesso->passarIdUsuario($this->pegarIdUsuario()); $this->coAcessos = $nAcesso->pesquisar(new pagina(0)); }