diff --git a/examples/public/implicit.php b/examples/public/implicit.php new file mode 100644 index 00000000..a9313017 --- /dev/null +++ b/examples/public/implicit.php @@ -0,0 +1,66 @@ + [ + 'displayErrorDetails' => true, + ], + Server::class => function () { + // Init our repositories + $clientRepository = new ClientRepository(); + $scopeRepository = new ScopeRepository(); + $accessTokenRepository = new AccessTokenRepository(); + $userRepository = new UserRepository(); + + $privateKeyPath = 'file://' . __DIR__ . '/../private.key'; + $publicKeyPath = 'file://' . __DIR__ . '/../public.key'; + + // Setup the authorization server + $server = new Server( + $clientRepository, + $accessTokenRepository, + $scopeRepository, + $privateKeyPath, + $publicKeyPath + ); + + // Enable the implicit grant on the server with a token TTL of 1 hour + $server->enableGrantType( + new ImplicitGrant($userRepository), + new \DateInterval('PT1H') + ); + + return $server; + }, +]); + +$app->any('/authorize', function (ServerRequestInterface $request, ResponseInterface $response) use ($app) { + /* @var \League\OAuth2\Server\Server $server */ + $server = $app->getContainer()->get(Server::class); + + try { + return $server->respondToRequest($request, $response); + } catch (OAuthServerException $exception) { + return $exception->generateHttpResponse($response); + } catch (\Exception $exception) { + $body = new Stream('php://temp', 'r+'); + $body->write($exception->getMessage()); + + return $response->withStatus(500)->withBody($body); + } +}); + +$app->run();