X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/0cf56477ad378a18f1d9daad478a4e14427b6b3b..ae54c437912b1b019bebb0ea137ced664d8dc299:/lib_perl/Perm.epl?ds=inline diff --git a/lib_perl/Perm.epl b/lib_perl/Perm.epl index b36bab6..fb8810f 100644 --- a/lib_perl/Perm.epl +++ b/lib_perl/Perm.epl @@ -30,6 +30,23 @@ [! $CLEANUP{'SAMURAI_Perm'} = 0; +use Data::Dumper; + +# Parser para el ini de configuracion +# +# @return hash +$SAMURAI_Perm->{parse_ini} = sub +{ + use Config::IniFiles; + my $cfg = new Config::IniFiles( -file => + "/var/www/sistemas/samurai/lib_perl/consultasDB.ini" ); + $dsn->{dsn} = $cfg->val('conf', 'dsn'); + $dsn->{user} = $cfg->val('conf', 'user'); + $dsn->{password} = $cfg->val('conf', 'password'); + return $dsn; +}; + + # Simil Constructor. # # @param string $login Login del usuario para el cual obtener los permisos. @@ -38,12 +55,12 @@ $CLEANUP{'SAMURAI_Perm'} = 0; # @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"; + my $sql = "SELECT DISTINCT psu.id_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"); + $dns = $ret->{SAMURAI_Perm}->{parse_ini} (); + my $dbh = DBI->connect($dsn->{dsn}, $dsn->{user}, $dsn->{password}); ##Obtengo los permisos de la base $re = $dbh->prepare($sql); $re->execute($udat{SAMURAI_Perm_vars}{login}); @@ -118,7 +135,6 @@ $SAMURAI_Perm->{getPermisos} = sub # 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} (@_)) { @@ -148,7 +164,9 @@ $SAMURAI_Perm->{getObservaciones} = sub 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"); + ##Conexion con la base + $dns = $ret->{SAMURAI_Perm}->{parse_ini} (); + my $dbh = DBI->connect($dsn->{dsn}, $dsn->{user}, $dsn->{password}); $re = $dbh->prepare($sql); $re->execute($perm, $sistema); while ($r = $re->fetchrow_hashref()) { @@ -157,11 +175,50 @@ $SAMURAI_Perm->{getObservaciones} = sub $re->finish(); #Desconexion con la base $dbh->disconnect; - $udat{SAMURAI_Perm_vars}{observaciones}{$sistema}{$perm} = \%obser; - - return $obser; + $udat{SAMURAI_Perm_vars}{observaciones} = \%obser; + return $udat{SAMURAI_Perm_vars}{observaciones}; } }; + +# MANAZAR: Funcion para dar un perfil a un usuario en un sistema +# +# @return void +$SAMURAI_Perm->{asignarPerfil} = sub +{ + $id_perfil = @_[0]; + my $login=$udat{SAMURAI_Perm_vars}{login}; + my $id_sistema=$udat{SAMURAI_Perm_vars}{id_sistema}; + my $resp=$udat{'user'}; + my $sql = "REPLACE INTO perfil_sist_usuario (login,id_perfil,id_sistema,responsable) VALUES ('$login',$id_perfil,$id_sistema,'$resp')"; + ##Conexion con la base + $dns = $ret->{SAMURAI_Perm}->{parse_ini} (); + my $dbh = DBI->connect($dsn->{dsn}, $dsn->{user}, $dsn->{password}); + my $result=$dbh->do($sql); + #Desconexion con la base + $dbh->disconnect; +}; + +# MANAZAR: Funcion para quitar perfil a un usuario en un sistema +# +# @return void +$SAMURAI_Perm->{quitarPerfil} = sub +{ + $id_perfil = @_[0]; + my $login=$udat{SAMURAI_Perm_vars}{login}; + my $id_sistema=$udat{SAMURAI_Perm_vars}{id_sistema}; + my $resp=$udat{'user'}; + my $sql = "DELETE FROM perfil_sist_usuario where (login='$login') AND (id_perfil=$id_perfil) AND (id_sistema=$id_sistema)"; + ##Conexion con la base + $dns = $ret->{SAMURAI_Perm}->{parse_ini} (); + my $dbh = DBI->connect($dsn->{dsn}, $dsn->{user}, $dsn->{password}); + ##Conexion con la base + my $result=$dbh->do($sql); + #Desconexion con la base + $dbh->disconnect; +}; + + + !] [- $ret = shift;