From 5d10d9f68a7968b56d506b28aa677a5d0c2317ee Mon Sep 17 00:00:00 2001 From: Sonia Zorba <sonia.zorba@inaf.it> Date: Wed, 18 Mar 2020 18:01:59 +0100 Subject: [PATCH] Refactoring and minor changes --- classes/OAuth2RequestHandler.php | 21 ++++++++++--------- classes/TokenBuilder.php | 1 - .../datalayer/mysql/MySQLRefreshTokenDAO.php | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/classes/OAuth2RequestHandler.php b/classes/OAuth2RequestHandler.php index c656d12..1ce8a7c 100644 --- a/classes/OAuth2RequestHandler.php +++ b/classes/OAuth2RequestHandler.php @@ -127,7 +127,8 @@ class OAuth2RequestHandler { throw new BadRequestException("refresh_token is required"); } - $refreshToken = $this->locator->getRefreshTokenDAO()->getRefreshTokenData($params['refresh_token']); + $tokenHash = hash('sha256', $params['refresh_token']); + $refreshToken = $this->locator->getRefreshTokenDAO()->getRefreshTokenData($tokenHash); if ($refreshToken === null || $refreshToken->isExpired()) { throw new UnauthorizedException("Invalid refresh token"); @@ -136,22 +137,22 @@ class OAuth2RequestHandler { $scope = $this->getScope($params, $refreshToken); // Generating a new access token - $accessToken = new AccessTokenData(); - $accessToken->token = base64_encode(bin2hex(openssl_random_pseudo_bytes(128))); - $accessToken->clientId = $refreshToken->clientId; - $accessToken->userId = $refreshToken->userId; - $accessToken->scope = $scope; + $accessTokenData = new AccessTokenData(); + $accessTokenData->token = base64_encode(bin2hex(openssl_random_pseudo_bytes(128))); + $accessTokenData->clientId = $refreshToken->clientId; + $accessTokenData->userId = $refreshToken->userId; + $accessTokenData->scope = $scope; - $accessToken = $this->locator->getAccessTokenDAO()->createAccessToken($accessToken); + $accessTokenData = $this->locator->getAccessTokenDAO()->createTokenData($accessTokenData); - return $this->getAccessTokenResponse($accessToken); + return $this->getAccessTokenResponse($accessTokenData); } /** * We can request a new access token with a scope that is a subset (or the * same set) of the scope defined for the refresh token. */ - private function getScope(array $params, RefreshToken $refreshToken): ?array { + private function getScope(array $params, RefreshTokenData $refreshToken): ?array { $scope = $refreshToken->scope; @@ -174,7 +175,7 @@ class OAuth2RequestHandler { $scope = $newScopeValues; } - + return $scope; } diff --git a/classes/TokenBuilder.php b/classes/TokenBuilder.php index 75c6a04..b6a53fa 100644 --- a/classes/TokenBuilder.php +++ b/classes/TokenBuilder.php @@ -78,7 +78,6 @@ class TokenBuilder { $client = $this->locator->getOAuth2ClientDAO()->getOAuth2ClientByClientId($tokenData->clientId); $audiences = [$tokenData->clientId]; - error_log(json_encode($client->scopeAudienceMap)); foreach ($tokenData->scope as $scope) { if (array_key_exists($scope, $client->scopeAudienceMap)) { diff --git a/classes/datalayer/mysql/MySQLRefreshTokenDAO.php b/classes/datalayer/mysql/MySQLRefreshTokenDAO.php index a99864e..28b5c28 100644 --- a/classes/datalayer/mysql/MySQLRefreshTokenDAO.php +++ b/classes/datalayer/mysql/MySQLRefreshTokenDAO.php @@ -43,7 +43,7 @@ class MySQLRefreshTokenDAO extends BaseMySQLDAO implements RefreshTokenDAO { $stmt = $dbh->prepare("SELECT user_id, client_id, creation_time, expiration_time, scope " . " FROM refresh_token WHERE token_hash = :token_hash"); - $stmt->bindParam(':token', $tokenHash); + $stmt->bindParam(':token_hash', $tokenHash); $stmt->execute(); -- GitLab