|
10 | 10 | use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
11 | 11 | use Symfony\Component\Security\Core\User\UserInterface;
|
12 | 12 | use Symfony\Component\Security\Guard\Token\PostAuthenticationGuardToken;
|
| 13 | +use Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken; |
13 | 14 | use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator;
|
14 | 15 | use function is_int;
|
15 | 16 | use function serialize;
|
@@ -37,12 +38,22 @@ public function amLoggedInAs(UserInterface $user, string $firewallName = 'main',
|
37 | 38 | {
|
38 | 39 | $session = $this->getCurrentSession();
|
39 | 40 |
|
40 |
| - if ($this->config['guard']) { |
41 |
| - $token = new PostAuthenticationGuardToken($user, $firewallName, $user->getRoles()); |
| 41 | + if ($this->getSymfonyMajorVersion() < 6) { |
| 42 | + if ($this->config['guard']) { |
| 43 | + $token = new PostAuthenticationGuardToken($user, $firewallName, $user->getRoles()); |
| 44 | + } else { |
| 45 | + $token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles()); |
| 46 | + } |
42 | 47 | } else {
|
43 |
| - $token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles()); |
| 48 | + if ($this->config['authenticator']) { |
| 49 | + $token = new PostAuthenticationToken($user, $firewallName, $user->getRoles()); |
| 50 | + } else { |
| 51 | + $token = new UsernamePasswordToken($user, $firewallName, $user->getRoles()); |
| 52 | + } |
44 | 53 | }
|
45 | 54 |
|
| 55 | + $this->getTokenStorage()->setToken($token); |
| 56 | + |
46 | 57 | if ($firewallContext) {
|
47 | 58 | $session->set('_security_' . $firewallContext, serialize($token));
|
48 | 59 | } else {
|
@@ -199,6 +210,24 @@ protected function getLogoutUrlGenerator(): ?LogoutUrlGenerator
|
199 | 210 |
|
200 | 211 | protected function getCurrentSession(): SessionInterface
|
201 | 212 | {
|
202 |
| - return $this->grabService('session'); |
| 213 | + $container = $this->_getContainer(); |
| 214 | + |
| 215 | + if ($this->getSymfonyMajorVersion() < 6) { |
| 216 | + return $container->get('session'); |
| 217 | + } |
| 218 | + |
| 219 | + if ($container->has('session')) { |
| 220 | + return $container->get('session'); |
| 221 | + } |
| 222 | + |
| 223 | + $session = $container->get('session.factory')->createSession(); |
| 224 | + $container->set('session', $session); |
| 225 | + |
| 226 | + return $session; |
| 227 | + } |
| 228 | + |
| 229 | + protected function getSymfonyMajorVersion(): int |
| 230 | + { |
| 231 | + return $this->kernel::MAJOR_VERSION; |
203 | 232 | }
|
204 | 233 | }
|
0 commit comments