Пример #1
0
 /**
  * verifica se existe ação para determinado caminho (modulo, controle)
  * @param string $sAcao
  * @param string $sControle
  * @param string $sModulo
  * @return boolean $lReturn
  */
 public static function verificaAcaoAction($sAcao = NULL, $sControle = NULL, $sModulo = NULL)
 {
     $aAcoes = Administrativo_Model_Acao::getAll();
     foreach ($aAcoes as $oAcao) {
         $sAcaoModulo = trim($oAcao->getControle()->getModulo()->getIdentidade());
         $sAcaoControle = trim($oAcao->getControle()->getIdentidade());
         if ($sAcaoModulo != $sModulo && $sAcaoControle != $sControle || empty($sAcao)) {
             continue;
         }
         if ($sModulo == $sAcaoModulo && $sControle == $sAcaoControle) {
             $aAcoesExtra = explode(',', trim($oAcao->getSubAcoes()));
             $aAcoesExtra = array_merge($aAcoesExtra, array(trim($oAcao->getAcaoAcl())));
             if (in_array($sAcao, $aAcoesExtra)) {
                 return true;
             }
         }
     }
     return false;
 }
Пример #2
0
 /**
  * Carrega todos os menus cadastrados no sistema negando o acesso
  */
 protected function carregaMenus()
 {
     $oAcoes = Administrativo_Model_Acao::getAll();
     foreach ($oAcoes as $oAcao) {
         $sModulo = $oAcao->getControle()->getModulo()->getIdentidade();
         $sControle = $oAcao->getControle()->getIdentidade();
         $oAcoesExtra = explode(',', trim($oAcao->getSubAcoes()));
         $aAcoesExtra = array_merge($oAcoesExtra, array($oAcao->getAcaoAcl()));
         $oResource = new Zend_Acl_Resource($sModulo . ":" . $sControle);
         if (!$this->_acl->has($oResource->getResourceId())) {
             $this->_acl->addResource($oResource->getResourceId());
         }
         foreach ($aAcoesExtra as $sAcao) {
             if (empty($sAcao)) {
                 continue;
             }
             if (!$oAcao->getControle()->getVisivel()) {
                 $this->_acl->allow('Usuario', $oResource->getResourceId(), $sAcao);
             } else {
                 $this->_acl->deny('Usuario', $oResource->getResourceId(), $sAcao);
             }
         }
     }
 }