From 3d9ef9b6e7e1a121e4c7ca58f16069a7ec1de89e Mon Sep 17 00:00:00 2001 From: Thibaut Salanon Date: Tue, 3 Mar 2020 16:54:02 +0100 Subject: [PATCH] Fix wrong roles comparison --- .../Security/Core/Authentication/Token/AbstractToken.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php b/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php index dd8b460f5753..d31a55f46ff1 100644 --- a/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php +++ b/src/Symfony/Component/Security/Core/Authentication/Token/AbstractToken.php @@ -316,14 +316,15 @@ private function hasUserChanged(UserInterface $user): bool if ($this->user->getSalt() !== $user->getSalt()) { return true; } - + + $currentUserRoles = array_map('strval', (array) $this->user->getRoles()); $userRoles = array_map('strval', (array) $user->getRoles()); if ($this instanceof SwitchUserToken) { $userRoles[] = 'ROLE_PREVIOUS_ADMIN'; } - if (\count($userRoles) !== \count($this->getRoleNames()) || \count($userRoles) !== \count(array_intersect($userRoles, $this->getRoleNames()))) { + if (\count($userRoles) !== \count($currentUserRoles) || \count($userRoles) !== \count(array_intersect($userRoles, $currentUserRoles))) { return true; }