feat: add consent page post authorize

This commit is contained in:
2026-02-17 14:07:09 +01:00
parent 90f6075eff
commit 374d84dfeb
3 changed files with 39 additions and 6 deletions
+11 -1
View File
@@ -2,6 +2,7 @@
namespace App\Controller;
use App\EventListener\LeaugeOAuth2AuthorizationListener;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -34,6 +35,15 @@ class SecurityController extends AbstractController
#[Route(path: '/consent', name: 'app_consent')]
public function consent(Request $request): Response
{
dd($request);
if ($request->getMethod() === Request::METHOD_POST) {
$request->getSession()->set(
LeaugeOAuth2AuthorizationListener::AUTHORIZATION_RESULT,
$request->get('_consent')
);
return $this->redirectToRoute('oauth2_authorize', $request->query->all());
}
return $this->render('security/consent.html.twig');
}
}
@@ -22,15 +22,16 @@ final class LeaugeOAuth2AuthorizationListener
public function onAuthorizationRequestResolve(AuthorizationRequestResolveEvent $event): void
{
$request = $this->requestStack->getCurrentRequest();
$authorization = $request->getSession()->get(self::AUTHORIZATION_RESULT, false);
if (!$authorization) {
$event->setResponse(new RedirectResponse($this->urlGenerator->generate('app_consent')));
if ($request->getSession()->has(self::AUTHORIZATION_RESULT)) {
$event->resolveAuthorization($request->getSession()->get(self::AUTHORIZATION_RESULT));
$request->getSession()->remove(self::AUTHORIZATION_RESULT);
return;
}
$event->resolveAuthorization($authorization);
$request->getSession()->remove(self::AUTHORIZATION_RESULT);
$event->setResponse(new RedirectResponse(
$this->urlGenerator->generate('app_consent', $request->query->all())
));
}
}
+22
View File
@@ -0,0 +1,22 @@
{% extends 'base.html.twig' %}
{% block title %}Log in!{% endblock %}
{% block body %}
<form method="post">
{% if app.user %}
<div class="mb-3">
You are logged in as {{ app.user.userIdentifier }}, <a href="{{ logout_path() }}">Logout</a>
</div>
{% endif %}
<div class="checkbox mb-3">
<input type="checkbox" name="_consent" id="_consent">
<label for="_consent">Consent</label>
</div>
<button class="btn btn-lg btn-primary" type="submit">
Consent
</button>
</form>
{% endblock %}