vendor/league/oauth2-server-bundle/src/Controller/TokenController.php line 59

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace League\Bundle\OAuth2ServerBundle\Controller;
  4. use League\Bundle\OAuth2ServerBundle\Event\TokenRequestResolveEvent;
  5. use League\Bundle\OAuth2ServerBundle\OAuth2Events;
  6. use League\OAuth2\Server\AuthorizationServer;
  7. use League\OAuth2\Server\Exception\OAuthServerException;
  8. use Psr\Http\Message\ResponseFactoryInterface;
  9. use Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface;
  10. use Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  14. final class TokenController
  15. {
  16.     /**
  17.      * @var AuthorizationServer
  18.      */
  19.     private $server;
  20.     /**
  21.      * @var HttpMessageFactoryInterface
  22.      */
  23.     private $httpMessageFactory;
  24.     /**
  25.      * @var HttpFoundationFactoryInterface
  26.      */
  27.     private $httpFoundationFactory;
  28.     /**
  29.      * @var ResponseFactoryInterface
  30.      */
  31.     private $responseFactory;
  32.     /**
  33.      * @var EventDispatcherInterface
  34.      */
  35.     private $eventDispatcher;
  36.     public function __construct(
  37.         AuthorizationServer $server,
  38.         HttpMessageFactoryInterface $httpMessageFactory,
  39.         HttpFoundationFactoryInterface $httpFoundationFactory,
  40.         ResponseFactoryInterface $responseFactory,
  41.         EventDispatcherInterface $eventDispatcher
  42.     ) {
  43.         $this->server $server;
  44.         $this->httpMessageFactory $httpMessageFactory;
  45.         $this->httpFoundationFactory $httpFoundationFactory;
  46.         $this->responseFactory $responseFactory;
  47.         $this->eventDispatcher $eventDispatcher;
  48.     }
  49.     public function indexAction(Request $request): Response
  50.     {
  51.         $serverRequest $this->httpMessageFactory->createRequest($request);
  52.         $serverResponse $this->responseFactory->createResponse();
  53.         try {
  54.             $response $this->server->respondToAccessTokenRequest($serverRequest$serverResponse);
  55.         } catch (OAuthServerException $e) {
  56.             $response $e->generateHttpResponse($serverResponse);
  57.         }
  58.         $renderedResponse $this->httpFoundationFactory->createResponse($response);
  59.         $event $this->eventDispatcher->dispatch(
  60.             new TokenRequestResolveEvent($renderedResponse),
  61.             OAuth2Events::TOKEN_REQUEST_RESOLVE
  62.         );
  63.         return $event->getResponse();
  64.     }
  65. }