feat: add consent page post authorize
This commit is contained in:
@@ -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())
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 %}
|
||||
Reference in New Issue
Block a user