+++ /dev/null
-[#
- 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;
--]
-