]> git.llucax.com Git - mecon/samurai.git/commitdiff
Libreria SAMURAI_Perm en Perl casi lista. Falta getObservaciones y verificar que...
authorMartín Marrese <marrese@gmail.com>
Fri, 17 Oct 2003 22:51:36 +0000 (22:51 +0000)
committerMartín Marrese <marrese@gmail.com>
Fri, 17 Oct 2003 22:51:36 +0000 (22:51 +0000)
lib_perl/Perm.epl [new file with mode: 0644]
sistema/www/sistemas/sistemas.php
test/prueba.epl

diff --git a/lib_perl/Perm.epl b/lib_perl/Perm.epl
new file mode 100644 (file)
index 0000000..b36bab6
--- /dev/null
@@ -0,0 +1,170 @@
+[# 
+ vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4 ft=perl:
+ +--------------------------------------------------------------------+
+ |                      Ministerio de Economía                        |
+ |                             SAMURAI                                |
+ +--------------------------------------------------------------------+
+ | This file is part of SAMURAI.                                      |
+ |                                                                    |
+ | SAMURAI is free software; you can redistribute it and/or modify    |
+ | it under the terms of the GNU General Public License as published  |
+ | by the Free Software Foundation; either version 2 of the License,  |
+ | or (at your option) any later version.                             |
+ |                                                                    |
+ | SAMURAI is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
+ | General Public License for more details.                           |
+ |                                                                    |
+ | You should have received a copy of the GNU General Public License  |
+ | along with SAMURAI; if not, write to the Free Software Foundation, |
+ | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
+ +--------------------------------------------------------------------+
+ | Creado: vie oct 17 15:21:05 ART 2003                               |
+ | Autor:  Martin Marrese <mmarre@mecon.gov.ar>                       |
+ +--------------------------------------------------------------------+
+ $Id$
+
+ Libreria para el manejo de permisos para perl.
+#]
+[!
+$CLEANUP{'SAMURAI_Perm'} = 0;
+
+# Simil Constructor.
+#
+# @param  string $login Login del usuario para el cual obtener los permisos.
+# @param  int    $sistema Sistema con el cual se va a trabajar.
+#
+# @return void
+$SAMURAI_Perm->{new} = sub
+{
+    my $sql = "SELECT DISTINCT psu.isd_sistema AS sistema, pps.id_permiso AS permiso FROM samurai.perfil_sist_usuario AS psu, samurai.perm_perfil_sist AS pps WHERE psu.login = ? AND psu.id_perfil = pps.id_perfil AND psu.id_sistema = pps.id_sistema ORDER BY psu.id_sistema";
+    $udat{SAMURAI_Perm_vars}{login} = @_[0];
+    $udat{SAMURAI_Perm_vars}{id_sistema} = @_[1];
+    ##Conexion con la base
+    #TODO Cambiar los parametros de conexion segun corresponda.
+    my $dbh = DBI->connect('dbi:mysql:dbname=samurai;host=bal747f',"intranet","intranet");
+    ##Obtengo los permisos de la base        
+    $re = $dbh->prepare($sql);
+    $re->execute($udat{SAMURAI_Perm_vars}{login});        
+    while ($r = $re->fetchrow_hashref()) {
+        push (@{$permisos{$r->{sistema}}}, $r->{permiso});
+    }        
+    $re->finish();             
+    #Desconexion con la base
+    $dbh->disconnect;          
+    $udat{SAMURAI_Perm_vars}{permisos} = \%permisos; #Se asignan a $udat para que esten disponibles siempre        
+};       
+
+# Set Sistema.
+#
+# @param  int $sistema Sistema.
+#
+# @return void
+$SAMURAI_Perm->{setSistema} = sub
+{
+    $udat{SAMURAI_Perm_vars}{id_sistema} = @_[0];
+};
+
+# Verifica si tiene un permiso.
+# Se puede pasar parametros variables con un identificador de permiso, 
+# por ejemplo: 
+# $ret->{SAMURAI_PERM}->{tiene}(1, 4, 12); 
+#
+# Si tiene algun permiso devuelve true. Si no se pasa ningun parametro 
+# ($perm->tiene()), devuelve true si tiene un permiso (al menos uno) en el 
+# sistema actual.
+#
+# @return bool
+$SAMURAI_Perm->{tiene} = sub
+{
+    if (!scalar(@_)) {         
+        #Devuelvo true si tiene al menos un permiso
+        if (scalar ($udat{SAMURAI_Perm_vars}{permisos}{$udat{SAMURAI_Perm_vars}{id_sistema}})) {
+            return 1;
+        }
+        else {
+            return 0;
+        }
+    }
+    else {
+        foreach $arg (@_) {
+            foreach $perm (@{$udat{SAMURAI_Perm_vars}{permisos}{$udat{SAMURAI_Perm_vars}{id_sistema}}}) {
+                if ($arg == $perm) {
+                    return 1;
+                }
+            }
+        }
+        return 0;
+    }
+};
+
+# Obtiene una lista de permisos. Si se especifica un sistema, obtiene la lista de permisos para ese sistema.                                
+#
+# @param  int $sistema Sistema del cual obtener la lista de permisos.                                                                       
+#
+# @return array
+$SAMURAI_Perm->{getPermisos} = sub
+{
+    if (!scalar(@_)) {
+        return $udat{SAMURAI_Perm_vars}{permisos}{$udat{SAMURAI_Perm_vars}{id_sistema}};
+    }
+    else {
+        return $udat{SAMURAI_Perm_vars}{permisos}{@_[0]};
+    }
+};
+
+# Chequea si un usuario puede acceder o no a una pagina. En caso de no tener
+# permisos automaticamente lo redirige a una pagina de error.
+#
+# @return void
+# TODO Probar que esto este funcionando bien.
+$SAMURAI_Perm->{chequear} = sub
+{
+    if (!$ret->{SAMURAI_Perm}->{tiene} (@_)) {
+        open (ARCHORIG , "/var/www/meconlib/lib/MECON/includes/no_autorizado.html") or  die "POROTO";
+        while (my $linea = <ARCHORIG>) {
+            print $linea
+        }
+        exit;
+    }
+};
+
+# Obtiene las observaciones de un permiso para un sistema.                                                                                  
+#
+# @param  int $perm Obtiene las observaciones de un permiso para un sistema.
+# @param  int $sistema Sistema al cual pertenecen los permisos.                                                                             
+#
+# @return array
+$SAMURAI_Perm->{getObservaciones} = sub
+{
+    $perm = @_[0];
+    if (scalar(@_[1])) {
+        $sistema = @_[1];    
+    }
+    else {
+        $sistema = $udat{SAMURAI_Perm_vars}{id_sistema};
+    }
+    if (!$udat{SAMURAI_Perm_vars}{observaciones}{$sistema}{$perm}) {
+        $udat{SAMURAI_Perm_vars}{observaciones} = '';
+        $sql = 'SELECT ps.observaciones AS observaciones FROM samurai.perm_sist AS ps WHERE ps.id_permiso = ? AND ps.id_sistema = ?';
+        my $dbh = DBI->connect('dbi:mysql:dbname=samurai;host=bal747f',"intranet","intranet");
+        $re = $dbh->prepare($sql);
+        $re->execute($perm, $sistema);        
+        while ($r = $re->fetchrow_hashref()) {
+            push (@{$obser{$sistema}{$perm}}, $r->{observaciones});
+        }        
+        $re->finish();             
+        #Desconexion con la base
+        $dbh->disconnect;          
+        $udat{SAMURAI_Perm_vars}{observaciones}{$sistema}{$perm} = \%obser;        
+        
+        return $obser;
+    }
+};
+!]
+[-
+    $ret = shift;
+    $ret->{SAMURAI_Perm} = $SAMURAI_Perm;
+-]  
+
index 5bcd329634e5a9327c776f18a6d9f7fcb234c9d2..e6f1bb7a0a8e7e26ecb0a1c98b2f90998f69bdf9 100644 (file)
@@ -41,8 +41,8 @@ $SAMURAI_PERM->chequear(SAMURAI_PERM_DEVELOPER);
     $TABLA2 = new MECON_HTML_Tabla ('cellspacing=0');
     $row = array ('<a href="../sel-sistema.php"><img src="/MECON/images/general_ir4" border="0">Seleccionar otro sistema para trabajar</a>', $aHref.'<img src="/MECON/images/general_nuevo.gif" border="0">Ingresar Nuevo Sistema</a>');
     $TABLA2->addRow($row);
     $TABLA2 = new MECON_HTML_Tabla ('cellspacing=0');
     $row = array ('<a href="../sel-sistema.php"><img src="/MECON/images/general_ir4" border="0">Seleccionar otro sistema para trabajar</a>', $aHref.'<img src="/MECON/images/general_nuevo.gif" border="0">Ingresar Nuevo Sistema</a>');
     $TABLA2->addRow($row);
-    $TABLA2->setColAlign(0,'left');
-    $TABLA2->setColAlign(1,'right');
+    $TABLA2->updateColAttributes(0,'align="left"');
+    $TABLA2->updateColAttributes(1,'align="right"');
     
     $TABLA = new MECON_HTML_Tabla ('cellpadding=2');
     $row = array ('Id','Nombre','Modif.','Elim.','Perm.');
     
     $TABLA = new MECON_HTML_Tabla ('cellpadding=2');
     $row = array ('Id','Nombre','Modif.','Elim.','Perm.');
index 506174f4aa60d51b9bf48937da063536985ac05f..1224035f42969e0ec20e4ee51deff81db6623e27 100644 (file)
@@ -1,47 +1,65 @@
+[#
+vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4 ft=perl:
+#]
 [-
     $ret = shift;
 
 [-
     $ret = shift;
 
+    $udat{user} = 'mmarre@mecon';
+
     use Data::Dumper;
 
     use Data::Dumper;
 
-    Execute('./../perl/Samurai/Perm.epl');
+    Execute('./../lib_perl/Perm.epl');
+    
+#define('SAMURAI_PERM', 44);
+#define('SAMURAI_PERM_DEVELOPER', 66);
+#define('SAMURAI_PERM_PERFIL_ALTA', 58);
+#define('SAMURAI_PERM_PERFIL_BAJA', 59);
+#define('SAMURAI_PERM_PERFIL_MODIF', 60);
+#define('SAMURAI_PERM_PERFIL_TIPO', 65);
+#define('SAMURAI_PERM_USUARIO_ALTA', 61);
+#define('SAMURAI_PERM_USUARIO_BAJA', 62);
+#define('SAMURAI_PERM_USUARIO_MODIF', 63
+    
+    print 'Cargo los datos -> Imitando el constructor.<br>';
+   $ret->{SAMURAI_Perm}->{new} ('mmarre@mecon', 666);
 
 
-    $udat{user}='mmarre@mecon';
+    print 'Seteo otro sistema para trabajar<br>'; 
+    $ret->{SAMURAI_Perm}->{setSistema} (44);
 
 
-    $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";
+    print 'Veo si tiene algun permiso en el sistema seleccionado<br>';
+    if ($ret->{SAMURAI_Perm}->{tiene} ()) {
+        print 'Tiene al menos un permiso en el sistema '. $udat{SAMURAI_Perm_vars}{id_sistema}.'<BR>';
     }
     else {
     }
     else {
-        print "NO TIENE TODOS LOS PERMISOS\n";
+        print 'No tiene permisos en el sistema '. $udat{SAMURAI_Perm_vars}{id_sistema}.'<BR>';
     }
 
     }
 
-    print "tieneO\n";
-    if ($ret->{SA_Perm}->{tieneO} (1,2,3,9,3)) {
-        print "TIENE ALGUNOS DE LOS PERMISOS\n";
+    print 'Veo si tiene algun permiso de los pasados por parametro.<br>';
+    if ($ret->{SAMURAI_Perm}->{tiene} (61,602)) {
+        print 'Tiene al menos uno de los permisos en el sistema '. $udat{SAMURAI_Perm_vars}{id_sistema}.'<BR>';
     }
     else {
     }
     else {
-        print "NO TIENE NINGUNO DE  LOS PERMISOS\n";
+        print 'No tiene ninguno de los permisos en el sistema '. $udat{SAMURAI_Perm_vars}{id_sistema}.'<BR>';
     }
     }
+    
+    print 'Obtengo los permisos del sistema en el cual estoy trabajando.<br>';
+    $tmp = $ret->{SAMURAI_Perm}->{getPermisos} ();
+    print Dumper($tmp);
 
 
-    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 '<br>Obtengo los permisos del sistema 61 <br>';
+    $tmp = $ret->{SAMURAI_Perm}->{getPermisos} (61);
+    print Dumper($tmp);
+    print '<br>';
+    
+    print 'Pruebo la funcion chequear<BR>';
+#    $ret->{SAMURAI_Perm}->{chequear} (61);
+    print 'Si aparece esto es porque tenia al menos uno de los permisos que se pasaron como parametro<br>';
 
 
-    print "tieneUn\n";
-    if ($ret->{SA_Perm}->{tieneUn} (4)){
-        print "Tiene el permiso\n";
-    }
-    else {
-        print "No tiene el permiso\n";
-    }
+    print 'Hago un get observaciones<br>';
+#    $tmp = $ret->{SAMURAI_Perm}->{getObservaciones} (66,61);
+#    print Dumper(\%tmp);
+   
+#    print Dumper($udat{SAMURAI_Perm_vars}{observaciones});
+   
+    print '<br><br>FINALE PRESTO CON TUTTI<br>';
 -]
 -]