function oauth2_hook_cron(&$croninfo) { assert('is_array($croninfo)'); assert('array_key_exists("summary", $croninfo)'); assert('array_key_exists("tag", $croninfo)'); $oauth2config = SimpleSAML_Configuration::getOptionalConfig('module_oauth2.php'); if (is_null($oauth2config->getValue('cron_tag', 'hourly'))) { return; } if ($oauth2config->getValue('cron_tag', NULL) !== $croninfo['tag']) { return; } try { $store = SimpleSAML_Store::getInstance(); if (!$store instanceof \SimpleSAML\Modules\DBAL\Store\DBAL) { throw new \SimpleSAML_Error_Exception('OAuth2 module: Only DBAL Store is supported'); } $accessTokenRepository = new AccessTokenRepository(); $accessTokenRepository->removeExpiredAccessTokens(); $authTokenRepository = new AuthCodeRepository(); $authTokenRepository->removeExpiredAuthCodes(); $refreshTokenRepository = new RefreshTokenRepository(); $refreshTokenRepository->removeExpiredRefreshTokens(); $croninfo['summary'][] = 'OAuth2 clean up. Removed expired entries from OAuth2 storage.'; } catch (Exception $e) { $message = 'OAuth2 clean up cron script failed: ' . $e->getMessage(); SimpleSAML\Logger::warning($message); $croninfo['summary'][] = $message; } }
<?php /* * This file is part of the simplesamlphp-module-oauth2. * * (c) Sergio Gómez <*****@*****.**> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use SimpleSAML\Modules\OAuth2\OAuth2ResourceServer; use SimpleSAML\Modules\OAuth2\Repositories\AccessTokenRepository; use Zend\Diactoros\Response; use Zend\Diactoros\ServerRequestFactory; try { $server = OAuth2ResourceServer::getInstance(); $request = ServerRequestFactory::fromGlobals(); $authorization = $server->validateAuthenticatedRequest($request); $oauth2Attributes = $authorization->getAttributes(); $tokenId = $oauth2Attributes['oauth_access_token_id']; $accessTokenRepository = new AccessTokenRepository(); $attributes['attributes'] = $accessTokenRepository->getAttributes($tokenId); $attributes['username'] = $oauth2Attributes['oauth_user_id']; $response = new Response\JsonResponse($attributes); $emiter = new Response\SapiEmitter(); $emiter->emit($response); } catch (Exception $e) { header('Content-type: text/plain; utf-8', TRUE, 500); header('OAuth-Error: ' . $e->getMessage()); print_r($e); }