Skip to content

Commit 77f9209

Browse files
Merge branch '4.4'
* 4.4: [Debug] disable new DebugClassLoader when testing the legacy one - updated AbstractToken to compare Roles - Updated isEqualTo method to match roles as default User implements EquatableInterface - added test case - bumped symfony/security-core to 4.4 typos bis typos Fix more bad tests Fix test fixtures with deprecated method signatures. Fix 4.3 tests forward compat [Messenger] fix empty amqp body returned as false [Mailer] Added messenger to dev dependencies. [Validator] Update "suggest" section in composer.json. Fix routing cache broken when using generator_class
2 parents 72ed58e + e8484c7 commit 77f9209

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

Authentication/Token/AbstractToken.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,13 @@ private function hasUserChanged(UserInterface $user)
270270
return true;
271271
}
272272

273+
$userRoles = array_map('strval', (array) $user->getRoles());
274+
$rolesChanged = \count($userRoles) !== \count($this->getRoleNames()) || \count($userRoles) !== \count(array_intersect($userRoles, $this->getRoleNames()));
275+
276+
if ($rolesChanged) {
277+
return true;
278+
}
279+
273280
if ($this->user->getUsername() !== $user->getUsername()) {
274281
return true;
275282
}

Tests/Authentication/AuthenticationTrustResolverTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ public function getRoleNames(): array
139139
{
140140
}
141141

142+
public function getRoleNames(): array
143+
{
144+
}
145+
142146
public function getCredentials()
143147
{
144148
}

Tests/User/UserTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ public static function isEqualToData()
117117
{
118118
return [
119119
[true, new User('username', 'password'), new User('username', 'password')],
120-
[true, new User('username', 'password', ['ROLE']), new User('username', 'password')],
121-
[true, new User('username', 'password', ['ROLE']), new User('username', 'password', ['NO ROLE'])],
120+
[false, new User('username', 'password', ['ROLE']), new User('username', 'password')],
121+
[false, new User('username', 'password', ['ROLE']), new User('username', 'password', ['NO ROLE'])],
122122
[false, new User('diff', 'diff'), new User('username', 'password')],
123123
[false, new User('diff', 'diff', [], false), new User('username', 'password')],
124124
[false, new User('diff', 'diff', [], false, false), new User('username', 'password')],

User/User.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,13 @@ public function isEqualTo(UserInterface $user): bool
143143
return false;
144144
}
145145

146+
$currentRoles = array_map('strval', (array) $this->getRoles());
147+
$newRoles = array_map('strval', (array) $user->getRoles());
148+
$rolesChanged = \count($currentRoles) !== \count($newRoles) || \count($currentRoles) !== \count(array_intersect($currentRoles, $newRoles));
149+
if ($rolesChanged) {
150+
return false;
151+
}
152+
146153
if ($this->getUsername() !== $user->getUsername()) {
147154
return false;
148155
}

0 commit comments

Comments
 (0)