$accessToken['expire'] = $refreshToken['expire']; } $tokenStore->addAccessToken($accessToken); $liveAccessTokens = array($accessToken['id']); foreach ($user['accessTokens'] as $tokenId) { if (!is_null($tokenStore->getAccessToken($tokenId))) { array_push($liveAccessTokens, $tokenId); } } $user['accessTokens'] = $liveAccessTokens; if (isset($client['expire'])) { $clientGracePeriod = $config->getValue('client_grace_period', 30 * 24 * 60 * 60); $now = time(); if ($client['expire'] < $now + $clientGracePeriod / 2) { $client['expire'] = $now + $clientGracePeriod; $clientStore->updateClient($client); } if ($client['expire'] > $user['expire']) { $user['expire'] = $client['expire']; } } $response = array('access_token' => $accessToken['id'], 'token_type' => $accessToken['type'], 'expires_in' => $accessToken['expire'] - time(), 'refresh_token' => $refreshToken['id'], 'scope' => trim(implode(' ', $accessToken['scopes']))); } else { $response = \sspmod_oauth2server_Utility_Uri::buildErrorResponse('invalid_grant', 'mismatching redirection uri, expected: ' . $authorizationToken['redirectUri'] . ' got: ' . $redirectUri, 'MISMATCHING_' . strtoupper($_POST['grant_type']) . '_URI', array('URI_ACTUAL' => $redirectUri)); $errorCode = 400; } } else { if ($_POST['grant_type'] === 'authorization_code') { $response = \sspmod_oauth2server_Utility_Uri::buildErrorResponse('invalid_grant', 'authorization code grant was not issued for client id: ' . $clientId, 'MISMATCHING_AUTHORIZATION_CODE_CLIENT', array('CLIENT_ID' => $clientId)); } else { $response = \sspmod_oauth2server_Utility_Uri::buildErrorResponse('invalid_grant', 'refresh token was not issued for client id: ' . $clientId, 'MISMATCHING_REFRESH_TOKEN_CLIENT', array('CLIENT_ID' => $clientId));
/** * @group unit * @group oauth2 */ public function testUpdateClient() { $store = new \sspmod_oauth2server_OAuth2_ClientStore($this->getDefaultConfiguration()); $client1 = array('id' => 'dummy', 'expire' => time() + 1000, 'scope' => array('scope1' => false)); $store->addClient($client1); $client2 = array('id' => 'dummy', 'expire' => time() + 1000, 'scope' => array('scope2' => true)); $store->updateClient($client2); $client3 = $store->getClient($client2['id']); $this->assertNotNull($client3); $this->assertEquals($client2['id'], $client3['id']); $this->assertEquals($client2['scope'], $client3['scope']); }