From 4427b3a24ea10ba0d462c15cc889f469d32226bc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Tue, 11 Mar 2003 19:13:23 +0000 Subject: [PATCH] SAMURAI_LIB - Funcion tiene lista. Faltan el resto de las funciones` --- samurai_lib/src/prueba.php | 18 +---- samurai_lib/src/samurai_lib.php | 95 +++++++++++++------------ samurai_lib/src/samurai_lib_db_conf.inc | 8 +++ samurai_lib/src/samurai_lib_sql.inc | 20 +++--- 4 files changed, 72 insertions(+), 69 deletions(-) diff --git a/samurai_lib/src/prueba.php b/samurai_lib/src/prueba.php index 55aa828..d73e29f 100644 --- a/samurai_lib/src/prueba.php +++ b/samurai_lib/src/prueba.php @@ -2,22 +2,10 @@ include 'samurai_lib.php'; -$p = new SA_Perm(); +$permiso = new SA_Perm(1,'mmarre@mecon'); -var_dump ($p); +$martin = $permiso->tiene(1,2,3,4,5,6,7,3); -print "
"; -print "
"; - -$pp = new SA_Perm(28924563); - -var_dump($pp); - -print "
"; -print "
"; - -printf("%s",$pp->nrodoc); - -var_dump($pp->SQL); +var_dump($martin); ?> diff --git a/samurai_lib/src/samurai_lib.php b/samurai_lib/src/samurai_lib.php index cde41ed..c16e62b 100644 --- a/samurai_lib/src/samurai_lib.php +++ b/samurai_lib/src/samurai_lib.php @@ -27,6 +27,7 @@ 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 * * @package SA_Perm * @version $Rev$ @@ -34,26 +35,19 @@ require_once 'DB.php'; */ class SA_Perm extends PEAR { - /** - * Identificacion del usuario. - * - * @var int(11) nrodoc - */ - var $nrodoc; - /** * Login del usuario * * @var string login */ - var $login; + var $login; /** - * Consultas SQL. + * Permisos del usuario en el sistema. * - * @var array SQL + * @var array permisos */ - var $SQL; + var $permisos; /** @@ -68,29 +62,28 @@ class SA_Perm extends PEAR { * * @var $sistema */ - var $sistema + var $sistema; /** - * Constructor. + * Constructor. + * + * El login del usuario lo toma del udat * - * @param int $nrodoc Numero de documento del usuario. - * @param string $login Login del usuario de la forma @ * @param int $sistema Identificacion del sistema (id_sistema) * * @return bool true si esta nrodoc, false en caso contrario * * @access public */ - function SA_Perm($nrodoc = null, $login = null, $sistema = null) + function SA_Perm($sistema, $login) { $creacion = false; //Asumo que va a fallar - if (isset($nrodoc) && isset($sistema) && isset($login)) { - $this->nrodoc = $nrodoc; - $this->sistema = $sistema; - $this->login = $login; - $this->SQL = include 'samurai_lib_sql.inc'; - $this->DB = $this->_SA_conectarDB(); - $creacion = true; + if (isset($sistema)) { + $this->sistema = $sistema; + $this->login = $login; + $this->DB = $this->_conectarDB(); + $this->permisos = $this->_obtenerPermisos(); + $creacion = true; } return $creacion; } @@ -100,51 +93,61 @@ class SA_Perm extends PEAR { * * Compara los permisos que tiene un usuario en relacion a los * pasados como parametro. Devuelve true si cumple con todos los - * permisos, en caso contrario devuelve false + * permisos, en caso contrario devuelve false. Es de parametros + * variables, y siempre necesita al menos UN parametro * - * @param array permisos + * @param array permisos buscados * * @return bool * * @access public */ - function SA_verifPerm () + function tiene() { - $args = func_get_args(); - $result = true; //Asumo que no va a fallar - + $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; + $result = false; //Siempre se debe pasar al menos un permiso a buscar } else { - //Obtengo los perfiles de un usuario {{{ - $sql = $this->SQL['obtener_perfil_usuario']; - $re = $this->DB->prepare($sql); - $re = $this->DB->execute($this->login, $this->sistema); - // }}} - - // Por cada perfil, busco sus permisos y los comparo con los pasados - // por el argumento {{{ - while ($res = $re->fetchRow(DB_FETCHMODE_ASSOC)) { - $sql = $this->SQL['obtener_permisos_perfil']; - $re = $this->DB->prepare($sql); - $re = $this->DB->execute($res['id_perfil'], $this->sistema); - //TODO: Verificar que este tomando bien los datos de la base + if (count(array_diff($args, $this->permisos))){ + $result = false; } - /// }}} } + return $result; } + //##TODO##: Crear la funcion tieneO simil tiene solo que chequea por or + + /** + * Obtiene los permisos de un usuario de la base + * + * @return array con los permisos del usuario + * + * @access private + */ + function _obtenerPermisos() + { + $consultas = 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 + die ($this->permisos->getMessage()); + } + return $result; + } + /** * Conecta el objeto a la base de datos, segun lo especificado - * en samurai_lib_dc_conf.inc. + * en samurai_lib_db_conf.inc. * * @return db conexion hecha * * @access private */ - function _SA_conectarDB () + 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']; diff --git a/samurai_lib/src/samurai_lib_db_conf.inc b/samurai_lib/src/samurai_lib_db_conf.inc index 010be67..10cbf6f 100644 --- a/samurai_lib/src/samurai_lib_db_conf.inc +++ b/samurai_lib/src/samurai_lib_db_conf.inc @@ -1,4 +1,12 @@ 'mysql' , 'db_user' => 'intranet' , diff --git a/samurai_lib/src/samurai_lib_sql.inc b/samurai_lib/src/samurai_lib_sql.inc index 3057dea..87b813a 100644 --- a/samurai_lib/src/samurai_lib_sql.inc +++ b/samurai_lib/src/samurai_lib_sql.inc @@ -1,12 +1,16 @@ 'SELECT psu.login AS login, psu.id_perfil AS id_perfil, psu.id_sistema AS id_sistema - FROM perfil_sist_usuario AS psu - WHERE login = ? AND id_sistema = ? - ORDER BY id_perfil DESC', - 'obtener_permisos_perfil' => 'SELECT e.desc_permiso AS desc_permiso - FROM perm_perfil_sist AS pps, permiso AS e - WHERE pps.id_perfil = ? AND pps.id_sistema = ? AND pps.id_permiso = e.id_permiso - ORDER BY e.id_permiso DESC' + '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' ); ?> -- 2.43.0