<?php
namespace App\Controller;
use App\Controller\RealContainerBearerController;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Argument\ServiceLocator;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\WebService;
use App\Util\AccessControl;
/**
* Description of ParametersNormalizerController
* @author aealan
*/
class ParametersNormalizerController extends RealContainerBearerController {
/**
* @param type $propertyName
* @return type
*/
public function __get($propertyName) {
if ($propertyName == "realContainer") {
return $this->get('real_kernel')->getContainer();
} else {
return $this->$propertyName;
}
}
/**
* Gets a container parameter by its name.
*
* @return mixed
*
* @final
*/
protected function getParameter(string $name) {
$parameters = $this->get('real_kernel')->getContainer()->getParameterBag()->all();
if (!isset($parameters[$name])) {
throw new ServiceNotFoundException('parameter_bag', null, null, [], sprintf('The "%s::getParameter()" method is missing a parameter bag to work properly. Did you forget to register your controller as a service subscriber? This can be fixed either by using autoconfiguration or by manually wiring a "parameter_bag" in the service locator passed to the controller.', \get_class($this)));
}
return $parameters[$name];
}
public function getContentInRequest($request) {
$params = json_decode($request->getContent(), true);
if (is_null($params)) {
$params = $request->request->getIterator()->getArrayCopy();
}
return $params;
}
public function validateFullEmail($email) {
if(filter_var(trim($email), FILTER_VALIDATE_EMAIL)) {
$explodeResult = explode("@",$email);
if(checkdnsrr(array_pop($explodeResult),"MX")) {
return true;
} else {
return false;
}
} else {
return false;
}
}
/**
* Funcion para enviar una respuesta de symfony tipo json para un ajax
* @author Aealan Z <lrobledo@kijho.com> 11/06/2016
* @param array $responseToAjax arreglo para ser enviado como respuesta
* @param integer $httpCode codigo de respuesta
* @return Response respuesta tipo json generica para un ajax
*/
public function respondJsonAjax($responseToAjax, $httpCode = WebService::CODE_SUCCESS) {
$r = new Response(json_encode($responseToAjax));
$r->headers->set('Content-Type', 'application/json');
$r->setStatusCode($httpCode);
if (isset($responseToAjax['code'])) {
$r->setStatusCode($responseToAjax['code']);
}
return $r;
}
protected function validateSession($request, array $roles, string $module){
if (is_null($roles)) {
$roles = [
$this->get('security.authorization_checker')->isGranted('ROLE_SUPER_ADMIN'),
$this->get('security.authorization_checker')->isGranted('ROLE_INTERNAL_SUPPORT'),
$this->get('security.authorization_checker')->isGranted('ROLE_ADMINISTRATOR'),
];
}
$access_control = $this->get('access_control')->checkAccessModule($module, $request);
$access_rol = $this->get('access_control')->checkAccessRol($roles);
if ($access_control !== AccessControl::ACCESS_GRANTED || $access_rol === false) {
if ($access_control == AccessControl::SESSION_LOST)
return $this->redirect($this->generateUrl('level_licensor_login', array('msg' => 'Your session has expired. Please login again')));
elseif ($access_control == AccessControl::ACCESS_DENIED || $access_rol === false)
return $this->render('Default\errorInformation.html.twig');
}
}
}