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.
147 righe
6.5 KiB
147 righe
6.5 KiB
<? |
|
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php"; |
|
include_once($configPath); |
|
$error = true; |
|
if (!empty($_POST) && !empty($_SESSION["utente"]) && |
|
($_SESSION["utente"]->permission("utenti",$_POST["codice"]) || $_SESSION["utente"]->codice == $_POST["codice"]) |
|
&& tokenVerify()) { |
|
|
|
$ruoli = utente::ruoli(); |
|
$elabora_collaborazioni = ($_SESSION["utente"]->gerarchia <= 10); |
|
if (isset($_POST["ruolo"])) { |
|
if ($_POST["ruolo"] != "USR") { $elabora_collaborazioni = false; } |
|
if ($ruoli[$_POST["ruolo"]]["gerarchia"] >= $_SESSION["utente"]->gerarchia) { $error = false; } |
|
} else { |
|
$error = false; |
|
} |
|
if (!$error) { |
|
if (isset($_SESSION["ente"])) { |
|
if (empty($_POST["codice"])) { |
|
$_POST["ruolo"] = "USR"; |
|
} else { |
|
unset($_POST["ruolo"]); |
|
} |
|
} |
|
if (!empty($_POST["ruolo"]) && $_POST["ruolo"] != "CON") { $_POST["gruppo_consulenza"] = 0; } |
|
if (empty($_POST["codice"]) && $_POST["ruolo"] == "USR" && empty($_POST["collaborazione"])) { |
|
?> |
|
swal({title:js_dict.error,html:"<?= __("E' obbligatorio specificare almeno una collaborazione") ?>",type:"error"}); |
|
<? |
|
die(); |
|
} |
|
if ($elabora_collaborazioni && !empty($_POST["collaborazione"])) { |
|
$collaborazioniDaElaborare = []; |
|
$count = []; |
|
foreach($_POST["collaborazione"] AS $codice_collaborazione => $collaborazione) { |
|
if ($ruoli[$collaborazione["gruppo"]]["gerarchia"] >= $_SESSION["utente"]->gerarchia && $ruoli[$collaborazione["gruppo"]]["ente"]) { |
|
if (!isset($count[$collaborazione["codice_ente"]])) { $count[$collaborazione["codice_ente"]] = 0; } |
|
$count[$collaborazione["codice_ente"]]++; |
|
if ($count[$collaborazione["codice_ente"]] > 1) { |
|
?> |
|
swal({title:js_dict.error,html:"<?= __("Impossibile attribuire più collaborazioni per lo stesso ente") ?>",type:"error"}); |
|
<? |
|
die(); |
|
} else { |
|
$collaborazioniDaElaborare[$codice_collaborazione] = $collaborazione; |
|
} |
|
} |
|
} |
|
} |
|
if (isset($_POST["password"])) { |
|
$_POST["password"] = password_hash(md5($_POST["password"]), PASSWORD_BCRYPT); |
|
if (!empty($_POST["codice"])) { |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "b_password_log"; |
|
$salva->operazione = "INSERT"; |
|
$salva->oggetto = array("codice_utente"=>$_POST["codice"]); |
|
$salva->save(); |
|
} |
|
} |
|
|
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "b_utenti"; |
|
$salva->operazione = empty($_POST["codice"]) ? "INSERT" : "UPDATE"; |
|
$salva->oggetto = $_POST; |
|
$salva->expect = array("cf", "codice","ruolo","attivo","password","email","cognome","nome","pec","theme","indirizzo","gruppo_consulenza","stato","regione","provincia","citta","cap","telefono","cellulare"); |
|
// Se l'utente è loggato con spid rimuovo il CF dalle chiavi consentite |
|
if($salva->operazione == "UPDATE" && ($_SESSION["utente"]->authenticationLevel == 2 || $_SESSION["utente"]->publicSSO == "SPID") && $_POST["codice"] == $_SESSION["utente"]->codice) { |
|
unset($salva->expect[0]); |
|
$salva->expect = array_values($salva->expect); |
|
} |
|
$codice = $salva->save(); |
|
if (!empty($codice)) { |
|
Utente::removeLock($codice); |
|
unset($_SESSION["currentTheme"]); |
|
$found = []; |
|
if (!empty($collaborazioniDaElaborare)) { |
|
foreach($collaborazioniDaElaborare AS $codice_collaborazione => $collaborazione) { |
|
$operazione = "INSERT"; |
|
if (is_numeric($codice_collaborazione)) { |
|
$operazione = "UPDATE"; |
|
$collaborazione["codice"] = $codice_collaborazione; |
|
} |
|
$collaborazione["codice_utente"] = $codice; |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "r_collaborazioni"; |
|
$salva->operazione = $operazione; |
|
$salva->oggetto = $collaborazione; |
|
$salva->expect = array("codice","gruppo","codice_utente","codice_ente","attivo","readOnly"); |
|
$found[] = $salva->save(); |
|
} |
|
} |
|
$bind = []; |
|
$bind[":codice_utente"] = $codice; |
|
$sql = "SELECT codice FROM r_collaborazioni WHERE codice_utente = :codice_utente "; |
|
if (!empty($_SESSION["ente"])) { |
|
$sql .= " AND codice_ente IN (SELECT codice FROM b_enti WHERE codice = :codice_ente OR sua = :codice_ente)"; |
|
$bind[":codice_ente"] = $_SESSION["ente"]->codice; |
|
if ($_SESSION["utente"]->gerarchia >= 9) { |
|
if (!$_SESSION["utente"]->fromHere()) { |
|
$bind[":codice_ente"] = $_SESSION["utente"]->codice_ente; |
|
} |
|
$sql .= " AND codice_ente NOT IN (SELECT codice FROM b_enti WHERE sua = :codice_ente AND ((dominio IS NOT NULL AND dominio <> '') OR attivo = 'N')) "; |
|
} |
|
} |
|
$collaborazioni = $pdo->go($sql,$bind); |
|
if ($collaborazioni->rowCount() > 0 && $elabora_collaborazioni) { |
|
while($collaborazione = $collaborazioni->fetch(PDO::FETCH_ASSOC)) { |
|
if (in_array($collaborazione["codice"],$found) === false) { |
|
$pdo->go("DELETE FROM r_permessi_collaborazioni WHERE cod_relazione = :codice",[":codice"=>$collaborazione["codice"]]); |
|
scriviLog("r_permessi_collaborazioni","DELETE",$pdo->getSQL(),$collaborazione["codice"]); |
|
$pdo->go("DELETE FROM r_collaborazioni WHERE codice = :codice",[":codice"=>$collaborazione["codice"]]); |
|
scriviLog("r_collaborazioni","DELETE",$pdo->getSQL(),$collaborazione["codice"]); |
|
} |
|
} |
|
} |
|
?> |
|
swal({title:js_dict["success-msg"],type:"success"}).then(function() { |
|
<? if (!empty($_POST["codice"])) { ?> |
|
window.location.reload(); |
|
<? } else { ?> |
|
modalURL = []; |
|
<? if ($collaborazioni->rowCount() > 0) { ?> |
|
showModalWithURL("/backend/utenti/manage.php?codice=<?= $codice ?>"); |
|
<? } else { ?> |
|
showModalWithURL("/backend/utenti/edit.php?codice=<?= $codice ?>"); |
|
<? } ?> |
|
<? } ?> |
|
}); |
|
<? |
|
} else { |
|
?> |
|
swal({title:js_dict.error,html:js_dict["error-generic"] + "<br>Error: # 1",type:"error"}); |
|
<? |
|
} |
|
} |
|
} |
|
if ($error) { |
|
header('HTTP/1.0 403 Forbidden'); |
|
die(); |
|
} |
|
?>
|
|
|