]> git.llucax.com Git - mecon/meconlib.git/commitdiff
SAMURAI_LIB - Funcion tiene lista. Faltan el resto de las funciones`
authorMartín Marrese <marrese@gmail.com>
Tue, 11 Mar 2003 19:13:23 +0000 (19:13 +0000)
committerMartín Marrese <marrese@gmail.com>
Tue, 11 Mar 2003 19:13:23 +0000 (19:13 +0000)
samurai_lib/src/prueba.php
samurai_lib/src/samurai_lib.php
samurai_lib/src/samurai_lib_db_conf.inc
samurai_lib/src/samurai_lib_sql.inc

index 55aa828db3b3ece20df53bec7a36ac461a31a243..d73e29fd87efbe5f163495724006c9502176c1c2 100644 (file)
@@ -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 "<br>";
-print "<BR>";
-
-$pp = new SA_Perm(28924563);
-
-var_dump($pp);
-
-print "<BR>";
-print "<BR>";
-
-printf("%s",$pp->nrodoc);
-
-var_dump($pp->SQL);
+var_dump($martin);
 
 ?>
index cde41ed64825cb0889623a663a8a4135b68b361c..c16e62be525d5c698bcde7fc8b6ae7da789e8885 100644 (file)
@@ -27,6 +27,7 @@ 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
  *
  * @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 <usuario>@<organismo>
      * @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'];     
index 010be6798ffca3e33ddb1c2c2ec630d85612539f..10cbf6f1dfa29fe216622842137700e2b2934a13 100644 (file)
@@ -1,4 +1,12 @@
 <?php 
+    
+    // $Id$
+    //
+    // $URL$
+    // $Rev$
+    // $Date$
+    // $Author$
+   
     return array (
     'db_type' => 'mysql'    ,
     'db_user' => 'intranet' ,
index 3057deacbee36cff5d50af2f4a22f422be978f64..87b813a472752158dd4b4bade8a9a41104a54089 100644 (file)
@@ -1,12 +1,16 @@
 <?php
+    
+    // $Id$
+    //
+    // $URL$
+    // $Rev$
+    // $Date$
+    // $Author$
+
+    
     return array(
-    'obtener_perfil_usuario'  => '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'
     );
 ?>