src/EventListener/AuthorizationRequestResolverSubscriber.php line 33

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