/**
  * 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));
 }