From 6e9f34a5dd86604726792701c3686c0d61310b5c Mon Sep 17 00:00:00 2001 From: Wouter de Jong Date: Sat, 30 May 2020 11:27:52 +0200 Subject: [PATCH] Revert "bug #35944 [Security/Core] Fix wrong roles comparison (thlbaut)" This reverts commit 2e46c63bceb3fcb2472d7c45d49e0bda558a1505, reversing changes made to 47180fe447c14c5ed68dbf22cf663c5aef4e5911. --- .../Security/Core/Authentication/Token/AbstractToken.php | 7 +++++-- .../Core/Tests/Authentication/Token/AbstractTokenTest.php | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php b/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php index de0ebac264884..e59997de34913 100644 --- a/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php +++ b/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php @@ -317,10 +317,13 @@ private function hasUserChanged(UserInterface $user): bool return true; } - $currentUserRoles = array_map('strval', (array) $this->user->getRoles()); $userRoles = array_map('strval', (array) $user->getRoles()); - if (\count($userRoles) !== \count($currentUserRoles) || \count($userRoles) !== \count(array_intersect($userRoles, $currentUserRoles))) { + if ($this instanceof SwitchUserToken) { + $userRoles[] = 'ROLE_PREVIOUS_ADMIN'; + } + + if (\count($userRoles) !== \count($this->getRoleNames()) || \count($userRoles) !== \count(array_intersect($userRoles, $this->getRoleNames()))) { return true; } diff --git a/src/Symfony/Component/Security/Core/Tests/Authentication/Token/AbstractTokenTest.php b/src/Symfony/Component/Security/Core/Tests/Authentication/Token/AbstractTokenTest.php index 8c64ea68280f2..f30705fdc02b1 100644 --- a/src/Symfony/Component/Security/Core/Tests/Authentication/Token/AbstractTokenTest.php +++ b/src/Symfony/Component/Security/Core/Tests/Authentication/Token/AbstractTokenTest.php @@ -238,7 +238,7 @@ public function getUserChangesAdvancedUser() */ public function testSetUserDoesNotSetAuthenticatedToFalseWhenUserDoesNotChange($user) { - $token = new ConcreteToken(['ROLE_FOO']); + $token = new ConcreteToken(); $token->setAuthenticated(true); $this->assertTrue($token->isAuthenticated());