Commit 23e820e6 by Qiang Xue

Merge pull request #229 from creocoder/rbac-item-assignment-improve

RBAC: Item and Assignment optimized save approach
parents 98d2e183 af3f5af3
......@@ -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'));
......
......@@ -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);
}
}
......@@ -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);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment