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