public function setParentResource($resource, $parent)
 {
     if (is_string($resource)) {
         $resource = new Zend_Acl_Resource($resource);
     }
     if (!$resource instanceof Zend_Acl_Resource_Interface) {
         throw new Zend_Acl_Exception('addResource() expects $resource to be of type Zend_Acl_Resource_Interface');
     }
     $resourceId = $resource->getResourceId();
     if (!$this->has($resourceId)) {
         throw new Zend_Acl_Exception("Resource id '{$resourceId}' doesn't exists in the ACL");
     }
     //unset children of previous parent
     $previousParent = $this->_resources[$resourceId]['parent'];
     if ($previousParent) {
         unset($this->_resources[$previousParent->getResourceId()]['children'][$resourceId]);
     }
     $resourceParent = null;
     if (null !== $parent) {
         try {
             if ($parent instanceof Zend_Acl_Resource_Interface) {
                 $resourceParentId = $parent->getResourceId();
             } else {
                 $resourceParentId = $parent;
             }
             $resourceParent = $this->get($resourceParentId);
         } catch (Zend_Acl_Exception $e) {
             throw new Zend_Acl_Exception("Parent Resource id '{$resourceParentId}' does not exist", 0, $e);
         }
         $this->_resources[$resourceParentId]['children'][$resourceId] = $resource;
     }
     $this->_resources[$resourceId]['parent'] = $resourceParent;
     return $this;
 }
Exemple #2
0
    /**
     * Adds a Resource having an identifier unique to the ACL
     *
     * The $parent parameter may be a reference to, or the string identifier for,
     * the existing Resource from which the newly added Resource will inherit.
     *
     * @param  Zend_Acl_Resource_Interface|string $resource
     * @param  Zend_Acl_Resource_Interface|string $parent
     * @throws Zend_Acl_Exception
     * @return Zend_Acl Provides a fluent interface
     */
    public function addResource($resource, $parent = null)
    {
        if (is_string($resource)) {
            $resource = new Zend_Acl_Resource($resource);
        }

        if (!$resource instanceof Zend_Acl_Resource_Interface) {
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception('addResource() expects $resource to be of type Zend_Acl_Resource_Interface');
        }

        $resourceId = $resource->getResourceId();

        if ($this->has($resourceId)) {
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception("Resource id '$resourceId' already exists in the ACL");
        }

        $resourceParent = null;

        if (null !== $parent) {
            try {
                if ($parent instanceof Zend_Acl_Resource_Interface) {
                    $resourceParentId = $parent->getResourceId();
                } else {
                    $resourceParentId = $parent;
                }
                $resourceParent = $this->get($resourceParentId);
            } catch (Zend_Acl_Exception $e) {
                require_once 'Zend/Acl/Exception.php';
                throw new Zend_Acl_Exception("Parent Resource id '$resourceParentId' does not exist", 0, $e);
            }
            $this->_resources[$resourceParentId]['children'][$resourceId] = $resource;
        }

        $this->_resources[$resourceId] = array(
            'instance' => $resource,
            'parent'   => $resourceParent,
            'children' => array()
            );

        return $this;
    }
 public function __construct($resourceId, $controllerUrl)
 {
     $this->_controllerUrl = $controllerUrl;
     parent::__construct($resourceId);
 }
 public function __construct($componentClass)
 {
     $this->_componentClass = $componentClass;
     parent::__construct('kwc_' . $componentClass);
 }
 public function __construct($componentClass)
 {
     parent::__construct('kwc_structure_' . strtolower($componentClass));
 }
 public function __construct($resourceId, $roleId)
 {
     $this->setRoleId($roleId);
     parent::__construct($resourceId);
 }
 public function __construct($resourceId, $menuConfig = null)
 {
     $this->_menuConfig = $menuConfig;
     parent::__construct($resourceId);
 }
 /**
  * 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);
             }
         }
     }
 }
 /**
  * Validação das Acls a cada chamada de metodo
  *
  * @param $oRequest
  * @return boolean
  */
 protected function _isAuthorized(Zend_Controller_Request_Abstract $oRequest)
 {
     self::checkVersaoSistema();
     $sModule = $oRequest->getModuleName();
     $sController = $oRequest->getControllerName();
     $sAction = $oRequest->getActionName();
     $oAcl = self::$_acl;
     $oResource = new Zend_Acl_Resource($sModule . ':' . $sController);
     if (!$oAcl->has($oResource->getResourceId())) {
         self::menuNaoCadastrado($oRequest);
         self::carregaAuditoria($oRequest);
         return TRUE;
     }
     if ($oAcl->has($oResource->getResourceId()) && $oAcl->isAllowed('Usuario', $oResource->getResourceId(), $sAction)) {
         self::carregaAuditoria($oRequest);
         return TRUE;
     }
     return FALSE;
 }