]> git.llucax.com Git - mecon/meconlib.git/commitdiff
Nombre de la Libreria: samurai_lib
authorMartín Marrese <marrese@gmail.com>
Wed, 12 Mar 2003 14:24:50 +0000 (14:24 +0000)
committerMartín Marrese <marrese@gmail.com>
Wed, 12 Mar 2003 14:24:50 +0000 (14:24 +0000)
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

samurai_lib/src/include/samurai_lib_db_conf.inc [moved from samurai_lib/src/samurai_lib_db_conf.inc with 100% similarity]
samurai_lib/src/include/samurai_lib_sql.inc [moved from samurai_lib/src/samurai_lib_sql.inc with 94% similarity]
samurai_lib/src/prueba.php
samurai_lib/src/samurai_lib.php

similarity index 94%
rename from samurai_lib/src/samurai_lib_sql.inc
rename to samurai_lib/src/include/samurai_lib_sql.inc
index 87b813a472752158dd4b4bade8a9a41104a54089..9fd63bb7a69a39c9b1b95442353529c8462fbd1c 100644 (file)
@@ -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'                      
     );
 ?>
index d73e29fd87efbe5f163495724006c9502176c1c2..249f6ccce9d66d103ea5b3b47a1452b83ec0ab59 100644 (file)
@@ -2,10 +2,31 @@
 
 include 'samurai_lib.php';
 
-$permiso = new SA_Perm(1,'mmarre@mecon');
+print "Prueba Objeto SA_Perm de samurai_lib<BR>";
 
-$martin = $permiso->tiene(1,2,3,4,5,6,7,3);
+$permiso = new SA_Perm(1,'mdegan@mecon');
 
-var_dump($martin);
+print "<BR>Probando la funcion tiene -> ";
+if ($permiso->tiene(1,2,3,4,5,6,7,3)) {
+    print "Tiene todos los permisos<BR>";
+}
+else {
+    print "No tiene todos los permisos<BR>";
+}
 
+print "<BR>Probando la funcion tieneO -> ";
+if ($permiso->tieneO(1,2,3,4,5,7,3)) {
+    print "Tiene alguno de los permisos<BR>";
+}
+else {
+    print "No tiene permiso alguno<BR>";
+}
+
+print "<BR>Probando la funcion tieneUn -> ";
+if ($permiso->tieneO(2)) {
+    print "Tiene EL permiso<BR>";
+}
+else {
+    print "No tiene EL permiso<BR>";
+}
 ?>
index c16e62be525d5c698bcde7fc8b6ae7da789e8885..4411d237c08e4d5254e43df5e036a2d576931971 100644 (file)
@@ -27,12 +27,17 @@ require_once 'DB.php';
  *
  * Libreria para le manejo de los permisos. Basada en la lase HE_Perm de 
  * Leandro Lucarella <llucar@mecon.gov.ar>
- * 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
+
 ?>