예제 #1
0
 /**
  * Ensures that removal of a Resource results in its rules being removed
  *
  * @return void
  */
 public function testRulesResourceRemove()
 {
     $this->_acl->add(new Zend_Acl_Resource('area'))->allow(null, 'area');
     $this->assertTrue($this->_acl->isAllowed(null, 'area'));
     $this->_acl->remove('area');
     try {
         $this->_acl->isAllowed(null, 'area');
         $this->fail('Expected Zend_Acl_Exception not thrown upon isAllowed() on non-existent Resource');
     } catch (Zend_Acl_Exception $e) {
         $this->assertContains('not found', $e->getMessage());
     }
     $this->_acl->add(new Zend_Acl_Resource('area'));
     $this->assertFalse($this->_acl->isAllowed(null, 'area'));
 }
예제 #2
0
 protected function _getValidAco(Zend_Acl $aco, $context)
 {
     foreach ($aco->getChildren() as $node) {
         if (!$this->canAccess($node, $context)) {
             $aco->remove($node->getPath());
         }
     }
     return $aco;
 }
예제 #3
0
 /**
  * Removes a Resource and all of its children
  *
  * The $resource parameter can either be a Resource or a Resource identifier.
  *
  * @param  Zend_Acl_Resource_Interface|string $resource
  * @throws {@link Zend_Acl_Exception}
  * @return Zend_Acl Provides a fluent interface
  */
 public function remove($resource)
 {
     if ($this->hasCachingAdapter()) {
         $this->_checkCaching();
     }
     $resourceId = $resource instanceof Zend_Acl_Resource_Interface ? $resource->getResourceId() : (string) $resource;
     $this->_setResourceUnloaded($resourceId);
     $arrResources = $this->_getAdapter()->removeResource($resourceId);
     foreach ($arrResources as $resource) {
         if ($this->has($resource) && $resource != $resourceId) {
             parent::remove($role);
         }
         if ($this->hasResourceLoaded($resource)) {
             $this->_setResourceUnloaded($resource);
         }
         //Zum Cachen freigeben:
         if ($this->hasCachingAdapter()) {
             $this->_getCachingAdapter()->change(null, $resource);
         }
     }
     //Zum Cachen freigeben:
     if ($this->hasCachingAdapter()) {
         $this->_getCachingAdapter()->change(null, $resourceId);
     }
     return parent::remove($resourceId);
 }