Issue #3324729 by Jaypan, andypost, Chandreshgiri Gauswami, elber, longwave, quietone: User::addRole() and ::removeRole() should be chainable

merge-requests/3188/head
xjm 2023-01-02 11:06:44 -06:00
parent c6c37c2855
commit 9bd484126d
No known key found for this signature in database
GPG Key ID: 206B0B8743BDF4C2
3 changed files with 12 additions and 2 deletions

View File

@ -195,6 +195,8 @@ class User extends ContentEntityBase implements UserInterface {
$roles = $this->getRoles(TRUE);
$roles[] = $rid;
$this->set('roles', array_unique($roles));
return $this;
}
/**
@ -202,6 +204,8 @@ class User extends ContentEntityBase implements UserInterface {
*/
public function removeRole($rid) {
$this->set('roles', array_diff($this->getRoles(TRUE), [$rid]));
return $this;
}
/**

View File

@ -69,6 +69,8 @@ interface UserInterface extends ContentEntityInterface, EntityChangedInterface,
*
* @param string $rid
* The role ID to add.
*
* @return $this
*/
public function addRole($rid);
@ -77,6 +79,8 @@ interface UserInterface extends ContentEntityInterface, EntityChangedInterface,
*
* @param string $rid
* The role ID to remove.
*
* @return $this
*/
public function removeRole($rid);

View File

@ -52,7 +52,8 @@ class UserEntityTest extends KernelTestBase {
$this->assertFalse($user->hasRole('test_role_two'));
$this->assertEquals([RoleInterface::AUTHENTICATED_ID, 'test_role_one'], $user->getRoles());
$user->addRole('test_role_one');
$account = $user->addRole('test_role_one');
$this->assertSame($user, $account);
$this->assertTrue($user->hasRole('test_role_one'));
$this->assertFalse($user->hasRole('test_role_two'));
$this->assertEquals([RoleInterface::AUTHENTICATED_ID, 'test_role_one'], $user->getRoles());
@ -62,7 +63,8 @@ class UserEntityTest extends KernelTestBase {
$this->assertTrue($user->hasRole('test_role_two'));
$this->assertEquals([RoleInterface::AUTHENTICATED_ID, 'test_role_one', 'test_role_two'], $user->getRoles());
$user->removeRole('test_role_three');
$account = $user->removeRole('test_role_three');
$this->assertSame($user, $account);
$this->assertTrue($user->hasRole('test_role_one'));
$this->assertTrue($user->hasRole('test_role_two'));
$this->assertEquals([RoleInterface::AUTHENTICATED_ID, 'test_role_one', 'test_role_two'], $user->getRoles());