fix (oidc timeout) #31: ajout d'une règle de redirection en cas de donnée de session perdue
Some checks reported warnings
Cadoles/hydra-sql/pipeline/head This commit is unstable
Cadoles/hydra-sql/pipeline/pr-develop This commit is unstable

This commit is contained in:
2024-04-18 17:13:42 +02:00
parent cd888d2080
commit bcc91a17b4
3 changed files with 37 additions and 30 deletions

View File

@ -6,11 +6,12 @@ use App\Entity\User;
use App\Hydra\Client;
use App\Hydra\HydraService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Finder\Exception\AccessDeniedException;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class MainController extends AbstractController
{
@ -26,7 +27,7 @@ class MainController extends AbstractController
}
#[Route('/', name: 'app_home')]
public function home(Request $request)
public function home(Request $request): RedirectResponse
{
return $this->hydra->handleLoginRequest($request);
}
@ -34,26 +35,33 @@ class MainController extends AbstractController
* Route de Healthcheck (notament pour kubernetes)
*/
#[Route('/health', name: 'health')]
public function health(Request $request)
public function health(Request $request): Response
{
return new Response('healthy', 200);
}
#[Route('/connect/login-accept', name: 'app_login_accept')]
public function loginAccept(Request $request)
#[Route('/connect/login-accept', name: 'app_login_accept', methods: ['GET'])]
public function loginAccept(Request $request): RedirectResponse
{
/** @var User */
$user = $this->getUser();
$loginAcceptRes = $this->client->acceptLoginRequest($this->session->get('challenge'), [
'subject' => $user->getLogin(),
'remember' => true,
])->toArray();
if (!$user instanceof User) {
throw new AccessDeniedException();
}
$challenge = $this->session->get('challenge');
if (!$challenge) {
return new RedirectResponse($this->getParameter('issuer_url'));
}
$loginAcceptRes = $this->client->acceptLoginRequest($challenge, [
'subject' => $user->getLogin(),
'remember' => true,
])->toArray();
return new RedirectResponse($loginAcceptRes['redirect_to']);
}
#[Route('/connect/consent', name: 'app_consent')]
public function consent(Request $request)
public function consent(Request $request): RedirectResponse
{
return $this->hydra->handleConsentRequest($request);
}