Skip to content

Commit 1438092

Browse files
committed
Update issueRefreshToken method for AuthCodeGrant
1 parent c4e7674 commit 1438092

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

src/Server/Grants/AuthCodeGrant.php

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use SimpleSAML\Module\oidc\Entities\UserEntity;
2727
use SimpleSAML\Module\oidc\Factories\Entities\AccessTokenEntityFactory;
2828
use SimpleSAML\Module\oidc\Factories\Entities\AuthCodeEntityFactory;
29+
use SimpleSAML\Module\oidc\Factories\Entities\RefreshTokenEntityFactory;
2930
use SimpleSAML\Module\oidc\Repositories\Interfaces\AccessTokenRepositoryInterface;
3031
use SimpleSAML\Module\oidc\Repositories\Interfaces\AuthCodeRepositoryInterface;
3132
use SimpleSAML\Module\oidc\Repositories\Interfaces\RefreshTokenRepositoryInterface;
@@ -56,6 +57,7 @@
5657
use SimpleSAML\Module\oidc\Server\ResponseTypes\Interfaces\AuthTimeResponseTypeInterface;
5758
use SimpleSAML\Module\oidc\Server\ResponseTypes\Interfaces\NonceResponseTypeInterface;
5859
use SimpleSAML\Module\oidc\Server\ResponseTypes\Interfaces\SessionIdResponseTypeInterface;
60+
use SimpleSAML\Module\oidc\Services\LoggerService;
5961
use SimpleSAML\Module\oidc\Utils\Arr;
6062
use SimpleSAML\Module\oidc\Utils\RequestParamsResolver;
6163
use SimpleSAML\Module\oidc\Utils\ScopeHelper;
@@ -162,6 +164,8 @@ public function __construct(
162164
protected RequestParamsResolver $requestParamsResolver,
163165
AccessTokenEntityFactory $accessTokenEntityFactory,
164166
protected AuthCodeEntityFactory $authCodeEntityFactory,
167+
protected RefreshTokenEntityFactory $refreshTokenEntityFactory,
168+
protected LoggerService $logger,
165169
) {
166170
parent::__construct($authCodeRepository, $refreshTokenRepository, $authCodeTTL);
167171

@@ -751,30 +755,30 @@ protected function issueRefreshToken(
751755
throw OidcServerException::serverError('Unexpected refresh token repository entity type.');
752756
}
753757

754-
$refreshToken = $this->refreshTokenRepository->getNewRefreshToken();
755-
756-
if ($refreshToken === null) {
757-
return null;
758-
}
759-
760-
$refreshToken->setExpiryDateTime((new DateTimeImmutable())->add($this->refreshTokenTTL));
761-
$refreshToken->setAccessToken($accessToken);
762-
$refreshToken->setAuthCodeId($authCodeId);
763-
764758
$maxGenerationAttempts = self::MAX_RANDOM_TOKEN_GENERATION_ATTEMPTS;
765759

766760
while ($maxGenerationAttempts-- > 0) {
767-
$refreshToken->setIdentifier($this->generateUniqueIdentifier());
768761
try {
762+
$refreshToken = $this->refreshTokenEntityFactory->fromData(
763+
$this->generateUniqueIdentifier(),
764+
(new DateTimeImmutable())->add($this->refreshTokenTTL),
765+
$accessToken,
766+
$authCodeId,
767+
);
769768
$this->refreshTokenRepository->persistNewRefreshToken($refreshToken);
770-
break;
769+
return $refreshToken;
771770
} catch (UniqueTokenIdentifierConstraintViolationException $e) {
772771
if ($maxGenerationAttempts === 0) {
773772
throw $e;
774773
}
775774
}
776775
}
777776

778-
return $refreshToken;
777+
$this->logger->error('Unable to issue refresh token.', [
778+
'accessTokenId' => $accessToken->getIdentifier(),
779+
'authCodeId' => $authCodeId,
780+
]);
781+
782+
return null;
779783
}
780784
}

0 commit comments

Comments
 (0)