Skip to content

Commit 9fd44e7

Browse files
Orkinchalasr
authored andcommitted
Fix disable access token saving feature
1 parent f9f55a9 commit 9fd44e7

File tree

5 files changed

+37
-28
lines changed

5 files changed

+37
-28
lines changed

psalm.xml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<?xml version="1.0"?>
22
<psalm
3-
totallyTyped="true"
4-
forbidEcho="true"
5-
strictBinaryOperands="true"
6-
phpVersion="7.1"
7-
allowStringToStandInForClass="true"
8-
rememberPropertyAssignmentsAfterCall="false"
9-
checkForThrowsInGlobalScope="true"
10-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
11-
xmlns="https://getpsalm.org/schema/config"
12-
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
13-
errorBaseline=".psalm.baseline.xml"
3+
totallyTyped="true"
4+
forbidEcho="true"
5+
strictBinaryOperands="true"
6+
phpVersion="7.1"
7+
allowStringToStandInForClass="true"
8+
rememberPropertyAssignmentsAfterCall="false"
9+
checkForThrowsInGlobalScope="true"
10+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
11+
xmlns="https://getpsalm.org/schema/config"
12+
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
13+
errorBaseline=".psalm.baseline.xml"
1414
>
1515
<projectFiles>
1616
<directory name="src"/>

src/DependencyInjection/LeagueOAuth2ServerExtension.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function load(array $configs, ContainerBuilder $container)
5555

5656
$config = $this->processConfiguration(new Configuration(), $configs);
5757

58-
$this->configureAccessTokenSaving($loader, $config['authorization_server']);
58+
$this->configureAccessTokenSaving($loader, $container, $config['authorization_server']);
5959
$this->configurePersistence($loader, $container, $config);
6060
$this->configureAuthorizationServer($container, $config['authorization_server']);
6161
$this->configureResourceServer($container, $config['resource_server']);
@@ -208,7 +208,7 @@ private function configureGrants(ContainerBuilder $container, array $config): vo
208208
;
209209
}
210210

211-
private function configureAccessTokenSaving(LoaderInterface $loader, array $config): void
211+
private function configureAccessTokenSaving(LoaderInterface $loader, ContainerBuilder $container, array $config): void
212212
{
213213
if ($config['persist_access_token']) {
214214
$loader->load('access_token/default.php');

src/Manager/Doctrine/AccessTokenManager.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,40 @@ final class AccessTokenManager implements AccessTokenManagerInterface
1515
*/
1616
private $entityManager;
1717

18-
public function __construct(EntityManagerInterface $entityManager)
18+
/** @var bool */
19+
private $persistAccessToken;
20+
21+
public function __construct(EntityManagerInterface $entityManager, bool $persistAccessToken)
1922
{
2023
$this->entityManager = $entityManager;
24+
$this->persistAccessToken = $persistAccessToken;
2125
}
2226

2327
public function find(string $identifier): ?AccessToken
2428
{
29+
if (!$this->persistAccessToken) {
30+
return null;
31+
}
32+
2533
return $this->entityManager->find(AccessToken::class, $identifier);
2634
}
2735

2836
public function save(AccessToken $accessToken): void
2937
{
38+
if (!$this->persistAccessToken) {
39+
return;
40+
}
41+
3042
$this->entityManager->persist($accessToken);
3143
$this->entityManager->flush();
3244
}
3345

3446
public function clearExpired(): int
3547
{
48+
if (!$this->persistAccessToken) {
49+
return 0;
50+
}
51+
3652
/** @var int */
3753
return $this->entityManager->createQueryBuilder()
3854
->delete(AccessToken::class, 'at')

src/Resources/config/access_token/null.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,15 @@
22

33
declare(strict_types=1);
44

5-
use League\Bundle\OAuth2ServerBundle\Manager\AccessTokenManagerInterface;
6-
use League\Bundle\OAuth2ServerBundle\Manager\Null\AccessTokenManager;
75
use League\Bundle\OAuth2ServerBundle\Repository\AccessTokenRepository;
86
use League\Bundle\OAuth2ServerBundle\Repository\NullAccessTokenRepository;
97
use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface;
108
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
119

1210
return static function (ContainerConfigurator $container): void {
1311
$container->services()
12+
1413
->set('league.oauth2_server.repository.access_token', NullAccessTokenRepository::class)
1514
->alias(AccessTokenRepositoryInterface::class, 'league.oauth2_server.repository.access_token')
16-
->alias(AccessTokenRepository::class, 'league.oauth2_server.repository.access_token')
17-
18-
->set('league.oauth2_server.manager.null.access_token', AccessTokenManager::class)
19-
->alias(AccessTokenManagerInterface::class, 'league.oauth2_server.manager.null.access_token')
20-
->alias(AccessTokenManager::class, 'league.oauth2_server.manager.null.access_token');
15+
->alias(AccessTokenRepository::class, 'league.oauth2_server.repository.access_token');
2116
};

tests/Acceptance/DoctrineAccessTokenManagerTest.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use Doctrine\ORM\EntityManagerInterface;
88
use League\Bundle\OAuth2ServerBundle\Manager\Doctrine\AccessTokenManager as DoctrineAccessTokenManager;
9-
use League\Bundle\OAuth2ServerBundle\Manager\Null\AccessTokenManager as NullAccessTokenManager;
109
use League\Bundle\OAuth2ServerBundle\Model\AccessToken;
1110
use League\Bundle\OAuth2ServerBundle\Model\Client;
1211
use League\Bundle\OAuth2ServerBundle\Model\RefreshToken;
@@ -22,7 +21,7 @@ public function testClearExpired(): void
2221
/** @var EntityManagerInterface $em */
2322
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
2423

25-
$doctrineAccessTokenManager = new DoctrineAccessTokenManager($em);
24+
$doctrineAccessTokenManager = new DoctrineAccessTokenManager($em, true);
2625

2726
$client = new Client('client', 'client', 'secret');
2827
$em->persist($client);
@@ -48,12 +47,12 @@ public function testClearExpiredWithoutSavingAccessToken(): void
4847
/** @var EntityManagerInterface $em */
4948
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
5049

50+
$doctrineAccessTokenManager = new DoctrineAccessTokenManager($em, false);
51+
5152
$client = new Client('name', 'client', 'secret');
5253
$em->persist($client);
5354
$em->flush();
5455

55-
$doctrineAccessTokenManager = new NullAccessTokenManager();
56-
5756
$testData = $this->buildClearExpiredTestData($client);
5857

5958
/** @var AccessToken $token */
@@ -105,7 +104,7 @@ public function testClearExpiredWithRefreshToken(): void
105104
{
106105
/** @var EntityManagerInterface $em */
107106
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
108-
$doctrineAccessTokenManager = new DoctrineAccessTokenManager($em);
107+
$doctrineAccessTokenManager = new DoctrineAccessTokenManager($em, true);
109108

110109
$client = new Client('client', 'client', 'secret');
111110
$em->persist($client);
@@ -133,13 +132,12 @@ public function testClearExpiredWithRefreshTokenWithoutSavingAccessToken(): void
133132
{
134133
/** @var EntityManagerInterface $em */
135134
$em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
135+
$doctrineAccessTokenManager = new DoctrineAccessTokenManager($em, false);
136136

137137
$client = new Client('name', 'client', 'secret');
138138
$em->persist($client);
139139
$em->flush();
140140

141-
$doctrineAccessTokenManager = new NullAccessTokenManager();
142-
143141
$testData = $this->buildClearExpiredTestDataWithRefreshToken($client, false);
144142

145143
/** @var RefreshToken $token */

0 commit comments

Comments
 (0)