Skip to content

Commit 1db8f89

Browse files
committed
!squash addressing minor PR comments
1 parent ced7cd9 commit 1db8f89

File tree

4 files changed

+14
-23
lines changed

4 files changed

+14
-23
lines changed

src/Symfony/Bundle/SecurityBundle/Tests/Functional/SecurityTest.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,28 @@ public function testServiceIsFunctional()
3737
public function userWillBeMarkedAsChangedIfRolesHasChangedProvider()
3838
{
3939
return [
40-
[User::class],
41-
[UserWithoutEquatable::class],
40+
[
41+
new User('user1', 'test', ['ROLE_ADMIN']),
42+
new User('user1', 'test', ['ROLE_USER']),
43+
],
44+
[
45+
new UserWithoutEquatable('user1', 'test', ['ROLE_ADMIN']),
46+
new UserWithoutEquatable('user1', 'test', ['ROLE_USER']),
47+
],
4248
];
4349
}
4450

4551
/**
4652
* @dataProvider userWillBeMarkedAsChangedIfRolesHasChangedProvider
4753
*/
48-
public function testUserWillBeMarkedAsChangedIfRolesHasChanged($userClass)
54+
public function testUserWillBeMarkedAsChangedIfRolesHasChanged(UserInterface $userWithAdminRole, UserInterface $userWithoutAdminRole)
4955
{
5056
$client = $this->createClient(['test_case' => 'AbstractTokenCompareRoles', 'root_config' => 'config.yml']);
5157
$client->disableReboot();
5258

5359
/** @var ArrayUserProvider $userProvider */
5460
$userProvider = static::$kernel->getContainer()->get('security.user.provider.array');
55-
$userProvider->addUser(new $userClass('user1', 'test', ['ROLE_ADMIN']));
61+
$userProvider->addUser($userWithAdminRole);
5662

5763
$client->request('POST', '/login', [
5864
'_username' => 'user1',
@@ -63,8 +69,8 @@ public function testUserWillBeMarkedAsChangedIfRolesHasChanged($userClass)
6369
$client->request('GET', '/admin');
6470
$this->assertEquals(200, $client->getResponse()->getStatusCode());
6571

66-
// revoking ROLE_ADMIN from user1
67-
$userProvider->setUser('user1', new $userClass('user1', 'test', ['ROLE_USER']));
72+
// updating user provider with same user but revoked ROLE_ADMIN from user1
73+
$userProvider->setUser('user1', $userWithoutAdminRole);
6874

6975
// user1 has lost ROLE_ADMIN and MUST be redirected away from secure page
7076
$client->request('GET', '/admin');

src/Symfony/Bundle/SecurityBundle/Tests/Functional/app/AbstractTokenCompareRoles/routing.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,3 @@ logout:
66

77
admin_bundle:
88
resource: '@SecuredPageBundle/Resources/config/routing.yml'
9-

src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -318,13 +318,7 @@ private function hasUserChanged(UserInterface $user)
318318
}
319319

320320
$userRoles = array_map('strval', (array) $user->getRoles());
321-
$rolesChanged =
322-
(bool) \count(
323-
array_merge(
324-
array_diff($this->getRoleNames(), $userRoles),
325-
array_diff($userRoles, $this->getRoleNames())
326-
)
327-
);
321+
$rolesChanged = \count($userRoles) !== \count($this->getRoleNames()) || \count($userRoles) !== \count(array_intersect($userRoles, $this->getRoleNames()));
328322

329323
if ($rolesChanged) {
330324
return true;

src/Symfony/Component/Security/Core/User/User.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -137,15 +137,7 @@ public function isEqualTo(UserInterface $user)
137137

138138
$currentRoles = array_map('strval', (array) $this->getRoles());
139139
$newRoles = array_map('strval', (array) $user->getRoles());
140-
141-
$rolesChanged =
142-
(bool) \count(
143-
array_merge(
144-
array_diff($currentRoles, $newRoles),
145-
array_diff($newRoles, $currentRoles)
146-
)
147-
);
148-
140+
$rolesChanged = \count($currentRoles) !== \count($newRoles) || \count($currentRoles) !== \count(array_intersect($currentRoles, $newRoles));
149141
if ($rolesChanged) {
150142
return false;
151143
}

0 commit comments

Comments
 (0)