src/EventSubscriber/PageSubscriber.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Controller\PagesMiddlewareController;
  4. use App\Entity\Main\ApiAgency;
  5. use App\Entity\Main\Tracking;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\HttpKernel\KernelEvents;
  11. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  12. class PageSubscriber extends AbstractController implements EventSubscriberInterface{
  13.     public function __construct()
  14.     {
  15.             
  16.     }
  17.     public function onKernelController(ControllerEvent $event)
  18.     {
  19.         $controller $event->getController();
  20.         if (is_array($controller)) {
  21.             $controller $controller[0];
  22.         }
  23.         if ($controller instanceof PagesMiddlewareController) {
  24.             $request $event->getRequest();
  25.             $path $request->getRequestUri();
  26.             
  27.             if($path){
  28.                 $sessionId $request->getSession()->get("session_id");
  29.                 if(!$sessionId){
  30.                     $request->getSession()->set("session_id"sha1(date_format(new \DateTime("now"), "Y-m-d")));
  31.                     $sessionId $request->getSession()->get("session_id");
  32.                 }
  33.                 // dd($sessionId);
  34.                 $em $this->getDoctrine()->getManager();
  35.                 $trackingClickRepo $em->getRepository(Tracking::class);
  36.                 $trackClick = new Tracking();
  37.                 $trackClick->setTrackingValue($path);
  38.                 $trackClick->setType(0);
  39.                 $trackClick->setSession($sessionId);
  40.                 $trackClick->setDateCreated(new \DateTime("now"));
  41.                 $em->persist($trackClick);
  42.                 $em->flush();
  43.             }
  44.             if($request->get('tologin')){
  45.                 // return $this->redirect("http://".$_SERVER['SERVER_NAME']."/private");
  46.                 return $this->logincookie();
  47.             }
  48.         }
  49.     }
  50.     public function logincookie()
  51.     {
  52.         $em $this->getDoctrine()->getManager();
  53.         $apiAgencyRepo $em->getRepository(ApiAgency::class);
  54.         if(!isset($_GET["tologin"]))
  55.             return false;
  56.         if (strpos($_GET["tologin"], '%') !== false) {
  57.             $_GET["tologin"] = urldecode($_GET["tologin"]);
  58.         }
  59.         $key        'api3090';
  60.         $data       $_GET["tologin"];
  61.         $data       str_replace('___''+'$data);
  62.         $data       str_replace('---''/'$data);
  63.         $decrypt    openssl_decrypt($data'AES-128-ECB'$key);
  64.         if (strpos($decrypt$key) === false)
  65.             return false;
  66.         $content    explode('|'$decrypt);
  67.         $services   explode(','$content[0]);
  68.             
  69.         if(!in_array('15'$services) || $content[1] != $_ENV["LICENSE"])
  70.             return false;
  71.             
  72.         $result $apiAgencyRepo->findOneBy(array());
  73.             
  74.         if($result){
  75.             $token = new UsernamePasswordToken($result,null,'main'$result->getRoles());
  76.             
  77.             $this->container->get('security.token_storage')->setToken($token);
  78.             
  79.             return $this->redirect("http://".$_SERVER['SERVER_NAME']."/private");
  80.             // header("location: http://".$_SERVER['SERVER_NAME'].'/private');
  81.             // dd($token);
  82.             // die();
  83.             return true;
  84.         }else{
  85.             return new RedirectResponse("/");
  86.         }
  87.         if(!$result)
  88.             return false;
  89.         // if(!isset($_GET['manual']))
  90.         //     die();
  91.         // else {
  92.         //     $location = isset($_GET['personal']) ? 'personalizacion-1' : 'private';
  93.         //     header("location: https://".$_SERVER['SERVER_NAME'].'/'.$location);
  94.         //     die();
  95.         // }
  96.     }
  97.     public static function getSubscribedEvents()
  98.     {
  99.         return [
  100.             KernelEvents::CONTROLLER => 'onKernelController',
  101.         ];
  102.     }
  103. }