src/Controller/GateSDKController.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Cookie;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. class GateSDKController extends AbstractController
  10. {
  11.     #[Route('/gate-sdk'name'app_gate_sdk'methods: ['GET'])]
  12.     public function index(Request $request): Response
  13.     {
  14.         $firstIdCookie $request->cookies->get('firstid');
  15.         return $this->render('gate/gate-sdk.html.twig', [
  16.             'hasFirstId' => !empty($firstIdCookie),
  17.             'site_name' => 'First ID Demo'
  18.         ]);
  19.     }
  20.     #[Route('/gate-sdk/redirect'name'app_gate_sdk_redirect'methods: ['GET'])]
  21.     public function initiateFirstIdRedirect(Request $request): RedirectResponse
  22.     {
  23.         $redirectHostUrlEncode $request->getSchemeAndHttpHost();
  24.         $encodedRedirectUrl urlencode($redirectHostUrlEncode);
  25.         $redirectPath '/gate-sdk/handle-first-id-redirect';
  26.         $redirectUriUrlEncode urlencode($redirectHostUrlEncode $redirectPath);
  27.         return new RedirectResponse(
  28.             "https://gate.preprod.first-id.fr?redirectHost=$redirectUriUrlEncode&redirectUri=$redirectUriUrlEncode",
  29.             Response::HTTP_FOUND
  30.         );
  31.     }
  32.     #[Route('/gate-sdk/handle-first-id-redirect'name'app_gate_sdk_handle_first_id_redirect'methods: ['GET'])]
  33.     public function handleFirstIdRedirect(Request $request): RedirectResponse
  34.     {
  35.         if ($request->query->has('firstId')) {
  36.             $firstId $request->query->get('firstId');
  37.             $response $this->redirectToRoute('app_gate_sdk');
  38.             $response->headers->setCookie(
  39.                 new Cookie(
  40.                     'firstid',
  41.                     $firstId,
  42.                     time() + (60 60 24 180), // 180 days
  43.                     '/',
  44.                     null,
  45.                     true,  // secure
  46.                     false,  // httpOnly
  47.                     false// raw
  48.                     Cookie::SAMESITE_NONE
  49.                 )
  50.             );
  51.             return $response;
  52.         }
  53.         return $this->redirectToRoute('app_gate_sdk');
  54.     }
  55. }