]> git.llucax.com Git - mecon/meconlib.git/commitdiff
- Ambas librerias finalizadas, tanto en php como en perl........la primer version
authorMartín Marrese <marrese@gmail.com>
Thu, 13 Mar 2003 19:14:51 +0000 (19:14 +0000)
committerMartín Marrese <marrese@gmail.com>
Thu, 13 Mar 2003 19:14:51 +0000 (19:14 +0000)
  Modificaciones futuras seran aceptadas......

samurai_lib/doc/samurai_lib_PHP.rtf [new file with mode: 0644]
samurai_lib/perl/Samurai/Perm.epl [new file with mode: 0644]
samurai_lib/perl/Samurai/Perm/db_Conf.epl [new file with mode: 0644]
samurai_lib/perl/Samurai/Perm/sql_Conf.epl [new file with mode: 0644]
samurai_lib/perl/Samurai/base.epl [new file with mode: 0644]
samurai_lib/php/Samurai/Perm.php
samurai_lib/php/Samurai/Perm/sql_Conf.php
samurai_lib/test/base.epl [new file with mode: 0644]
samurai_lib/test/prueba.epl [new file with mode: 0644]
samurai_lib/test/prueba.php

diff --git a/samurai_lib/doc/samurai_lib_PHP.rtf b/samurai_lib/doc/samurai_lib_PHP.rtf
new file mode 100644 (file)
index 0000000..5be6fcb
--- /dev/null
@@ -0,0 +1,77 @@
+{\rtf0\ansi\r
+{\fonttbl\r
+{\f0\fswiss Helvetica;}\r
+{\f1\fmodern Courier;}}\r
+{\info\r
+{\creatim \yr2003\mo3\dy12\hr14\min49\sec5}\r
+{\revtim \yr2003\mo3\dy12\hr15\min12\sec17}\r
+}\r
+\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\r
+\ftnbj\aenddoc\ftnrstcont\aftnrstcont\ftnnar\aftnnrlc\r
+\sectd\r
+\f1\fs20\b SAMURAI - samurai_lib - PHP\par\r
+para ser usada en sistemas hechos en PHP\par\r
+\par\r
+\ul Funcionamiento\par\r
+Objeto:\b0\ul0  \b SA_Perm\par\r
+\ul Variables de Instancia:\par\r
+\ul0   - login   \par\r
+\b0     Contiene el login del usuario que se obtiene de $udat.\par\r
+\b   - sistema \par\r
+   \b0  Contiene el identificador numerico del sistema.\par\r
+\b   - permisos\par\r
+ \b0    Array con todos los permisos del usuario en el sistema dado. \r
+\par\r
+    Es "invisible" a los demas.\par\r
+\b   - DB      \par\r
+  \b0   Objeto que guarda la conexion con la base de datos. Es \r
+"invisible"\par\r
+    a los demas.\par\r
+\b\ul Metodos de Instancia:\par\r
+\ul0   - SA_Perm \par\r
+    \b0 Constructor. Recive como parametro el identificador numerico del\r
+\par\r
+    sistema y el login del usuario (del tipo <usuario>@<organismo>)\par\r
+\b   - tiene \par\r
+    \b0 Funcion que chequea que el usuario tenga todos los permisos que \r
+se\par\r
+    pasaron como parametro. Devuelve true si cumple con la condicion, \r
+\par\r
+    false en cualquier otro caso.\par\r
+\b   - tieneO \par\r
+    \b0 Funcion que chequea que el usuario tenga alguno de los permisos \r
+que\par\r
+    se pasaron como parametro. Devuelve true si cumple con la condicion,\r
+\par\r
+    false en cualquier otro caso.\par\r
+\b   - tieneODevol\par\r
+    \b0 Funcion que chequea que el usuario tenga alguno de los permisos \r
+que\par\r
+    se pasaron como parametro. Devuelve un array con aquellos permisos\r
+\par\r
+    que se pararon por parametro y el usuario tiene.\par\r
+\b   - tieneUn\par\r
+   \b0  Funcion que chequea que el usuario tenga el permiso que se pasa \r
+por \par\r
+    por parametro.\par\r
+\b   - _obtenerPermisos\par\r
+   \b0  Funcion de uso interno que consulta a la base y obtiene todos \r
+los\par\r
+    permisos del usuario en el sistema que se paso como parametro.\par\r
+\b   - _conectarDB\par\r
+  \b0   Funcion que crea la conexion a la base de datos. Es de uso \r
+interno.\par\r
+\par\r
+\par\r
+-------------------------------------\par\r
+Autores  : Martin Marrese\par\r
+-------------------------------------\par\r
+Fecha                    : 12/03/2003\par\r
+Fecha Ultima Modificacion: 12/03/2003\par\r
+-------------------------------------             \par\r
+$Id$\par\r
+$Author$\par\r
+$Date$\par\r
+$Url$\par\r
+$Rev$\par\r
+}\r
diff --git a/samurai_lib/perl/Samurai/Perm.epl b/samurai_lib/perl/Samurai/Perm.epl
new file mode 100644 (file)
index 0000000..43e19ed
--- /dev/null
@@ -0,0 +1,148 @@
+[#
+  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: $Date$                                                     |
+  | Autor:  Martin Marrese <mmarre@mecon.gov.ar>                       |
+  +--------------------------------------------------------------------+
+   
+   $Id$
+    
+    $URL$
+    $Rev$
+    $Date$
+    $Author$                     
+#]
+[!
+    $CLEANUP{'SA_Perm'} = 0;
+    ###CONSTRUCTOR 
+    ## in: sistema -> identificador numerico del sistema
+    ##     login se obtiene automaticamente en $udat{user}
+    ##
+    ## out: bool ok
+    $SA_Perm->{SA_Perm} = sub
+    {
+        
+        $sql = "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";               
+        
+        $udat{SA_Perm_Id_Sistema} = @_[0];
+        $result  = true; #asumo que no va a fallar
+        
+        ##Conexion con la base
+        $dbh = DBI->connect('dbi:mysql:dbname=samurai;host=localhost',"intranet","intranet");
+        
+        ##Obtengo los permisos de la base        
+        $re = $dbh->prepare($sql);
+        $re->execute($udat{SA_Perm_Id_Sistema}, $udat{user});        
+        while ($r = $re->fetchrow_hashref()) {
+            push (@tmp, $r->{id_permiso});
+        }        
+        $re->finish();             
+        
+        #Desconexion con la base
+        $dbh->disconnect;          
+        $udat{SA_Permisos} = \@tmp;#Se asignan a $udat para que esten disponibles siempre        
+        
+        return $result;
+    };       
+
+    ###TIENE
+    ## Verifica que el usuario tenga todos los permisos que se pasan como
+    ## parametro.
+    ## in: permisos a buscar
+    ##
+    ## out: int 1 -> ok, 0 -> nok
+    $SA_Perm->{tiene} = sub
+    {
+        $result = 1;   #asumo que no va a fallar
+        if (!scalar(@_)) {
+            $result = 0; #Siempre debe haber como minimo un permiso a comparar
+        }
+        else {
+            @rr = $ret->{SA_Perm}->{tieneODevol} (@_);
+            if (scalar(@_) != scalar(@rr)) {
+                $result = 0;
+            }
+        }
+        return $result;
+    };
+
+    ###TIENEO
+    ## Verifica que el usuario tenga alguno de  los permisos que se pasan como
+    ## parametro.
+    ## in: permisos a buscar
+    ##
+    ## out: int 1 -> ok, 0 -> nok
+    $SA_Perm->{tieneO} = sub
+    {
+        $result = 1;   #asumo que no va a fallar
+        if (!scalar(@_)) {
+            $result = 0; #Siempre debe haber como minimo un permiso a comparar
+        }
+        else {
+            @rr = $ret->{SA_Perm}->{tieneODevol} (@_);            
+            if (!scalar(@rr)) {
+                $result = 0;
+            }
+        }
+        return $result;
+    };
+
+    ###TIENEUN
+    ## Verifica que el usuario tenga un permiso que se pasa como
+    ## parametro.
+    ## in: permiso a buscar
+    ##
+    ## out: int 1 -> ok, 0 -> nok
+    $SA_Perm->{tieneUn} = sub
+    {
+        $result = 1;   #asumo que no va a fallar
+        if (!scalar(@_)) {
+            $result = 0; #Siempre debe haber un permiso a comparar
+        }
+        else {
+            @rr = $ret->{SA_Perm}->{tieneODevol} (@_);            
+            if (!scalar(@rr)) {
+                $result = 0;
+            }
+        }
+        return $result;
+    };
+
+
+
+    ###TIENEODEVOL
+    ## Compara el contenido de dos arrays y devuelve un array con
+    ## aquellos datos que se repiten en ambos.
+    ## in: array permisos a buscar
+    ##
+    ## out: array con coincidencias
+    $SA_Perm->{tieneODevol} = sub 
+    {
+        @result = ();
+        if (!scalar(@_)) {
+            @result[0] = "ERROR"; #Siempre se debe pasar al menos un permiso
+        }    
+        else {
+            foreach $arg (@_) {
+                foreach $perm (@{$udat{SA_Permisos}}) {
+                    if ($arg == $perm) {
+                        push (@result, $arg);
+                        last;
+                    }
+                }
+            }
+        }
+        return @result;
+    };
+!]
+[-
+    $ret = shift;
+    $ret->{SA_Perm} = $SA_Perm;
+-]  
+        
diff --git a/samurai_lib/perl/Samurai/Perm/db_Conf.epl b/samurai_lib/perl/Samurai/Perm/db_Conf.epl
new file mode 100644 (file)
index 0000000..610c2de
--- /dev/null
@@ -0,0 +1,24 @@
+[#
+    $Id$
+    
+    $URL$
+    $Rev$
+    $Date$
+    $Author$
+#]
+
+[!
+    $CLEANUP{'db_conf'} = 0;
+    $db_conf =  {   
+                    'db_type' => 'mysql'    ,
+                    'db_user' => 'intranet' ,
+                    'db_pass' => 'intranet' ,
+                    'db_host' => 'localhost',
+                    'db_name' => 'samurai'        
+                };
+!]            
+[-
+    $ret = shift;
+    $ret->{SA_Perm}->{db_conf} = $db_conf;
+-]
+            
diff --git a/samurai_lib/perl/Samurai/Perm/sql_Conf.epl b/samurai_lib/perl/Samurai/Perm/sql_Conf.epl
new file mode 100644 (file)
index 0000000..01ec471
--- /dev/null
@@ -0,0 +1,22 @@
+[#
+    $Id$
+   
+    $URL$
+    $Rev$
+    $Date$
+    $Author$    
+#]
+
+[!
+    $CLEANUP{'sql_Conf'} = 0;
+    $sql_Conf = {
+            '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'
+    };
+!]
+[-
+    $ret = shift;
+    $ret->{SA_Perm}->{sql_Conf} = $sql_Conf;
+-]
+
diff --git a/samurai_lib/perl/Samurai/base.epl b/samurai_lib/perl/Samurai/base.epl
new file mode 100644 (file)
index 0000000..5225c21
--- /dev/null
@@ -0,0 +1 @@
+[- Execute('*') -]
index c122317d181196ed46bac34e1b268cd9a97124cd..0976f127a3248f0426f56eb2ad0a8d3eb4ff116f 100644 (file)
@@ -117,7 +117,7 @@ class SA_Perm extends PEAR {
         return $result;        
     }
 
-     /**
+    /**
      * Verifica los permisos de un usuario
      * 
      * Compara los permisos que tiene un usuario en relacion a los 
@@ -146,7 +146,35 @@ class SA_Perm extends PEAR {
         return $result;
     }
 
-     /**
+    /**
+     * Verifica los permisos de un usuario
+     * 
+     * Compara los permisos que tiene un usuario en relacion a los 
+     * pasados como parametro. Devuelve un array con aquellos permisos que
+     * el usuario tiene. Funciona similar a tieneO solo que devuelve un array.
+     * Es de parametros variables, y siempre necesita al menos UN parametro
+     *
+     * @param array $permisos Permisos que se buscan
+     *
+     * @return array Permisos que tiene el usuario pasados por parametro, o 'ERROR' en caso contrario
+     *
+     * @access public
+     */
+    function tieneODevol () 
+    {
+        $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento
+        $result = array();
+
+        if (!count($args)) {
+           $result['0'] = 'ERROR'; //Siempre se debe pasar al menos un permiso a buscar
+        }
+        else {
+            $result = array_intersect($args, $this->permisos);
+        }       
+        return $result;
+    }   
+
+    /**
      * Verifica los permisos de un usuario
      * 
      * Compara un permiso pasado por parametro con los que tiene el usuario 
index 9fd63bb7a69a39c9b1b95442353529c8462fbd1c..dac56757c0f44a07fa825ad7fe2e1ff7f8031986 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'                     
     );
 ?>
diff --git a/samurai_lib/test/base.epl b/samurai_lib/test/base.epl
new file mode 100644 (file)
index 0000000..5225c21
--- /dev/null
@@ -0,0 +1 @@
+[- Execute('*') -]
diff --git a/samurai_lib/test/prueba.epl b/samurai_lib/test/prueba.epl
new file mode 100644 (file)
index 0000000..506174f
--- /dev/null
@@ -0,0 +1,47 @@
+[-
+    $ret = shift;
+
+    use Data::Dumper;
+
+    Execute('./../perl/Samurai/Perm.epl');
+
+    $udat{user}='mmarre@mecon';
+
+    $ok = $ret->{SA_Perm}->{SA_Perm} (1);
+    
+    print "Set de Prueba:\n";
+    print "  Permisos     : 1,2,3,9,3\n";
+    print "  Permiso unico: 4\n";
+    print "  Usuario      : $udat{user}\n";
+
+    print "tiene\n";
+    if ($ret->{SA_Perm}->{tiene} (1,2,3,9,3)) {
+        print "TIENE TODOS LOS PERMISOS\n";
+    }
+    else {
+        print "NO TIENE TODOS LOS PERMISOS\n";
+    }
+
+    print "tieneO\n";
+    if ($ret->{SA_Perm}->{tieneO} (1,2,3,9,3)) {
+        print "TIENE ALGUNOS DE LOS PERMISOS\n";
+    }
+    else {
+        print "NO TIENE NINGUNO DE  LOS PERMISOS\n";
+    }
+
+    print "tieneODevol\n";
+    @tieneODevol = $ret->{SA_Perm}->{tieneODevol} (1,2,3,9,3);
+    print "Tiene los siguientes Permisos: \n";
+    foreach $m (@tieneODevol) {
+        print "$m\n";
+    }    
+
+    print "tieneUn\n";
+    if ($ret->{SA_Perm}->{tieneUn} (4)){
+        print "Tiene el permiso\n";
+    }
+    else {
+        print "No tiene el permiso\n";
+    }
+-]
index e9993b60f369dd67122a3a2750b5bd85db412a63..c72bed824f0ae25c9530a4c0bf06ce4bb36891dc 100644 (file)
@@ -7,7 +7,7 @@ print "Prueba Objeto SA_Perm de samurai_lib<BR>";
 $permiso = new SA_Perm(1,'mdegan@mecon');
 
 print "<BR>Probando la funcion tiene -> ";
-if ($permiso->tiene(1,2,3,4,5,6,7,3)) {
+if ($permiso->tiene(1,2)) {
     print "Tiene todos los permisos<BR>";
 }
 else {
@@ -29,4 +29,16 @@ if ($permiso->tieneO(2)) {
 else {
     print "No tiene EL permiso<BR>";
 }
+
+
+print "<BR>Probando la funcion tieneODevol -> ";
+$rr = $permiso->tieneODevol(1,4,3,5,3,6,7,3);
+
+print "Tiene los siguientes permisos<BR>";
+foreach ($rr as $r) {
+    print "$r<BR>";
+}
+
+
+
 ?>