<?php
namespace App\EventSubscriber;
use App\Entity\User;
use League\Bundle\OAuth2ServerBundle\Event\AuthorizationRequestResolveEvent;
use League\Bundle\OAuth2ServerBundle\OAuth2Events;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Security;
class OAuth2AuthorizationSubscriber implements EventSubscriberInterface
{
public function __construct(private Security $security)
{
}
public function onAuthorizationRequestResolve(AuthorizationRequestResolveEvent $event): void
{
$user = $this->security->getUser();
if (!$user instanceof User) {
return;
}
$event->setUser($user);
$event->resolveAuthorization(AuthorizationRequestResolveEvent::AUTHORIZATION_APPROVED);
}
public static function getSubscribedEvents(): array
{
return [
OAuth2Events::AUTHORIZATION_REQUEST_RESOLVE => 'onAuthorizationRequestResolve',
];
}
}