<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class GateSDKController extends AbstractController
{
#[Route('/gate-sdk', name: 'app_gate_sdk', methods: ['GET'])]
public function index(Request $request): Response
{
$firstIdCookie = $request->cookies->get('firstid');
return $this->render('gate/gate-sdk.html.twig', [
'hasFirstId' => !empty($firstIdCookie),
'site_name' => 'First ID Demo'
]);
}
#[Route('/gate-sdk/redirect', name: 'app_gate_sdk_redirect', methods: ['GET'])]
public function initiateFirstIdRedirect(Request $request): RedirectResponse
{
$redirectHostUrlEncode = $request->getSchemeAndHttpHost();
$encodedRedirectUrl = urlencode($redirectHostUrlEncode);
$redirectPath = '/gate-sdk/handle-first-id-redirect';
$redirectUriUrlEncode = urlencode($redirectHostUrlEncode . $redirectPath);
return new RedirectResponse(
"https://gate.preprod.first-id.fr?redirectHost=$redirectUriUrlEncode&redirectUri=$redirectUriUrlEncode",
Response::HTTP_FOUND
);
}
#[Route('/gate-sdk/handle-first-id-redirect', name: 'app_gate_sdk_handle_first_id_redirect', methods: ['GET'])]
public function handleFirstIdRedirect(Request $request): RedirectResponse
{
if ($request->query->has('firstId')) {
$firstId = $request->query->get('firstId');
$response = $this->redirectToRoute('app_gate_sdk');
$response->headers->setCookie(
new Cookie(
'firstid',
$firstId,
time() + (60 * 60 * 24 * 180), // 180 days
'/',
null,
true, // secure
false, // httpOnly
false, // raw
Cookie::SAMESITE_NONE
)
);
return $response;
}
return $this->redirectToRoute('app_gate_sdk');
}
}