src/EventSubscriber/AuthorizationRequestResolverSubscriber.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use League\Bundle\OAuth2ServerBundle\Event\AuthorizationRequestResolveEvent;
  4. use League\Bundle\OAuth2ServerBundle\OAuth2Events;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  9. class AuthorizationRequestResolverSubscriber implements EventSubscriberInterface
  10. {
  11.     public const SESSION_AUTHORIZATION_RESULT '_app.oauth2.authorization_result';
  12.     public function __construct(
  13.         RequestStack $requestStack,
  14.         UrlGeneratorInterface $urlGenerator
  15.     )
  16.     {
  17.         $this->requestStack $requestStack;
  18.         $this->urlGenerator $urlGenerator;
  19.     }
  20.     /**
  21.      * @return array<string, string>
  22.      */
  23.     public static function getSubscribedEvents(): array
  24.     {
  25.         return [
  26.             OAuth2Events::AUTHORIZATION_REQUEST_RESOLVE => 'onAuthorizationRequestResolve',
  27.         ];
  28.     }
  29.     public function onAuthorizationRequestResolve(AuthorizationRequestResolveEvent $event): void
  30.     {
  31.         $request $this->requestStack->getCurrentRequest();
  32.         if ($request->getSession()->has(self::SESSION_AUTHORIZATION_RESULT)) {
  33.             $event->resolveAuthorization(
  34.                 $request->getSession()->get(self::SESSION_AUTHORIZATION_RESULT)
  35.             );
  36.             $request->getSession()->remove(self::SESSION_AUTHORIZATION_RESULT);
  37.         } else {
  38.             $url $this->urlGenerator->generate('app_consent'$request->query->all());
  39.             $response = new RedirectResponse($url);
  40.             $event->setResponse($response);
  41.         }
  42.     }
  43. }