diff --git a/examples/public/client_credentials.php b/examples/public/client_credentials.php index c1ca45f0..e2547df3 100644 --- a/examples/public/client_credentials.php +++ b/examples/public/client_credentials.php @@ -1,8 +1,14 @@ + * @copyright Copyright (c) Alex Bilbie + * @license http://mit-license.org/ + * + * @link https://github.com/thephpleague/oauth2-server + */ +use League\OAuth2\Server\AuthorizationServer; use League\OAuth2\Server\Exception\OAuthServerException; -use League\OAuth2\Server\Grant\ClientCredentialsGrant; -use League\OAuth2\Server\Server; use OAuth2ServerExamples\Repositories\AccessTokenRepository; use OAuth2ServerExamples\Repositories\ClientRepository; use OAuth2ServerExamples\Repositories\ScopeRepository; @@ -14,31 +20,33 @@ use Zend\Diactoros\Stream; include __DIR__ . '/../vendor/autoload.php'; $app = new App([ - 'settings' => [ + 'settings' => [ 'displayErrorDetails' => true, ], - Server::class => function () { + AuthorizationServer::class => function () { // Init our repositories - $clientRepository = new ClientRepository(); - $accessTokenRepository = new AccessTokenRepository(); - $scopeRepository = new ScopeRepository(); + $clientRepository = new ClientRepository(); // instance of ClientRepositoryInterface + $scopeRepository = new ScopeRepository(); // instance of ScopeRepositoryInterface + $accessTokenRepository = new AccessTokenRepository(); // instance of AccessTokenRepositoryInterface - $privateKeyPath = 'file://' . __DIR__ . '/../private.key'; - $publicKeyPath = 'file://' . __DIR__ . '/../public.key'; + // Path to public and private keys + $privateKey = 'file://path/to/private.key'; + //$privateKey = new CryptKey('file://path/to/private.key', 'passphrase'); // if private key has a pass phrase + $publicKey = 'file://path/to/public.key'; // Setup the authorization server - $server = new Server( + $server = new AuthorizationServer( $clientRepository, $accessTokenRepository, $scopeRepository, - $privateKeyPath, - $publicKeyPath + $privateKey, + $publicKey ); - // Enable the client credentials grant on the server with a token TTL of 1 hour + // Enable the client credentials grant on the server $server->enableGrantType( - new ClientCredentialsGrant(), - new \DateInterval('PT1H') + new \League\OAuth2\Server\Grant\ClientCredentialsGrant(), + new \DateInterval('PT1H') // access tokens will expire after 1 hour ); return $server; @@ -46,18 +54,28 @@ $app = new App([ ]); $app->post('/access_token', function (ServerRequestInterface $request, ResponseInterface $response) use ($app) { - /* @var \League\OAuth2\Server\Server $server */ - $server = $app->getContainer()->get(Server::class); + + /* @var \League\OAuth2\Server\AuthorizationServer $server */ + $server = $app->getContainer()->get(AuthorizationServer::class); try { + + // Try to respond to the request return $server->respondToAccessTokenRequest($request, $response); + } catch (OAuthServerException $exception) { + + // All instances of OAuthServerException can be formatted into a HTTP response return $exception->generateHttpResponse($response); + } catch (\Exception $exception) { + + // Unknown exception $body = new Stream('php://temp', 'r+'); $body->write($exception->getMessage()); return $response->withStatus(500)->withBody($body); + } });