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