Commit 04739a08 by Qiang Xue

Merge pull request #1304 from pmoust/revokeAll

implements #563 - revokeAll()
parents 02e1f8d5 ec37003a
...@@ -277,6 +277,18 @@ class DbManager extends Manager ...@@ -277,6 +277,18 @@ class DbManager extends Manager
} }
/** /**
* Revokes all authorization assignments from a user.
* @param mixed $userId the user ID (see [[User::id]])
* @return boolean whether removal is successful
*/
public function revokeAll($userId)
{
return $this->db->createCommand()
->delete($this->assignmentTable, ['user_id' => $userId])
->execute() > 0;
}
/**
* Returns a value indicating whether the item has been assigned to the user. * Returns a value indicating whether the item has been assigned to the user.
* @param mixed $userId the user ID (see [[User::id]]) * @param mixed $userId the user ID (see [[User::id]])
* @param string $itemName the item name * @param string $itemName the item name
......
...@@ -269,6 +269,12 @@ abstract class Manager extends Component ...@@ -269,6 +269,12 @@ abstract class Manager extends Component
*/ */
abstract public function revoke($userId, $itemName); abstract public function revoke($userId, $itemName);
/** /**
* Revokes all authorization assignments from a user.
* @param mixed $userId the user ID (see [[User::id]])
* @return boolean whether removal is successful
*/
abstract public function revokeAll($userId);
/**
* Returns a value indicating whether the item has been assigned to the user. * Returns a value indicating whether the item has been assigned to the user.
* @param mixed $userId the user ID (see [[User::id]]) * @param mixed $userId the user ID (see [[User::id]])
* @param string $itemName the item name * @param string $itemName the item name
......
...@@ -221,6 +221,22 @@ class PhpManager extends Manager ...@@ -221,6 +221,22 @@ class PhpManager extends Manager
} }
/** /**
* Revokes all authorization assignments from a user.
* @param mixed $userId the user ID (see [[User::id]])
* @return boolean whether removal is successful
*/
public function revokeAll($userId)
{
if (isset($this->_assignments[$userId]) && is_array($this->_assignments[$userId])) {
foreach ($this->_assignments[$userId] as $itemName => $value)
unset($this->_assignments[$userId][$itemName]);
return true;
} else {
return false;
}
}
/**
* Returns a value indicating whether the item has been assigned to the user. * Returns a value indicating whether the item has been assigned to the user.
* @param mixed $userId the user ID (see [[User::id]]) * @param mixed $userId the user ID (see [[User::id]])
* @param string $itemName the item name * @param string $itemName the item name
......
...@@ -119,6 +119,12 @@ abstract class ManagerTestCase extends TestCase ...@@ -119,6 +119,12 @@ abstract class ManagerTestCase extends TestCase
$this->assertFalse($this->auth->revoke('author B', 'author')); $this->assertFalse($this->auth->revoke('author B', 'author'));
} }
public function testRevokeAll()
{
$this->assertTrue($this->auth->revokeAll('reader E'));
$this->assertFalse($this->auth->isAssigned('reader E', 'reader'));
}
public function testGetAssignments() public function testGetAssignments()
{ {
$this->auth->assign('author B', 'deletePost'); $this->auth->assign('author B', 'deletePost');
...@@ -201,6 +207,13 @@ abstract class ManagerTestCase extends TestCase ...@@ -201,6 +207,13 @@ abstract class ManagerTestCase extends TestCase
'updateOwnPost' => false, 'updateOwnPost' => false,
'deletePost' => true, 'deletePost' => true,
], ],
'reader E' => [
'createPost' => false,
'readPost' => false,
'updatePost' => false,
'updateOwnPost' => false,
'deletePost' => false,
],
]; ];
$params = ['authorID' => 'author B']; $params = ['authorID' => 'author B'];
...@@ -245,5 +258,6 @@ abstract class ManagerTestCase extends TestCase ...@@ -245,5 +258,6 @@ abstract class ManagerTestCase extends TestCase
$this->auth->assign('author B', 'author'); $this->auth->assign('author B', 'author');
$this->auth->assign('editor C', 'editor'); $this->auth->assign('editor C', 'editor');
$this->auth->assign('admin D', 'admin'); $this->auth->assign('admin D', 'admin');
$this->auth->assign('reader E', 'reader');
} }
} }
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