<?php
namespace App\EventSubscriber;
use App\Controller\PagesMiddlewareController;
use App\Entity\Main\ApiAgency;
use App\Entity\Main\Tracking;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
class PageSubscriber extends AbstractController implements EventSubscriberInterface{
public function __construct()
{
}
public function onKernelController(ControllerEvent $event)
{
$controller = $event->getController();
if (is_array($controller)) {
$controller = $controller[0];
}
if ($controller instanceof PagesMiddlewareController) {
$request = $event->getRequest();
$path = $request->getRequestUri();
if($path){
$sessionId = $request->getSession()->get("session_id");
if(!$sessionId){
$request->getSession()->set("session_id", sha1(date_format(new \DateTime("now"), "Y-m-d")));
$sessionId = $request->getSession()->get("session_id");
}
// dd($sessionId);
$em = $this->getDoctrine()->getManager();
$trackingClickRepo = $em->getRepository(Tracking::class);
$trackClick = new Tracking();
$trackClick->setTrackingValue($path);
$trackClick->setType(0);
$trackClick->setSession($sessionId);
$trackClick->setDateCreated(new \DateTime("now"));
$em->persist($trackClick);
$em->flush();
}
if($request->get('tologin')){
// return $this->redirect("http://".$_SERVER['SERVER_NAME']."/private");
return $this->logincookie();
}
}
}
public function logincookie()
{
$em = $this->getDoctrine()->getManager();
$apiAgencyRepo = $em->getRepository(ApiAgency::class);
if(!isset($_GET["tologin"]))
return false;
if (strpos($_GET["tologin"], '%') !== false) {
$_GET["tologin"] = urldecode($_GET["tologin"]);
}
$key = 'api3090';
$data = $_GET["tologin"];
$data = str_replace('___', '+', $data);
$data = str_replace('---', '/', $data);
$decrypt = openssl_decrypt($data, 'AES-128-ECB', $key);
if (strpos($decrypt, $key) === false)
return false;
$content = explode('|', $decrypt);
$services = explode(',', $content[0]);
if(!in_array('15', $services) || $content[1] != $_ENV["LICENSE"])
return false;
$result = $apiAgencyRepo->findOneBy(array());
if($result){
$token = new UsernamePasswordToken($result,null,'main', $result->getRoles());
$this->container->get('security.token_storage')->setToken($token);
return $this->redirect("http://".$_SERVER['SERVER_NAME']."/private");
// header("location: http://".$_SERVER['SERVER_NAME'].'/private');
// dd($token);
// die();
return true;
}else{
return new RedirectResponse("/");
}
if(!$result)
return false;
// if(!isset($_GET['manual']))
// die();
// else {
// $location = isset($_GET['personal']) ? 'personalizacion-1' : 'private';
// header("location: https://".$_SERVER['SERVER_NAME'].'/'.$location);
// die();
// }
}
public static function getSubscribedEvents()
{
return [
KernelEvents::CONTROLLER => 'onKernelController',
];
}
}