8000 Fix · ddeboer/symfony@2fb46a1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2fb46a1

Browse files
committed
Fix
1 parent 67ae8fa commit 2fb46a1

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ public function eraseCredentials()
142142
*/
143143
public function serialize()
144144
{
145-
return serialize(array($this->user, $this->authenticated, $this->roles, $this->attributes));
145+
// return serialize(array(serialize($this->user), $this->authenticated, $this->roles, $this->attributes));
146+
return serialize(array(clone($this->user), $this->authenticated, $this->roles, $this->attributes));
146147
}
147148

148149
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,6 @@ public function serialize()
9494
public function unserialize($serialized)
9595
{
9696
list($this->credentials, $this->providerKey, $parentStr) = unserialize($serialized);
97-
parent::unserialize($parentStr);
97+
parent::unserialize(($parentStr));
9898
}
9999
}

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

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,23 @@
1111

1212
namespace Symfony\Component\Security\Core\Tests\Authentication\Token;
1313

14+
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
1415
use Symfony\Component\Security\Core\Role\Role;
16+
use Symfony\Component\Security\Core\Role\SwitchUserRole;
17+
18+
class Wrap implements \Serializable
19+
{
20+
public function serialize()
21+
{
22+
var_dump(\unserialize(\serialize($this->token)));die;
23+
return \serialize(unserialize(\serialize($this->token)));
24+
}
25+
26+
public function unserialize($serialize)
27+
{
28+
$this->token = unserialize($serialize);
29+
}
30+
}
1531

1632
class TestUser
1733
{
@@ -71,6 +87,42 @@ public function testSerialize()
7187
$this->assertEquals($token->getAttributes(), $uToken->getAttributes());
7288
}
7389

90+
public function testSerializeRecursive()
91+
{
92+
$user = new TestUser('david');
93+
$originalToken = new UsernamePasswordToken($user, 'credentials_previousz', 'secured_area', array('ROL1'));
94+
95+
$ser = \serialize(\serialize($originalToken));
96+
$this->assertEquals(\unserialize(\unserialize($ser)), $originalToken);
97+
98+
// $wrap = new Wrap();
99+
// $wrap->token = $originalToken;
100+
101+
102+
// $uToken = \unserialize(\serialize(array($wrap)));
103+
// var_dump($uToken);die;
104+
105+
// succeeds
106+
// $serialized = \unserialize(\serialize($originalToken));
107+
// $this->assertInstanceOf('Symfony\Component\Security\Core\Tests\Authentication\Token\TestUser', $serialized->getUser());
108+
109+
$roles = array(new SwitchUserRole('ROLE_PREVIOUS_ROLE', $originalToken));
110+
111+
$token = new UsernamePasswordToken($user, 'credentials', 'secured_area2', $roles);
112+
$serialized = \serialize($token);
113+
114+
$token2 = \unserialize($serialized);
115+
116+
print_r($token);
117+
print_r($token2);
118+
119+
$user1 = \reset($token->getRoles())->getSource()->getUser();
120+
$this->assertInstanceOf('Symfony\Component\Security\Core\Tests\Authentication\Token\TestUser', $user1);
121+
122+
$user2 = \reset($token2->getRoles())->getSource()->getUser();
123+
$this->assertInstanceOf('Symfony\Component\Security\Core\Tests\Authentication\Token\TestUser', $user2);
124+
}
125+
74126
/**
75127
* @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::__construct
76128
*/
@@ -242,3 +294,4 @@ protected function getToken(array $roles = array())
242294
return $this->getMockForAbstractClass('Symfony\Component\Security\Core\Authentication\Token\AbstractToken', array($roles));
243295
}
244296
}
297+

0 commit comments

Comments
 (0)
0