/** * Funcion que realiza el filtro correspondiente */ public function filter() { //Leo el archivo de configuracion de seguridad $json_segurirad = file_get_contents(PATHAPP . CONFIGURATION . 'authorization.json'); //Pasa el archivo json a un arreglo $seguridad = json_decode($json_segurirad, TRUE); //Tipo por defecto $user_logged = 'default'; if ($this->request->session->exist('user_logged')) { //Si existe le asigno el tipo correspondiente $user_logged = $this->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 (maps_actual_url($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 (maps_actual_url($denegado)) { //Si la url es denegada salgo del for $mapea = FALSE; break; } } } if (!$mapea) { //Si no tiene permiso es redireccionado redirect($config_seguridad['error']); } } else { //Si no existe la configuracion aviso del error echo "No existe definicion de seguridad para {$user_logged}"; $this->request->session->deleteSession(); exit; } }
/** * Encuentra el controlador que mapea * @param type $controladores * @return type */ function mapping_controller($controladores, $uriapp = NULL) { $mapea = FALSE; //Recorre todos los controladores hasta que uno coincida con la URI actual foreach ($controladores as $controlador_esp) { //Analiza si el controlador mapea con la uri actual $mapea = maps_actual_url($controlador_esp['url'], $uriapp); if ($mapea) { return $controlador_esp; } } //si ningun controlador mapeo avisa el problema if (!$mapea) { error_404(); } }