]> git.llucax.com Git - mecon/meconlib.git/commitdiff
Libreria de utilizacion interna de los sistemas para la verificacion de permisos
authorMartín Marrese <marrese@gmail.com>
Mon, 10 Mar 2003 19:45:06 +0000 (19:45 +0000)
committerMartín Marrese <marrese@gmail.com>
Mon, 10 Mar 2003 19:45:06 +0000 (19:45 +0000)
samurai_lib/src/prueba.php [new file with mode: 0644]
samurai_lib/src/samurai_lib.php [new file with mode: 0644]
samurai_lib/src/samurai_lib_db_conf.inc [new file with mode: 0644]
samurai_lib/src/samurai_lib_sql.inc [new file with mode: 0644]

diff --git a/samurai_lib/src/prueba.php b/samurai_lib/src/prueba.php
new file mode 100644 (file)
index 0000000..55aa828
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+
+include 'samurai_lib.php';
+
+$p = new SA_Perm();
+
+var_dump ($p);
+
+print "<br>";
+print "<BR>";
+
+$pp = new SA_Perm(28924563);
+
+var_dump($pp);
+
+print "<BR>";
+print "<BR>";
+
+printf("%s",$pp->nrodoc);
+
+var_dump($pp->SQL);
+
+?>
diff --git a/samurai_lib/src/samurai_lib.php b/samurai_lib/src/samurai_lib.php
new file mode 100644 (file)
index 0000000..cde41ed
--- /dev/null
@@ -0,0 +1,160 @@
+<?php
+// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
+// +--------------------------------------------------------------------+
+// |                    SAMURAI  - Samurai_Lib                          |
+// +--------------------------------------------------------------------+
+// |   Sistema de Administracion y Matenimiento de Usuarios Relativo A  |
+// |                             Intranet                               |
+// |                      Ministerio de Economía                        |
+// +--------------------------------------------------------------------+
+// | Creado: lun mar 10 ART 2003                                        |
+// | Autor:  Martin Marrese <mmarre@mecon.gov.ar>                       |
+// +--------------------------------------------------------------------+
+//
+// $Id$
+//
+// $URL$
+// $Rev$
+// $Date$
+// $Author$
+//
+
+require_once 'PEAR.php';
+require_once 'DB.php';
+
+/**
+ * Manejo de permisos.
+ *
+ * Libreria para le manejo de los permisos. Basada en la lase HE_Perm de 
+ * Leandro Lucarella <llucar@mecon.gov.ar>
+ *
+ * @package SA_Perm
+ * @version $Rev$
+ * @author  $Author$
+ */
+class SA_Perm extends PEAR {
+    
+    /**
+     * Identificacion del usuario.
+     *
+     * @var int(11) nrodoc
+     */     
+    var $nrodoc;
+
+    /**
+     * Login del usuario
+     *
+     * @var string login
+     */
+     var $login;
+    
+    /**
+     * Consultas SQL.
+     *
+     * @var array  SQL
+     */     
+    var $SQL;
+
+
+    /**
+     * Conexion a la Base de Datos .
+     *
+     * @var $DB
+     */     
+    var $DB;
+
+    /**
+     * Identificacion del sistema
+     *
+     * @var $sistema
+     */
+     var $sistema
+    
+    /**
+     * Constructor.
+     *
+     * @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)
+    {        
+       $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;
+       }
+       return $creacion;
+    }
+
+    /**
+     * 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 todos los
+     * permisos, en caso contrario devuelve false
+     *
+     * @param array permisos
+     *
+     * @return bool
+     *
+     * @access public
+     */
+    function SA_verifPerm () 
+    {
+        $args = func_get_args();
+       $result = true; //Asumo que no va a fallar
+
+       if (!count($args)) {
+           $result = false;
+       }
+       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
+           }
+           /// }}}
+       }
+       return $result; 
+    }
+
+    /**
+     * Conecta el objeto a la base de datos, segun lo especificado
+     * en samurai_lib_dc_conf.inc.
+     *
+     * @return db conexion hecha
+     * 
+     * @access private
+     */    
+    function _SA_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
+       if (DB::isError($db)) {
+           die($db->getMessage());
+       }
+       return $db;
+    }
+
+    //Fin Clase
+}
+?>
diff --git a/samurai_lib/src/samurai_lib_db_conf.inc b/samurai_lib/src/samurai_lib_db_conf.inc
new file mode 100644 (file)
index 0000000..010be67
--- /dev/null
@@ -0,0 +1,9 @@
+<?php 
+    return array (
+    'db_type' => 'mysql'    ,
+    'db_user' => 'intranet' ,
+    'db_pass' => 'intranet' ,
+    'db_host' => 'localhost', 
+    'db_name' => 'samurai'
+    )
+?>
diff --git a/samurai_lib/src/samurai_lib_sql.inc b/samurai_lib/src/samurai_lib_sql.inc
new file mode 100644 (file)
index 0000000..3057dea
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+    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'
+    );
+?>