Skip to content

Commit 75d24b6

Browse files
committed
Implement AuthenticatorInterface::createToken() (Symfony 5.4)
1 parent 72d3192 commit 75d24b6

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

Security/Authenticator/JWTAuthenticator.php

+10
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
use Symfony\Component\Security\Core\User\UserProviderInterface;
3131
use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator;
3232
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
33+
use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
3334
use Symfony\Component\Security\Http\Authenticator\Passport\PassportInterface;
3435
use Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport;
3536
use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
@@ -219,4 +220,13 @@ public function createAuthenticatedToken(PassportInterface $passport, string $fi
219220

220221
return $token;
221222
}
223+
224+
public function createToken(Passport $passport, string $firewallName): TokenInterface
225+
{
226+
$token = parent::createToken($passport, $firewallName);
227+
228+
$this->eventDispatcher->dispatch(new JWTAuthenticatedEvent($passport->getAttribute('payload'), $token), Events::JWT_AUTHENTICATED);
229+
230+
return $token;
231+
}
222232
}

Tests/Security/Authenticator/JWTAuthenticatorTest.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
2424
use Symfony\Component\Security\Core\User\UserInterface;
2525
use Symfony\Component\Security\Core\User\UserProviderInterface;
26+
use Symfony\Component\Security\Http\Authenticator\FormLoginAuthenticator;
2627
use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
2728
use Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport;
2829
use Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken;
@@ -226,7 +227,11 @@ public function testCreateAuthenticatedToken()
226227
$passport->method('getUser')->willReturn($user);
227228
$passport->method('getAttribute')->with('payload')->willReturn(['claim' => 'val']);
228229

229-
$authenticator->createToken($passport, 'dummy');
230+
if (method_exists(FormLoginAuthenticator::class, 'createToken')) {
231+
$authenticator->createToken($passport, 'dummy');
232+
} else {
233+
$authenticator->createAuthenticatedToken($passport, 'dummy');
234+
}
230235
}
231236

232237
private function getJWTManagerMock($userIdentityField = null, $userIdClaim = null)

0 commit comments

Comments
 (0)