Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 01bea3c

Browse files
committed
Support for SwitchUserToken instances serialized with 4.4/5.1.
1 parent 62184bd commit 01bea3c

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,12 @@ public function __serialize(): array
5959
*/
6060
public function __unserialize(array $data): void
6161
{
62-
[$this->originalToken, $this->originatedFromUri, $parentData] = $data;
62+
if (3 > \count($data)) {
63+
// Support for tokens serialized with version 5.1 or lower of symfony/security-core.
64+
[$this->originalToken, $parentData] = $data;
65+
} else {
66+
[$this->originalToken, $this->originatedFromUri, $parentData] = $data;
67+
}
6368
$parentData = \is_array($parentData) ? $parentData : unserialize($parentData);
6469
parent::__unserialize($parentData);
6570
}

src/Symfony/Component/Security/Core/Tests/Authentication/Token/SwitchUserTokenTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,18 @@ public function testSerializeNullImpersonateUrl()
8484

8585
$this->assertNull($unserializedToken->getOriginatedFromUri());
8686
}
87+
88+
public function testUnserializeOldToken()
89+
{
90+
/** @var SwitchUserToken $token */
91+
$token = unserialize(file_get_contents(__DIR__.'/Fixtures/switch-user-token-4.4.txt'));
92+
93+
self::assertInstanceOf(SwitchUserToken::class, $token);
94+
self::assertInstanceOf(UsernamePasswordToken::class, $token->getOriginalToken());
95+
self::assertSame('john', $token->getUsername());
96+
self::assertSame(['foo' => 'bar'], $token->getCredentials());
97+
self::assertSame('main', $token->getFirewallName());
98+
self::assertEquals(['ROLE_USER'], $token->getRoleNames());
99+
self::assertNull($token->getOriginatedFromUri());
100+
}
87101
}

0 commit comments

Comments
 (0)