Browse Source

RBAC: Item and Assignment optimized save approach

tags/2.0.0-beta
Alexander Kochetov 12 years ago
parent
commit
af3f5af3be
  1. 1
      tests/unit/framework/rbac/ManagerTestBase.php
  2. 10
      yii/rbac/Assignment.php
  3. 16
      yii/rbac/Item.php

1
tests/unit/framework/rbac/ManagerTestBase.php

@ -57,6 +57,7 @@ abstract class ManagerTestBase extends TestCase
$this->assertTrue($item instanceof Item);
$this->assertTrue($this->auth->hasItemChild('reader', 'readPost'));
$item->name = 'readPost2';
$item->save();
$this->assertNull($this->auth->getItem('readPost'));
$this->assertEquals($this->auth->getItem('readPost2'), $item);
$this->assertFalse($this->auth->hasItemChild('reader', 'readPost'));

10
yii/rbac/Assignment.php

@ -81,7 +81,6 @@ class Assignment extends Object
{
if ($this->_bizRule !== $value) {
$this->_bizRule = $value;
$this->_auth->saveAssignment($this);
}
}
@ -100,7 +99,14 @@ class Assignment extends Object
{
if ($this->_data !== $value) {
$this->_data = $value;
$this->_auth->saveAssignment($this);
}
}
/**
* Saves the changes to an authorization assignment.
*/
public function save()
{
$this->_auth->saveAssignment($this);
}
}

16
yii/rbac/Item.php

@ -39,6 +39,7 @@ class Item extends Object
private $_auth;
private $_type;
private $_name;
private $_oldName;
private $_description;
private $_bizRule;
private $_data;
@ -116,9 +117,8 @@ class Item extends Object
public function setName($value)
{
if ($this->_name !== $value) {
$oldName = $this->_name;
$this->_oldName = $this->_name;
$this->_name = $value;
$this->_auth->saveItem($this, $oldName);
}
}
@ -137,7 +137,6 @@ class Item extends Object
{
if ($this->_description !== $value) {
$this->_description = $value;
$this->_auth->saveItem($this);
}
}
@ -156,7 +155,6 @@ class Item extends Object
{
if ($this->_bizRule !== $value) {
$this->_bizRule = $value;
$this->_auth->saveItem($this);
}
}
@ -175,7 +173,6 @@ class Item extends Object
{
if ($this->_data !== $value) {
$this->_data = $value;
$this->_auth->saveItem($this);
}
}
@ -272,4 +269,13 @@ class Item extends Object
{
return $this->_auth->getAssignment($userId, $this->_name);
}
/**
* Saves an authorization item to persistent storage.
*/
public function save()
{
$this->_auth->saveItem($this, $this->_oldName);
unset($this->_oldName);
}
}

Loading…
Cancel
Save