Commit af3f5af3 by Alexander Kochetov

RBAC: Item and Assignment optimized save approach

parent a87e64c6
...@@ -57,6 +57,7 @@ abstract class ManagerTestBase extends TestCase ...@@ -57,6 +57,7 @@ abstract class ManagerTestBase extends TestCase
$this->assertTrue($item instanceof Item); $this->assertTrue($item instanceof Item);
$this->assertTrue($this->auth->hasItemChild('reader', 'readPost')); $this->assertTrue($this->auth->hasItemChild('reader', 'readPost'));
$item->name = 'readPost2'; $item->name = 'readPost2';
$item->save();
$this->assertNull($this->auth->getItem('readPost')); $this->assertNull($this->auth->getItem('readPost'));
$this->assertEquals($this->auth->getItem('readPost2'), $item); $this->assertEquals($this->auth->getItem('readPost2'), $item);
$this->assertFalse($this->auth->hasItemChild('reader', 'readPost')); $this->assertFalse($this->auth->hasItemChild('reader', 'readPost'));
......
...@@ -81,7 +81,6 @@ class Assignment extends Object ...@@ -81,7 +81,6 @@ class Assignment extends Object
{ {
if ($this->_bizRule !== $value) { if ($this->_bizRule !== $value) {
$this->_bizRule = $value; $this->_bizRule = $value;
$this->_auth->saveAssignment($this);
} }
} }
...@@ -100,7 +99,14 @@ class Assignment extends Object ...@@ -100,7 +99,14 @@ class Assignment extends Object
{ {
if ($this->_data !== $value) { if ($this->_data !== $value) {
$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 ...@@ -39,6 +39,7 @@ class Item extends Object
private $_auth; private $_auth;
private $_type; private $_type;
private $_name; private $_name;
private $_oldName;
private $_description; private $_description;
private $_bizRule; private $_bizRule;
private $_data; private $_data;
...@@ -116,9 +117,8 @@ class Item extends Object ...@@ -116,9 +117,8 @@ class Item extends Object
public function setName($value) public function setName($value)
{ {
if ($this->_name !== $value) { if ($this->_name !== $value) {
$oldName = $this->_name; $this->_oldName = $this->_name;
$this->_name = $value; $this->_name = $value;
$this->_auth->saveItem($this, $oldName);
} }
} }
...@@ -137,7 +137,6 @@ class Item extends Object ...@@ -137,7 +137,6 @@ class Item extends Object
{ {
if ($this->_description !== $value) { if ($this->_description !== $value) {
$this->_description = $value; $this->_description = $value;
$this->_auth->saveItem($this);
} }
} }
...@@ -156,7 +155,6 @@ class Item extends Object ...@@ -156,7 +155,6 @@ class Item extends Object
{ {
if ($this->_bizRule !== $value) { if ($this->_bizRule !== $value) {
$this->_bizRule = $value; $this->_bizRule = $value;
$this->_auth->saveItem($this);
} }
} }
...@@ -175,7 +173,6 @@ class Item extends Object ...@@ -175,7 +173,6 @@ class Item extends Object
{ {
if ($this->_data !== $value) { if ($this->_data !== $value) {
$this->_data = $value; $this->_data = $value;
$this->_auth->saveItem($this);
} }
} }
...@@ -272,4 +269,13 @@ class Item extends Object ...@@ -272,4 +269,13 @@ class Item extends Object
{ {
return $this->_auth->getAssignment($userId, $this->_name); 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