Browse Source

Exception types corrected

tags/2.0.0-beta
Alexander Kochetov 12 years ago
parent
commit
ded8c22b56
  1. 6
      framework/rbac/DbManager.php
  2. 6
      framework/rbac/Manager.php
  3. 19
      framework/rbac/PhpManager.php

6
framework/rbac/DbManager.php

@ -12,6 +12,7 @@ use yii\db\Connection;
use yii\db\Query;
use yii\base\Exception;
use yii\base\InvalidConfigException;
use yii\base\InvalidCallException;
/**
* DbManager represents an authorization manager that stores authorization information in database.
@ -133,7 +134,8 @@ class DbManager extends Manager
* @param string $itemName the parent item name
* @param string $childName the child item name
* @return boolean whether the item is added successfully
* @throws Exception if either parent or child doesn't exist or if a loop has been detected.
* @throws Exception if either parent or child doesn't exist.
* @throws InvalidCallException if a loop has been detected.
*/
public function addItemChild($itemName, $childName)
{
@ -158,7 +160,7 @@ class DbManager extends Manager
}
$this->checkItemChildType($parentType, $childType);
if ($this->detectLoop($itemName, $childName)) {
throw new Exception("Cannot add '$childName' as a child of '$itemName'. A loop has been detected.");
throw new InvalidCallException("Cannot add '$childName' as a child of '$itemName'. A loop has been detected.");
}
$this->db->createCommand()
->insert($this->itemChildTable, array(

6
framework/rbac/Manager.php

@ -9,7 +9,7 @@ namespace yii\rbac;
use Yii;
use yii\base\Component;
use yii\base\Exception;
use yii\base\InvalidParamException;
/**
* Manager is the base class for authorization manager classes.
@ -155,13 +155,13 @@ abstract class Manager extends Component implements IManager
* Checks the item types to make sure a child can be added to a parent.
* @param integer $parentType parent item type
* @param integer $childType child item type
* @throws Exception if the item cannot be added as a child due to its incompatible type.
* @throws InvalidParamException if the item cannot be added as a child due to its incompatible type.
*/
protected function checkItemChildType($parentType, $childType)
{
static $types = array('operation', 'task', 'role');
if ($parentType < $childType) {
throw new Exception("Cannot add an item of type '$types[$childType]' to an item of type '$types[$parentType]'.");
throw new InvalidParamException("Cannot add an item of type '$types[$childType]' to an item of type '$types[$parentType]'.");
}
}
}

19
framework/rbac/PhpManager.php

@ -9,6 +9,8 @@ namespace yii\rbac;
use Yii;
use yii\base\Exception;
use yii\base\InvalidCallException;
use yii\base\InvalidParamException;
/**
* PhpManager represents an authorization manager that stores authorization
@ -103,7 +105,8 @@ class PhpManager extends Manager
* @param string $itemName the parent item name
* @param string $childName the child item name
* @return boolean whether the item is added successfully
* @throws Exception if either parent or child doesn't exist or if a loop has been detected.
* @throws Exception if either parent or child doesn't exist.
* @throws InvalidCallException if item already has a child with $itemName or if a loop has been detected.
*/
public function addItemChild($itemName, $childName)
{
@ -116,10 +119,10 @@ class PhpManager extends Manager
$item = $this->_items[$itemName];
$this->checkItemChildType($item->getType(), $child->getType());
if ($this->detectLoop($itemName, $childName)) {
throw new Exception("Cannot add '$childName' as a child of '$itemName'. A loop has been detected.");
throw new InvalidCallException("Cannot add '$childName' as a child of '$itemName'. A loop has been detected.");
}
if (isset($this->_children[$itemName][$childName])) {
throw new Exception("The item '$itemName' already has a child '$childName'.");
throw new InvalidCallException("The item '$itemName' already has a child '$childName'.");
}
$this->_children[$itemName][$childName] = $this->_items[$childName];
return true;
@ -182,14 +185,14 @@ class PhpManager extends Manager
* for this particular authorization item.
* @param mixed $data additional data associated with this assignment
* @return Assignment the authorization assignment information.
* @throws Exception if the item does not exist or if the item has already been assigned to the user
* @throws InvalidParamException if the item does not exist or if the item has already been assigned to the user
*/
public function assign($userId, $itemName, $bizRule = null, $data = null)
{
if (!isset($this->_items[$itemName])) {
throw new Exception("Unknown authorization item '$itemName'.");
throw new InvalidParamException("Unknown authorization item '$itemName'.");
} elseif (isset($this->_assignments[$userId][$itemName])) {
throw new Exception("Authorization item '$itemName' has already been assigned to user '$userId'.");
throw new InvalidParamException("Authorization item '$itemName' has already been assigned to user '$userId'.");
} else {
return $this->_assignments[$userId][$itemName] = new Assignment($this, $userId, $itemName, $bizRule, $data);
}
@ -336,14 +339,14 @@ class PhpManager extends Manager
* Saves an authorization item to persistent storage.
* @param Item $item the item to be saved.
* @param string $oldName the old item name. If null, it means the item name is not changed.
* @throws Exception if an item with the same name already taken
* @throws InvalidParamException if an item with the same name already taken
*/
public function saveItem($item, $oldName = null)
{
if ($oldName !== null && ($newName = $item->getName()) !== $oldName) // name changed
{
if (isset($this->_items[$newName])) {
throw new Exception("Unable to change the item name. The name '$newName' is already used by another item.");
throw new InvalidParamException("Unable to change the item name. The name '$newName' is already used by another item.");
}
if (isset($this->_items[$oldName]) && $this->_items[$oldName] === $item) {
unset($this->_items[$oldName]);

Loading…
Cancel
Save