From fb87a535932bdda48386ecba8fd52d6c7f4ee5f1 Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 17 Apr 2025 16:47:26 +0200 Subject: [PATCH] added EventSubscriber --- src/Entity/User.php | 8 +++ .../AuthorizationCodeSubscriber.php | 60 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/EventSubscriber/AuthorizationCodeSubscriber.php diff --git a/src/Entity/User.php b/src/Entity/User.php index 01db4b3..883795c 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -211,4 +211,12 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface return $this; } + + /** + * Returns a string that can be used as a user identifier for the OAuth2 server. + */ + public function getOAuth2Identifier(): string + { + return (string) $this->getId(); + } } diff --git a/src/EventSubscriber/AuthorizationCodeSubscriber.php b/src/EventSubscriber/AuthorizationCodeSubscriber.php new file mode 100644 index 0000000..f41cedd --- /dev/null +++ b/src/EventSubscriber/AuthorizationCodeSubscriber.php @@ -0,0 +1,60 @@ +security = $security; + $this->urlGenerator = $urlGenerator; + $this->requestStack = $requestStack; + $this->firewallName = $firewallMap->getFirewallConfig($requestStack->getCurrentRequest())->getName(); + } + + public function onLeagueOauth2ServerEventAuthorizationRequestResolve(AuthorizationRequestResolveEvent $event): void + { + $request = $this->requestStack->getCurrentRequest(); + $user = $this->security->getUser(); + $this->saveTargetPath($request->getSession(), $this->firewallName, $request->getUri()); + $response = new RedirectResponse($this->urlGenerator->generate('app_login'), 307); + if ($user instanceof UserInterface) { + //On approuve le consentement automatiquement + $event->resolveAuthorization(true); + $request->getSession()->remove('consent_granted'); + return; + //Decommenter et implemeter pour rediriger vers les constentement + /*if ($request->getSession()->get('consent_granted') !== null) { + $event->resolveAuthorization($request->getSession()->get('consent_granted')); + $request->getSession()->remove('consent_granted'); + return; + } + $response = new RedirectResponse($this->urlGenerator->generate('app_consent', $request->query->all()), 307);*/ + } + $event->setResponse($response); + } + + public static function getSubscribedEvents(): array + { + return [ + 'league.oauth2_server.event.authorization_request_resolve' => 'onLeagueOauth2ServerEventAuthorizationRequestResolve', + ]; + } +} \ No newline at end of file