src/Services/Security/RedirectTools.php line 18

Open in your IDE?
  1. <?php
  2. //----------------------------------------------------------------------
  3. // src/Services/Security/RedirectTools.php
  4. //----------------------------------------------------------------------
  5. namespace App\Services\Security;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Symfony\Component\Routing\RouterInterface;
  8. use App\Services\LogTools;
  9. use App\Entity\Config;
  10. class RedirectTools
  11. {
  12.     public function __construct(RouterInterface $routerManagerRegistry $doctrineLogTools $logTools)
  13.     {
  14.         $this->em $doctrine->getManager();
  15.         $this->router $router;
  16.         $this->logTools $logTools;
  17.     }
  18.     public function getRedirectData($cookies)
  19.     {
  20.         $logFile null;
  21.         // $logFile = "ploop_redirect.log";
  22.         if ($logFile !== null)
  23.         {
  24.             error_log("\n------------------------------------------------------------------\n"3$logFile);
  25.             error_log("BEGIN : getRedirectData\n"3$logFile);
  26.         }
  27.         $icodId 0;
  28.         $icodRoute 0;
  29.         $icodRouteParamCount 0;
  30.         $url null;
  31.         $icodId intval($cookies->get('icod_id'));
  32.         $icodRoute $cookies->get('icod_route');
  33.         $icodRouteParamCount intval($cookies->get('icod_route_param_count'));
  34.         if (empty($icodId) && empty($icodRoute) && empty($icodRouteParamCount))
  35.         {
  36.             return null;
  37.         }
  38.         // At least one value is not empty
  39.         if (empty($icodId) && !empty($icodRouteParamCount))
  40.         {
  41.             // This means that the route containes a custom param (simulation_id, devis_id etc..)
  42.             // Ignore these
  43.             return null;
  44.         }
  45.         if ($logFile !== null)
  46.         {
  47.             error_log("\n icod_route = ".$icodRoute3$logFile);
  48.         }
  49.         // Check urls to avoid
  50.         $urlsToAvoid = array(
  51.             "admin""api-rest""axiom""logout""login_check",
  52.             "icod_platform_planning_isloggedin",
  53.             "attachment",
  54.             "icod_access_activate",
  55.             "icod_society_group_request",
  56.             "icod_platform_task_edit",
  57.             "icod_platform_task_view",
  58.             "icod_platform_task_help_view",
  59.             "icod_platform_task_recurring_view",
  60.             "icod_platform_task_decide_click",
  61.         );
  62.         foreach ($urlsToAvoid as $urlToAvoid)
  63.         {
  64.             if (strpos($icodRoute$urlToAvoid) !== false)
  65.             {
  66.                 return null;
  67.             }
  68.         }
  69.         // Check urls that are problematic, we want to keep them, but not use them
  70.         $icodDontRedirect 0;
  71.         $urlsToNotRedirect = array("pdf""icod_webapp_document_view");
  72.         foreach ($urlsToNotRedirect as $urlToNotRedirect)
  73.         {
  74.             if (strpos($icodRoute$urlToNotRedirect) !== false)
  75.             {
  76.                 $icodDontRedirect 1;
  77.                 break;
  78.             }
  79.         }
  80.         $url null;
  81.         if (!empty($icodId))
  82.         {
  83.             // We have an object
  84.             try
  85.             {
  86.                 $url $this->router->generate($icodRoute, array('id' => $icodId));
  87.             }
  88.             catch (\Exception $e)
  89.             {
  90.                 $url null;
  91.             }
  92.         }
  93.         else
  94.         {
  95.             // No object
  96.             try
  97.             {
  98.                 $url $this->router->generate($icodRoute);
  99.             }
  100.             catch (\Exception $e)
  101.             {
  102.                 $url null;
  103.             }
  104.         }
  105.         if ($url === null)
  106.         {
  107.             return null;
  108.         }
  109.         // All went well, do some logging if needed
  110.         if ($logFile !== null)
  111.         {
  112.             error_log("\n icod_id = ".$icodId3$logFile);
  113.             error_log("\n icod_route = ".$icodRoute3$logFile);
  114.             error_log("\n icod_route_param_count = ".$icodRouteParamCount3$logFile);
  115.             error_log("\n icod_dont_redirect = ".$icodDontRedirect3$logFile);
  116.         }
  117.         if ($logFile !== null)
  118.         {
  119.             error_log("\n\nEND : getRedirectData"3$logFile);
  120.             error_log("\n------------------------------------------------------------------\n"3$logFile);
  121.         }
  122.         // Return data
  123.         return array(
  124.             'icod_id'                    =>    $icodId,
  125.             'icod_route'                =>    $icodRoute,
  126.             'icod_dont_redirect'        =>    $icodDontRedirect,
  127.         );
  128.     }
  129. }