Support for SwitchUserToken instances serialized with 4.4/5.1.
This commit is contained in:
parent
62184bd8f0
commit
01bea3c085
@ -59,7 +59,12 @@ class SwitchUserToken extends UsernamePasswordToken
|
||||
*/
|
||||
public function __unserialize(array $data): void
|
||||
{
|
||||
if (3 > \count($data)) {
|
||||
// Support for tokens serialized with version 5.1 or lower of symfony/security-core.
|
||||
[$this->originalToken, $parentData] = $data;
|
||||
} else {
|
||||
[$this->originalToken, $this->originatedFromUri, $parentData] = $data;
|
||||
}
|
||||
$parentData = \is_array($parentData) ? $parentData : unserialize($parentData);
|
||||
parent::__unserialize($parentData);
|
||||
}
|
||||
|
Binary file not shown.
@ -84,4 +84,18 @@ class SwitchUserTokenTest extends TestCase
|
||||
|
||||
$this->assertNull($unserializedToken->getOriginatedFromUri());
|
||||
}
|
||||
|
||||
public function testUnserializeOldToken()
|
||||
{
|
||||
/** @var SwitchUserToken $token */
|
||||
$token = unserialize(file_get_contents(__DIR__.'/Fixtures/switch-user-token-4.4.txt'));
|
||||
|
||||
self::assertInstanceOf(SwitchUserToken::class, $token);
|
||||
self::assertInstanceOf(UsernamePasswordToken::class, $token->getOriginalToken());
|
||||
self::assertSame('john', $token->getUsername());
|
||||
self::assertSame(['foo' => 'bar'], $token->getCredentials());
|
||||
self::assertSame('main', $token->getFirewallName());
|
||||
self::assertEquals(['ROLE_USER'], $token->getRoleNames());
|
||||
self::assertNull($token->getOriginatedFromUri());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user