From 75cc55340ec74a71f0c95b13019c3f61b60de307 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Wed, 12 Mar 2003 14:24:50 +0000 Subject: [PATCH 1/1] Nombre de la Libreria: samurai_lib Nombre del Paquete : SA_Perm Funcion tiene : chequea por todos los permisos pasados por parametro Funcion tieneO : chequea por alguno de los permisos pasados por parametro Funcion tieneUn: chequea el unico permiso pasado por parametro include/samurai_lib_db_conf.inc : Contiene los datos necesarios para conectarse a la base include/samurai_lib_sql.inc : Contiene las consultas sql utilizadas por SA_Perm --- .../src/{ => include}/samurai_lib_db_conf.inc | 0 .../src/{ => include}/samurai_lib_sql.inc | 2 +- samurai_lib/src/prueba.php | 27 +++++- samurai_lib/src/samurai_lib.php | 94 +++++++++++++++---- 4 files changed, 101 insertions(+), 22 deletions(-) rename samurai_lib/src/{ => include}/samurai_lib_db_conf.inc (100%) rename samurai_lib/src/{ => include}/samurai_lib_sql.inc (94%) diff --git a/samurai_lib/src/samurai_lib_db_conf.inc b/samurai_lib/src/include/samurai_lib_db_conf.inc similarity index 100% rename from samurai_lib/src/samurai_lib_db_conf.inc rename to samurai_lib/src/include/samurai_lib_db_conf.inc diff --git a/samurai_lib/src/samurai_lib_sql.inc b/samurai_lib/src/include/samurai_lib_sql.inc similarity index 94% rename from samurai_lib/src/samurai_lib_sql.inc rename to samurai_lib/src/include/samurai_lib_sql.inc index 87b813a..9fd63bb 100644 --- a/samurai_lib/src/samurai_lib_sql.inc +++ b/samurai_lib/src/include/samurai_lib_sql.inc @@ -11,6 +11,6 @@ return array( 'obtener_p_p_completo' => 'SELECT DISTINCT pps.id_permiso AS id_permiso FROM perfil_sist_usuario AS psu , perm_perfil_sist AS pps - WHERE psu.id_sistema = ? AND login = ? AND psu.id_perfil = pps.id_perfil' + WHERE psu.id_sistema = ? AND login = ? AND psu.id_perfil = pps.id_perfil' ); ?> diff --git a/samurai_lib/src/prueba.php b/samurai_lib/src/prueba.php index d73e29f..249f6cc 100644 --- a/samurai_lib/src/prueba.php +++ b/samurai_lib/src/prueba.php @@ -2,10 +2,31 @@ include 'samurai_lib.php'; -$permiso = new SA_Perm(1,'mmarre@mecon'); +print "Prueba Objeto SA_Perm de samurai_lib
"; -$martin = $permiso->tiene(1,2,3,4,5,6,7,3); +$permiso = new SA_Perm(1,'mdegan@mecon'); -var_dump($martin); +print "
Probando la funcion tiene -> "; +if ($permiso->tiene(1,2,3,4,5,6,7,3)) { + print "Tiene todos los permisos
"; +} +else { + print "No tiene todos los permisos
"; +} +print "
Probando la funcion tieneO -> "; +if ($permiso->tieneO(1,2,3,4,5,7,3)) { + print "Tiene alguno de los permisos
"; +} +else { + print "No tiene permiso alguno
"; +} + +print "
Probando la funcion tieneUn -> "; +if ($permiso->tieneO(2)) { + print "Tiene EL permiso
"; +} +else { + print "No tiene EL permiso
"; +} ?> diff --git a/samurai_lib/src/samurai_lib.php b/samurai_lib/src/samurai_lib.php index c16e62b..4411d23 100644 --- a/samurai_lib/src/samurai_lib.php +++ b/samurai_lib/src/samurai_lib.php @@ -27,12 +27,17 @@ require_once 'DB.php'; * * Libreria para le manejo de los permisos. Basada en la lase HE_Perm de * Leandro Lucarella - * Las funciones de acceso publico se llaman igual que en Horas Extras + * Las funciones de acceso publico se llaman igual que en HE_Perm + * Archivos Requeridos + * samurai_lib_sql.inc -> Consultas SQL utilizadas por el objeto + * samurai_lib_db_conf.inc -> Datos de la conexion con la base de datos * * @package SA_Perm * @version $Rev$ * @author $Author$ */ + +// Comienzo Clase {{{ class SA_Perm extends PEAR { /** @@ -70,22 +75,18 @@ class SA_Perm extends PEAR { * El login del usuario lo toma del udat * * @param int $sistema Identificacion del sistema (id_sistema) - * - * @return bool true si esta nrodoc, false en caso contrario + * @param string $login Identificacion del usuario (udat{user} * * @access public */ function SA_Perm($sistema, $login) { - $creacion = false; //Asumo que va a fallar - if (isset($sistema)) { + if (isset($sistema) && isset($login)) { $this->sistema = $sistema; $this->login = $login; $this->DB = $this->_conectarDB(); $this->permisos = $this->_obtenerPermisos(); - $creacion = true; } - return $creacion; } /** @@ -104,7 +105,7 @@ class SA_Perm extends PEAR { */ function tiene() { - $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento + $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento $result = true; //Asumo que no va a fallar if (!count($args)) { $result = false; //Siempre se debe pasar al menos un permiso a buscar @@ -118,7 +119,63 @@ class SA_Perm extends PEAR { return $result; } - //##TODO##: Crear la funcion tieneO simil tiene solo que chequea por or + /** + * Verifica los permisos de un usuario + * + * Compara los permisos que tiene un usuario en relacion a los + * pasados como parametro. Devuelve true si cumple con alguno de los + * permisos, en caso contrario devuelve false. Es de parametros + * variables, y siempre necesita al menos UN parametro + * + * @param array permisos buscados + * + * @return bool + * + * @access public + */ + function tieneO() + { + $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento + $result = true; //Asumo que no va a fallar + if (!count($args)) { //Siempre se debe pasar al menos un permiso a buscar + $result = false; + } + else { + if (count(array_diff($args, $this->permisos)) >= count($args)) { + $result = false; + } + } + return $result; + } + + /** + * Verifica los permisos de un usuario + * + * Compara un permiso pasado por parametro con los que tiene el usuario + * en la base. Devuelve true si tiene el permiso, false en otro caso + * + * @param int permiso buscado + * + * @return bool + * + * @access public + */ + function tieneUn($permiso) + { + $result = true; //Asumo que no va a fallar + if (!isset($permiso)) { //Tiene que pasar un permiso si o si + $result = false; + } + else { + if (!in_array($permiso, $this->permisos)) { //Si no esta en el array, no tiene el permiso + $result = false; + } + } + return $result; + } + +//HASTA ACA FUNCIONES PUBLICAS +//DESDE ACA FUNCIONES PRIVADAS /** * Obtiene los permisos de un usuario de la base @@ -129,11 +186,11 @@ class SA_Perm extends PEAR { */ function _obtenerPermisos() { - $consultas = include 'samurai_lib_sql.inc'; - $sql = $consultas['obtener_p_p_completo']; + $consultas = include 'include/samurai_lib_sql.inc'; + $sql = $consultas['obtener_p_p_completo']; $sql_array = array ('0' => $this->sistema, '1' => $this->login); - $result = $this->DB->getCol($sql,0, $sql_array); - if (DB::isError($this->permisos)) { //En caso de error en la consulta, que lo muestro + $result = $this->DB->getCol($sql,0, $sql_array); + if (DB::isError($this->permisos)) { //En caso de error en la consulta, que lo muestre die ($this->permisos->getMessage()); } return $result; @@ -143,21 +200,22 @@ class SA_Perm extends PEAR { * Conecta el objeto a la base de datos, segun lo especificado * en samurai_lib_db_conf.inc. * - * @return db conexion hecha + * @return db conexion con la base * * @access private */ function _conectarDB() { - $datos = include 'samurai_lib_db_conf.inc'; - $dsn = $datos['db_type']."://".$datos['db_user'].":".$datos['db_pass']."@".$datos['db_host']."/".$datos['db_name']; - $db = DB::connect($dsn, true); //Quiero que la conexion sea persistente + $datos = include 'include/samurai_lib_db_conf.inc'; + $dsn = $datos['db_type']."://".$datos['db_user'].":".$datos['db_pass']."@".$datos['db_host']."/".$datos['db_name']; + $db = DB::connect($dsn, true); //Quiero que la conexion sea persistente if (DB::isError($db)) { die($db->getMessage()); } return $db; } - //Fin Clase } +// }}} Fin Clase + ?> -- 2.43.0