Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
222 righe
12 KiB
222 righe
12 KiB
<? |
|
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php"; |
|
include_once($configPath); |
|
if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice)) { |
|
if (isset($_GET["draw"])) { |
|
|
|
$return = array(); |
|
$return["draw"] = (int)$_GET["draw"]; |
|
$return["recordsTotal"] = (int)0; |
|
$return["recordsFiltered"] = (int)0; |
|
$bind = array(); |
|
$gerarchia_massima = 100; |
|
$certificabili = false; |
|
if (isset($_SESSION["ente"])) { |
|
$certificabili = $_SESSION["ente"]->certificazioneManualeUtenti(); |
|
} |
|
|
|
$sql = "SELECT b_utenti.nome, b_utenti.cognome, b_utenti.email, b_utenti.codice, b_utenti.ruolo, b_utenti.telefono, b_utenti.cellulare, |
|
b_utenti.certificato, b_utenti.twoFactor_token, |
|
GROUP_CONCAT(r_collaborazioni.codice) AS codici_collaborazioni, b_utenti.attivo |
|
FROM b_utenti |
|
LEFT JOIN r_collaborazioni ON b_utenti.codice = r_collaborazioni.codice_utente |
|
LEFT JOIN b_enti ON r_collaborazioni.codice_ente = b_enti.codice "; |
|
if (!isset($_SESSION["ente"])) { |
|
$gerarchia_minima = 0; |
|
$sql .= "WHERE "; |
|
} else if ($_SESSION["utente"]->fromHere()) { |
|
$gerarchia_minima = 9; |
|
$bind[":codice"] = $_SESSION["ente"]->codice; |
|
$sql .= "WHERE (b_enti.codice = :codice OR b_enti.sua = :codice) AND "; |
|
} else { |
|
$gerarchia_minima = 9; |
|
$bind[":codice"] = $_SESSION["utente"]->codice_ente; |
|
$sql .= "WHERE (b_enti.codice = :codice) AND "; |
|
} |
|
if (isset($_SESSION["ente"])) { |
|
$sql .= " r_collaborazioni.monitoraggio = 'N' AND "; |
|
} |
|
$i = 0; |
|
$ruoli = utente::ruoli(); |
|
$where = []; |
|
foreach($ruoli AS $id => $ruolo) { |
|
$i++; |
|
if ($ruolo["gerarchia"] > $gerarchia_minima && $ruolo["gerarchia"] < $gerarchia_massima) { |
|
$bind[":ruolo{$i}"] = $id; |
|
$where[] = " b_utenti.ruolo = :ruolo{$i} "; |
|
} |
|
} |
|
if (count($where) > 0) { |
|
$sql .= "(" . implode(" OR ",$where) . ")"; |
|
} |
|
$ris_utenti = $pdo->go($sql." GROUP BY b_utenti.codice",$bind); |
|
if ($ris_utenti->rowCount() > 0) { |
|
|
|
$return["recordsTotal"] = (int)$ris_utenti->rowCount(); |
|
$filterApplied = false; |
|
if (!empty($_GET["search"]["value"])) { |
|
$filterApplied = true; |
|
$sql .= " AND ( "; |
|
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.cognome"); |
|
$sql .= "(" . $suddivisione["sql"] . ") "; |
|
$bind = array_merge($bind,$suddivisione["bind"]); |
|
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.nome"); |
|
$sql .= "OR (" . $suddivisione["sql"] . ") "; |
|
$bind = array_merge($bind,$suddivisione["bind"]); |
|
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.email"); |
|
$sql .= "OR (" . $suddivisione["sql"] . ") "; |
|
$bind = array_merge($bind,$suddivisione["bind"]); |
|
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_utenti.cf"); |
|
$sql .= "OR (" . $suddivisione["sql"] . ") "; |
|
$bind = array_merge($bind,$suddivisione["bind"]); |
|
if (empty($_SESSION["ente"])) { |
|
$suddivisione = suddivisione_pdo($_GET["search"]["value"],"b_enti.denominazione"); |
|
$sql .= "OR (" . $suddivisione["sql"] . ") "; |
|
$bind = array_merge($bind,$suddivisione["bind"]); |
|
} |
|
$sql .= ") "; |
|
} |
|
$order = "b_utenti.cognome "; |
|
switch($_GET["order"][0]["column"]) { |
|
case "1": $order = "b_utenti.codice "; break; |
|
case "2": $order = "b_utenti.cognome "; break; |
|
case "3": $order = "b_utenti.nome "; break; |
|
case "4": $order = "b_utenti.email "; break; |
|
case "5":if (empty($_SESSION["ente"])) { $order = "b_enti.denominazione "; break; } |
|
} |
|
if ($_GET["order"][0]["dir"] == "desc") { |
|
$order.= "DESC "; |
|
} else { |
|
$order.= "ASC "; |
|
} |
|
|
|
$sql .= "GROUP BY b_utenti.codice ORDER BY " . $order . ", b_utenti.cognome ASC "; |
|
$_SESSION["exportUtenti_".$_GET["token_esportazione"]] = ["sql"=>$sql,"bind"=>$bind]; |
|
$risBeforeLimit = $pdo->go($sql,$bind); |
|
if ($_GET["length"] !== "-1") { $sql.= "LIMIT ". (int)$_GET["start"] .", " . (int)$_GET["length"]; } |
|
$ris_utenti = $pdo->go($sql,$bind); |
|
if ($ris_utenti->rowCount() > 0) { |
|
$collaborazioni = $pdo->prepare("SELECT r_collaborazioni.*, b_enti.denominazione, b_enti.dominio, b_enti.attivo AS ente_attivo, b_enti.sua |
|
FROM r_collaborazioni |
|
JOIN b_enti ON r_collaborazioni.codice_ente = b_enti.codice |
|
LEFT JOIN b_enti AS b_sua ON b_enti.sua = b_sua.codice |
|
WHERE r_collaborazioni.codice = :codice AND (b_enti.attivo = 'S' OR b_sua.attivo = 'S')"); |
|
if ($filterApplied) { |
|
$return["recordsFiltered"] = (int)$risBeforeLimit->rowCount(); |
|
} else { |
|
$return["recordsFiltered"] = $return["recordsTotal"]; |
|
} |
|
$return["data"] = array(); |
|
while($utente = $ris_utenti->fetch(PDO::FETCH_ASSOC)) { |
|
if ($ruoli[$utente["ruolo"]]["gerarchia"] >= $_SESSION["utente"]->gerarchia) { |
|
$stato = "bg-disabled"; |
|
$stato_label = __('disattivo'); |
|
if ($utente["attivo"]=="S") { |
|
$stato = "bg-active"; |
|
$stato_label = __('attivo'); |
|
} |
|
$row = array(); |
|
$row[] = '<div id="flag_'.$utente["codice"].'" class="mx-1 status_flag '.$stato.'"><span class="sr-only">'.$stato_label.'</span></div>'; |
|
$row[] = $utente["codice"]; |
|
$row[] = $utente["cognome"]; |
|
$row[] = $utente["nome"]; |
|
$row[] = $utente["email"]; |
|
$commands = true; |
|
ob_start(); |
|
if (!empty($utente["codici_collaborazioni"])) { |
|
if (isset($_SESSION["ente"]) && $_SESSION["utente"]->gerarchia > 9) { $commands = false; } |
|
$codici_collaborazioni = explode(",",$utente["codici_collaborazioni"]); |
|
if (count($codici_collaborazioni) > 0) { |
|
foreach($codici_collaborazioni AS $collaborazione) { |
|
$collaborazioni->bindValue(":codice",$collaborazione); |
|
$collaborazioni->execute(); |
|
if ($collaborazioni->rowCount() > 0) { |
|
$collaborazione = $collaborazioni->fetch(PDO::FETCH_ASSOC); |
|
?> |
|
<div class="d-block pl-2 py-1 mb-1"> |
|
<span class="text-<?= $collaborazione["attivo"] == "S" ? "success" : "danger" ?>"><span class="fa fa-<?= $collaborazione["attivo"] == "S" ? "check-circle" : "times-circle" ?>"></span> <?= $collaborazione["denominazione"] ?> <small class="p-1 alert alert-info"><?= $ruoli[$collaborazione["gruppo"]]["nome"] ?></small></span> |
|
<?php if ($collaborazione["readOnly"] == "S") : ?> |
|
<small class="p-1 alert alert-warning"><span class="fa fa-eye"></span><?= __("Sola lettura") ?></small> |
|
<?php endif ?> |
|
<?php if ($collaborazione["monitoraggio"] == "S") : ?> |
|
<small class="p-1 alert alert-danger"><span class="fa fa-user-secret"></span><?= __("Monitoraggio") ?></small> |
|
<?php endif ?> |
|
<? |
|
if ($_SESSION["utente"]->gerarchia < 10 || $collaborazione["codice_ente"] == $_SESSION["utente"]->codice_ente || empty($collaborazione["dominio"]) || $collaborazione["ente_attivo"] == "N") { |
|
$commands = true; ?> |
|
<div class="dropdown float-right"> |
|
<button title='<?= __("gestione") ?>' class='btn btn-sm btn-info dropdown-toggle' type="button" id="menuAzioni<?= $collaborazione["codice"] ?>" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
|
<span class='fa fa-cog'></span> |
|
</button> |
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="menuAzioni<?= $collaborazione["codice"] ?>"> |
|
<a class="dropdown-item" href='#' onClick='showModalWithURL("/backend/utenti/manage.php?codice=<?= $utente["codice"] ?>&codice_collaborazione=<?= $collaborazione["codice"] ?>")' title='<?= __("Permessi") ?>'><i class='fa fa-lock-open'></i> <?= __("Permessi") ?></a> |
|
<a class="dropdown-item" href='#' onClick='reset_password(<?= $utente["codice"] ?>,<?= (!empty($collaborazione["dominio"]) && $collaborazione["ente_attivo"] == "S") ? $collaborazione["codice_ente"] : $collaborazione["sua"] ?>)' title='<?= __("Reset password") ?>'><i class='fa fa-paper-plane'></i> <?= __("Reset password") ?></a> |
|
<a class="dropdown-item" href='#' onClick='disabilita(<?= $collaborazione["codice"] ?>,"utenti/collaborazioni","codice_utente=<?= $utente["codice"] ?>")' title='<?= __("Attiva/Disattiva") ?>'><i class='fa fa-sync'></i> <?= $collaborazione["attivo"] == "S" ? __("Disattiva") : __("Attiva") ?></a> |
|
</div> |
|
</div> |
|
<? } ?> |
|
<div class="clearfix"></div> |
|
</div> |
|
<? |
|
} |
|
} |
|
} |
|
|
|
} else { |
|
if ($utente["ruolo"] != "USR") { |
|
echo "<span class='text-primary'><span class='fa fa-exclamation-circle'></span> {$ruoli[$utente["ruolo"]]["nome"]}</span>"; |
|
echo "<button title='".__("reset password")."' class='float-right btn btn-sm btn-success' onclick='reset_password(".$utente["codice"].",0);'><span class='fa fa-paper-plane'></span></button>"; |
|
} else { |
|
echo "<span class='text-danger'><span class='fa fa-exclamation-triangle'></span> {$ruoli[$utente["ruolo"]]["nome"]}</span>"; |
|
} |
|
} |
|
$row[] = ob_get_clean(); |
|
|
|
if ($certificabili) { |
|
ob_start(); |
|
if ($utente["certificato"] == "S") { |
|
$_crtLabel = __("Certificato"); |
|
$_crtColor = "primary"; |
|
$_crtIcon = "fa fa-certificate"; |
|
} else { |
|
$_crtLabel = __("Non certificato"); |
|
$_crtColor = "warning"; |
|
$_crtIcon = "fa fa-user-slash"; |
|
} |
|
$_crtAction = ""; |
|
if ($_SESSION["utente"]->canCertify($utente["codice"]) || $utente["certificato"] == "S") { |
|
$_crtAction = "showModalWithURL('/backend/utenti/certificazione/edit.php?codice={$utente["codice"]}');"; |
|
} |
|
?> |
|
<button onclick="<?= $_crtAction ?>" class="btn btn-<?= $_crtColor ?> btn-sm"><span class="<?= $_crtIcon ?>"></span> <?= $_crtLabel ?></button> |
|
<? |
|
$row[] = ob_get_clean(); |
|
} |
|
if ($commands) { |
|
$row[] = "<button title='".__("profilo")."' class='btn btn-block btn-sm btn-primary' onclick='showModalWithURL(\"/backend/utenti/edit.php?codice=".$utente["codice"]."\");'><span class='fa fa-user'></span></button>"; |
|
if ($_SESSION["utente"]->isSupportoOrRoot()) { |
|
$row[] = "<button title='".__("Attiva/Disattiva")."' class='btn btn-block btn-sm btn-warning' onclick='disabilita(".$utente["codice"].",\"utenti\");'><span class='fa fa-sync'></span></button>"; |
|
if (!empty($utente["twoFactor_token"])) { |
|
$row[] = "<button title='".__("Rimuovi 2FA")."' class='btn btn-block btn-sm btn-danger' onclick='showModalWithURL(\"/profilo/2fa/confirmDelete.php?codice=".$utente["codice"]."\");'>2FA</button>"; |
|
} else { |
|
$row[] = ""; |
|
} |
|
} |
|
} else { |
|
$row[] = ""; |
|
$row[] = ""; |
|
} |
|
$return["data"][] = $row; |
|
} |
|
} |
|
} else { |
|
$return["data"] = array(); |
|
} |
|
} else { |
|
$return["error"] = "No record"; |
|
} |
|
|
|
echo json_encode($return); |
|
} |
|
} |
|
?>
|
|
|