From: Leandro Lucarella Date: Thu, 31 Jul 2003 23:04:40 +0000 (+0000) Subject: Se agrega manejo de permisos. X-Git-Tag: svn_import~30 X-Git-Url: https://git.llucax.com/mecon/ai.git/commitdiff_plain/831c787ea93adfb2903e940359403b5bf01740a8 Se agrega manejo de permisos. --- diff --git a/sistema/conf/Marco.php b/sistema/conf/Marco.php index 926aa23..a676d7b 100644 --- a/sistema/conf/Marco.php +++ b/sistema/conf/Marco.php @@ -27,12 +27,13 @@ // $Id$ // +require_once 'permisos.php'; + return array ( // Directorios web del sistema, salvo el root, todos son opcionales. // Si no se ponen, o están vacíos se asume lo que dice el comentario al lado de cada uno. 'directorios' => array ('root' => '/sistemas/ai'), 'titulo_sistema' => 'AI (Administrador de Intranet)', - 'pie_sistema' => 'PIE GO HOME!!!!', 'secciones' => array ( // Las únicas claves obligatorias son nombre, imagenComun y link @@ -42,6 +43,7 @@ return array ( 'imagenComun' => 'general_noticias.gif', // Imagen común 'link' => 'index/grupo', // Link de la sección 'tipoMenu' => 'oculto', // Tipo del menú de hijos [vertical, horizontal, oculto] + 'permisos' => AI_PERM_NOTICIAS, ), // }}} @@ -51,6 +53,7 @@ return array ( 'imagenComun' => 'general_servicios.gif', 'link' => 'index/servicio', 'tipoMenu' => 'oculto', + 'permisos' => AI_PERM_SERVICIOS, ), // }}} @@ -60,6 +63,7 @@ return array ( 'imagenComun' => 'general_sistemas.gif', 'link' => 'index/sistema', 'tipoMenu' => 'oculto', + 'permisos' => AI_PERM_SISTEMAS, ), // }}} ), diff --git a/sistema/local_lib/permisos.php b/sistema/local_lib/permisos.php new file mode 100644 index 0000000..2001aa9 --- /dev/null +++ b/sistema/local_lib/permisos.php @@ -0,0 +1,50 @@ + | +// +--------------------------------------------------------------------+ +// +// $Id$ +// + +/** + * Permiso para administrar grupos de noticias. + */ +define('AI_PERM_NOTICIAS', 49); + +/** + * Permiso para administrar servicios. + */ +define('AI_PERM_SERVICIOS', 50); + +/** + * Permiso para administrar sistemas. + */ +define('AI_PERM_SISTEMAS', 51); + +/** + * Identificador del sistema en SAMURAI. + */ +define('AI_PERM', 45); + +?> diff --git a/sistema/www/index.php b/sistema/www/index.php index 655e967..4983778 100644 --- a/sistema/www/index.php +++ b/sistema/www/index.php @@ -27,9 +27,10 @@ // $Id$ // -require_once 'MECON/HTML/Error.php'; require_once 'MECON/general.php'; prepend_include_path('/var/www/sistemas/ai/sistema/local_lib'); +require_once 'MECON/HTML/Error.php'; +require_once 'permisos.php'; // Debug. {{{ require_once 'PEAR.php'; @@ -37,9 +38,22 @@ require_once 'PEAR.php'; PEAR::setErrorHandling(PEAR_ERROR_RETURN); // }}} +// Creo la base de datos. {{{ +require_once 'AI/DB.php'; +$db =& AI_DB::connect('../conf/DB.ini'); +if (DB::isError($db)) { + die($db->getMessage()); +} +// }}} + +// Creo el objeto de permisos - FIXME - esto debería venir de intranet. {{{ +require_once 'SAMURAI/Perm.php'; +$perm = new SAMURAI_Perm(@$_GET['login'] ? $_GET['login'] : 'llucar@mecon', AI_PERM, $db); +// }}} + // Creo el Marco. {{{ require_once 'MECON/Marco.php'; -$marco = new MECON_Marco('../conf/Marco.php'); +$marco = new MECON_Marco('../conf/Marco.php', $perm); // }}} // Averiguo si estoy administrando algún tipo de objeto. {{{ @@ -48,22 +62,31 @@ if (@$_SERVER['PATH_INFO']) { $tmp = ltrim($_SERVER['PATH_INFO'], '/'); if ($tmp == 'grupo') { $tipo = $tmp; - $clase = "AI_GrupoSecciones"; + $clase = 'AI_GrupoSecciones'; $require = 'AI/GrupoSecciones.php'; $tabla = 'grupo_secciones'; - $nombre = "grupo de secciones"; + $nombre = 'grupo de secciones'; + if (!$perm->tiene(AI_PERM_NOTICIAS)) { + die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo? + } } elseif ($tmp == 'servicio') { $tipo = $tmp; $clase = 'AI_Servicio'; $require = 'AI/Servicio.php'; $tabla = $tipo; $nombre = $tipo; + if (!$perm->tiene(AI_PERM_SERVICIOS)) { + die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo? + } } elseif ($tmp == 'sistema') { $tipo = $tmp; $clase = 'AI_Sistema'; $require = 'AI/Sistema.php'; $tabla = $tipo; $nombre = $tipo; + if (!$perm->tiene(AI_PERM_SISTEMAS)) { + die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo? + } } else { // No hay un objeto válido para administrar. header('Location: '.$_SERVER['SCRIPT_NAME']); } @@ -121,14 +144,6 @@ if ($tipo) { } // }}} - // Creo la base de datos. {{{ - require_once 'AI/DB.php'; - $db =& AI_DB::connect('../conf/DB.ini'); - if (DB::isError($db)) { - die($db->getMessage()); - } - // }}} - // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{ require_once 'AI/Arbol.php'; $arbol = new AI_Arbol($obj, $db);