Exemplo n.º 1
0
 /**
  * Funcion que realiza el filtro correspondiente
  */
 public function filter(En_HttpRequest $request, En_HttpResponse $response)
 {
     //Leo el archivo de configuracion de seguridad
     $seguridad = $this->context->readConfigurationFile('authorization');
     //Tipo por defecto
     $user_logged = 'default';
     if ($request->session->exist('user_logged')) {
         //Si existe le asigno el tipo correspondiente
         $user_logged = $request->session->get('user_logged');
     }
     //Compruebo que exista la configuracion para el tipo de usuario logueado
     if (isset($seguridad[$user_logged])) {
         //Seteo la configuracion del usuario correpondiente
         $config_seguridad = $seguridad[$user_logged];
         //Seteo los permisos del usuario
         $permisos = $config_seguridad['permit'];
         $mapea = FALSE;
         //Recorro sus permisos y veo si alguno coincice
         foreach ($permisos as $permiso) {
             if (Http\UrlUri::mapsActualUrl($permiso)) {
                 //Cuando alguno coincide salgo del for
                 $mapea = TRUE;
                 break;
             }
         }
         if ($mapea) {
             //Si hubo mapeo, recorro las url denegadas para el usuario
             $denegados = $config_seguridad['deny'];
             foreach ($denegados as $denegado) {
                 if (Http\UrlUri::mapsActualUrl($denegado)) {
                     //Si la url es denegada salgo del for
                     $mapea = FALSE;
                     break;
                 }
             }
         }
         if (!$mapea) {
             //Si no tiene permiso es redireccionado
             $response->redirect($config_seguridad['error']);
         }
     } else {
         //Si no existe la configuracion aviso del error
         echo "No existe definicion de seguridad para {$user_logged}";
         $request->session->deleteSession();
         exit;
     }
 }
Exemplo n.º 2
0
 /**
  * Ejecuta el controlador que mapeo anteriormente. Segun su definicion en la configuracion se ejecutara al estilo REST
  * o mediante nombre de funciones
  * @param array $controller_esp 
  * @param string $uriapp
  */
 protected function executeController($controller_esp, $uriapp = NULL)
 {
     $dir = $this->buildDir($controller_esp);
     $class = $this->buildClass($controller_esp);
     if (!class_exists($class)) {
         //Si la clase no existe intento cargarla
         if (file_exists($dir)) {
             require_once $dir;
         } else {
             //Avisa que el archivo no existe
             Error::general_error('Controller Error', 'The controller ' . $controller_esp['class'] . ' dont exists');
         }
     }
     $controller = new $class();
     //Agrego los parametros URI
     $uri_params = UrlUri::uriParams($controller_esp['url'], $uriapp);
     $dinamic_method = $uri_params['dinamic'];
     $method = $uri_params['method'];
     $controller->setUriParams($uri_params['params']);
     //Analizo si hay parametros en la configuracion
     if (isset($controller_esp['properties'])) {
         $this->app->dependenciesEngine->injectProperties($controller, $controller_esp['properties']);
     }
     //Saca el metodo HTPP y en base a eso hace una llamada al metodo correspondiente
     $methodHttp = $_SERVER['REQUEST_METHOD'];
     if ($dinamic_method) {
         if (method_exists($controller, $method)) {
             $controller->{$method}($this->httpRequest, $this->httpResponse);
         } else {
             Error::general_error('HTTP Method Error', "The HTTP method {$method} is not supported");
         }
     } else {
         switch ($methodHttp) {
             case 'GET':
                 $controller->doGet($this->httpRequest, $this->httpResponse);
                 break;
             case 'POST':
                 $controller->doPost($this->httpRequest, $this->httpResponse);
                 break;
             case 'UPDATE':
                 $controller->doUpdate($this->httpRequest, $this->httpResponse);
                 break;
             case 'DELETE':
                 $controller->doDelete($this->httpRequest, $this->httpResponse);
                 break;
             case 'HEAD':
                 $controller->doHead($this->httpRequest, $this->httpResponse);
                 break;
             case 'TRACE':
                 $controller->doTrace($this->httpRequest, $this->httpResponse);
                 break;
             case 'URI':
                 $controller->doUri($this->httpRequest, $this->httpResponse);
                 break;
             case "OPTIONS":
                 $controller->doOptions($this->httpRequest, $this->httpResponse);
                 break;
             case 'CONNECT':
                 $controller->doConnect($this->httpRequest, $this->httpResponse);
                 break;
             default:
                 Error::general_error('HTTP Method Error', "The HTTP method {$methodHttp} is not supported");
         }
     }
 }
Exemplo n.º 3
0
 /**
  * Redirecciona a una pagina externa a la aplicacion actual
  * @param string $url
  */
 public function external_redirect($url)
 {
     UrlUri::externalRedirect($url);
 }