gest366/lib/permissions_check.php

58 lines
2.1 KiB
PHP

<?php
/*
Controllo permessi modulo su utente (se non è is_admin)
*/
if( $module_name == '' ){
$rs = $dbo->fetchArray("SELECT name FROM zz_modules WHERE id='".$html->form('id_module')."'");
$module_name = $rs[0]['name'];
}
//Il modulo "Info" è visibile da tutti
if( $module_name == 'Info' ){
$permessi[$module_name] = 'r';
}
else{
$rs = $dbo->fetchArray("SELECT idanagrafica FROM zz_utenti WHERE idutente='".$_SESSION['idutente']."'");
$user_idanagrafica = $rs[0]['idanagrafica'];
$query = "SELECT *, (SELECT idanagrafica FROM zz_utenti WHERE idutente='".$_SESSION['idutente']."') AS idanagrafica FROM zz_permessi WHERE idgruppo=(SELECT idgruppo FROM zz_utenti WHERE idutente='".$_SESSION['idutente']."') AND idmodule=(SELECT id FROM zz_modules WHERE name='".$module_name."')";
$rs = $dbo->fetchArray($query);
if( sizeof($rs)<=0 ){
//Ultimo tentativo: se non ci sono i permessi ma sono l'amministratore posso comunque leggere il modulo
if( $_SESSION['is_admin']==1 ){
$permessi[$module_name] = 'rw';
}
else{
echo "<div style='clear:both;'></div><br/><br/><br/><br/><br/><p>Non hai i permessi per accedere a questo modulo.</p>\n";
$permessi[$module_name] = '-';
exit;
}
}
else{
if( $rs[0]['permessi']=='-' ){
echo "<div style='clear:both;'></div><br/><br/><br/><br/><br/><p>Non hai i permessi per accedere a questo modulo.</p>\n";
$permessi[$module_name] = '-';
exit;
}
else if( $rs[0]['permessi']=='r' ){
$permessi[$module_name] = 'r';
}
else if( $rs[0]['permessi']=='rw' ){
$permessi[$module_name] = 'rw';
}
}
//Carico i filtri dei WHERE in base al modulo e all'utente loggato
$qp = "SELECT *, (SELECT idanagrafica FROM zz_utenti WHERE idutente='".$_SESSION['idutente']."') AS idanagrafica, (SELECT name FROM zz_modules WHERE id=idmodule) AS nome_modulo FROM zz_gruppi_modules WHERE idgruppo=(SELECT idgruppo FROM zz_utenti WHERE idutente='".$_SESSION['idutente']."')";
$rsp = $dbo->fetchArray($qp);
for( $i=0; $i<sizeof($rsp); $i++ ){
$additional_where[ $rsp[$i]['nome_modulo'] ] = $rsp[$i]['clause'];
}
}
?>