Beispiel #1
0
 /**
  * Ensures that removal of a Role results in its rules being removed
  *
  * @return void
  */
 public function testRuleRoleRemove()
 {
     $this->_acl->addRole(new Role\GenericRole('guest'))->allow('guest');
     $this->assertTrue($this->_acl->isAllowed('guest'));
     $this->_acl->removeRole('guest');
     try {
         $this->_acl->isAllowed('guest');
         $this->fail('Expected Zend\\Acl\\Role\\Exception not thrown upon isAllowed() on non-existent Role');
     } catch (Acl\Exception\InvalidArgumentException $e) {
         $this->assertContains('not found', $e->getMessage());
     }
     $this->_acl->addRole(new Role\GenericRole('guest'));
     $this->assertFalse($this->_acl->isAllowed('guest'));
 }
Beispiel #2
0
 /**
  * Ensures that removal of a Role results in its rules being removed
  *
  * @return void
  */
 public function testRuleRoleRemove()
 {
     $this->_acl->addRole(new Zend_Acl_Role('guest'))->allow('guest');
     $this->assertTrue($this->_acl->isAllowed('guest'));
     $this->_acl->removeRole('guest');
     try {
         $this->_acl->isAllowed('guest');
         $this->fail('Expected Zend_Acl_Role_Registry_Exception not thrown upon isAllowed() on non-existent Role');
     } catch (Zend_Acl_Role_Registry_Exception $e) {
         $this->assertContains('not found', $e->getMessage());
     }
     $this->_acl->addRole(new Zend_Acl_Role('guest'));
     $this->assertFalse($this->_acl->isAllowed('guest'));
 }
Beispiel #3
0
 /**
  * Confirm that deleting a role after allowing access to all roles
  * raise undefined index error
  *
  * @group ZF-5700
  */
 public function testRemovingRoleAfterItWasAllowedAccessToAllResourcesGivesError()
 {
     $acl = new Zend_Acl();
     $acl->addRole(new Zend_Acl_Role('test0'));
     $acl->addRole(new Zend_Acl_Role('test1'));
     $acl->addRole(new Zend_Acl_Role('test2'));
     $acl->addResource(new Zend_Acl_Resource('Test'));
     $acl->allow(null, 'Test', 'xxx');
     // error test
     $acl->removeRole('test0');
     // Check after fix
     $this->assertFalse($acl->hasRole('test0'));
 }
 /**
  * Removes the Role from the registry
  *
  * The $role parameter can either be a Role or a Role identifier.
  *
  * @param  Zend_Acl_Role_Interface|string $role
  * @uses   Zend_Acl::removeRole()
  * @return Zend_Acl Provides a fluent interface
  */
 public function removeRole($role)
 {
     if ($this->hasCachingAdapter()) {
         $this->_checkCaching();
     }
     $roleId = $role instanceof Zend_Acl_Role_Interface ? $role->getRoleId() : (string) $role;
     $this->_setRoleUnloaded($roleId);
     $arrRoles = $this->_getAdapter()->removeRole($roleId);
     foreach ($arrRoles as $role) {
         if ($this->hasRole($role) && $role != $roleId) {
             parent::removeRole($role);
         }
         if ($this->hasRoleLoaded($role)) {
             $this->_setRoleUnloaded($role);
         }
         //Zum Cachen freigeben
         if ($this->hasCachingAdapter()) {
             $this->_getCachingAdapter()->change($role, null);
         }
     }
     //Zum Cachen freigeben:
     if ($this->hasCachingAdapter()) {
         $this->_getCachingAdapter()->change($roleId, null);
     }
     return parent::removeRole($roleId);
 }