public_html/index.php line 93

Open in your IDE?
  1. <?php
  2. use App\InstanceKernelFactory;
  3. use App\InstanceKernel;
  4. use App\Kernel;
  5. use Symfony\Component\ErrorHandler\Debug;
  6. use QueueIT\KnownUserV3\SDK\KnownUser;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. require dirname(__DIR__).'/config/bootstrap.php';
  11. if ($_SERVER['APP_DEBUG']) {
  12.     umask(0000);
  13.     Debug::enable();
  14. }
  15. if ($trustedProxies $_SERVER['TRUSTED_PROXIES'] ?? false) {
  16.     Request::setTrustedProxies(explode(','$trustedProxies), Request::HEADER_X_FORWARDED_FOR Request::HEADER_X_FORWARDED_PORT Request::HEADER_X_FORWARDED_PROTO);
  17. }
  18. if ($trustedHosts $_SERVER['TRUSTED_HOSTS'] ?? false) {
  19.     Request::setTrustedHosts([$trustedHosts]);
  20. }
  21. $request Request::createFromGlobals();
  22. // handle queue-it if needed as soon as possible before kernel instantiation
  23. // @see https://github.com/queueit/KnownUser.V3.PHP/blob/master/README.md
  24. $queueItCustomerId getenv('QUEUEIT_CUSTOMER_ID');
  25. if ($queueItCustomerId !== false) {
  26.   $queueItConfigFile getenv('QUEUEIT_CONFIG_FILE');
  27.   if (!file_exists($queueItConfigFile)) {
  28.     error_log("[QUEUEIT] Config file not found");
  29.   }
  30.   $queueItConfig = @file_get_contents($queueItConfigFile);
  31.   $queueItSecretKey getenv('QUEUEIT_SECRET');
  32.   $queueItToken $request->query->get('queueittoken''');
  33.   $fullUrl $request->getUri();
  34.   $currentUrlWithoutQueueItToken preg_replace("/([\\?&])(" "queueittoken" "=[^&]*)/i"""$fullUrl);
  35.   try {
  36.     $response null;
  37.     $result KnownUser::validateRequestByIntegrationConfig(
  38.       $currentUrlWithoutQueueItToken$queueItToken$queueItConfig$queueItCustomerId$queueItSecretKey
  39.     );
  40.     if ($result->actionType) {
  41.       error_log("[QUEUEIT] Result $result->actionName $result->actionType in $fullUrl request");
  42.     }
  43.     if ($result->doRedirect()) {
  44.       if (!$result->isAjaxResult) {
  45.         //Send the user to the queue - either because hash was missing or because is was invalid
  46.         $response = new RedirectResponse($result->redirectUrlResponse::HTTP_FOUND);
  47.       } else {
  48.         $response = new Response(''Response::HTTP_OK, [
  49.           $result->getAjaxQueueRedirectHeaderKey() => $result->getAjaxRedirectUrl()
  50.         ]);
  51.       }
  52.     }
  53.     if (!empty($queueItToken) && $result->actionType == "Queue") {
  54.       //Request can continue - we remove queueittoken form querystring parameter to avoid sharing of user specific token
  55.       $response = new RedirectResponse($currentUrlWithoutQueueItTokenResponse::HTTP_FOUND);
  56.     }
  57.     if ($response instanceof Response) {
  58.       $response->setPrivate();
  59.       $response->setExpires(new DateTime('1977-12-05'));
  60.       $response->headers->set('pragma''no-cache');
  61.       $response->send();
  62.       exit();
  63.     }
  64.   } catch (Throwable $e) {
  65.     error_log("[QUEUEIT] Error: {$e->getMessage()} in $fullUrl request");
  66.   }
  67. }
  68. // Load environment from server variables, default is prod
  69. $env 'prod';
  70. $debug false;
  71. if ($request->server->has('APP_ENV') && in_array($request->server->get('APP_ENV'), ['prod''dev''test'])) {
  72.   $env $request->server->get('APP_ENV');
  73.   if ($env == 'dev') {
  74.     $debug true;
  75.   }
  76. }
  77. $kernel InstanceKernelFactory::instanceFromRequest($env$request$debug);
  78. if (!$kernel instanceof InstanceKernel) {
  79.   $kernel = new Kernel($env$debug);
  80. }
  81. $response $kernel->handle($request);
  82. $response->send();
  83. $kernel->terminate($request$response);