Skip to content

Commit 8da5b60

Browse files
committed
handle refresh token
1 parent 524244e commit 8da5b60

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

www/idp/index.php

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -353,20 +353,40 @@
353353

354354
$requestFactory = new \Laminas\Diactoros\ServerRequestFactory();
355355
$request = $requestFactory->fromGlobals($_SERVER, $_GET, $_POST, $_COOKIE, $_FILES);
356+
357+
$grantType = isset($requestBody['grant_type']) ? $requestBody['grant_type'] : null;
358+
$clientId = isset($requestBody['client_id']) ? $requestBody['client_id'] : null;
359+
switch ($grantType) {
360+
case "authorization_code":
361+
$code = $requestBody['code'];
362+
$codeInfo = $this->tokenGenerator->getCodeInfo($code);
363+
$userId = $codeInfo['user_id'];
364+
if (!$clientId) {
365+
$clientId = $codeInfo['client_id'];
366+
}
367+
break;
368+
case "refresh_token":
369+
$refreshToken = $requestBody['refresh_token'];
370+
$tokenInfo = $this->tokenGenerator->getCodeInfo($refreshToken); // FIXME: getCodeInfo should be named 'decrypt' or 'getInfo'?
371+
$userId = $tokenInfo['user_id'];
372+
if (!$clientId) {
373+
$clientId = $tokenInfo['client_id'];
374+
}
375+
break;
376+
default:
377+
$userId = false;
378+
break;
379+
}
356380

357-
$code = $request->getParsedBody()['code'];
358-
$clientId = $request->getParsedBody()['client_id'];
359381
$httpDpop = $request->getServerParams()['HTTP_DPOP'];
360382

361383
$response = $authServer->respondToAccessTokenRequest($request);
362384

363-
// FIXME: handle refresh token;
364-
if (isset($code)) {
365-
$codeInfo = $tokenGenerator->getCodeInfo($code);
385+
if (isset($userId)) {
366386
$response = $tokenGenerator->addIdTokenToResponse(
367387
$response,
368388
$clientId,
369-
$codeInfo['user_id'],
389+
$userId,
370390
($_SESSION['nonce'] ?? ''),
371391
Server::getKeys()['privateKey'],
372392
$httpDpop

0 commit comments

Comments
 (0)