updateConfig('link_expiry_days', $link_expiry_days); $db->updateConfig('warning_days_normal', $warning_days_normal); $db->updateConfig('warning_days_priority', $warning_days_priority); $db->updateConfig('warning_days_return', $warning_days_return); logActivity('update', 'Aggiornate configurazioni di sistema', 'config', null); setFlashMessage('Configurazioni salvate con successo', 'success'); header('Location: settings.php'); exit; break; case 'change_password': $current_password = $_POST['current_password']; $new_password = $_POST['new_password']; $confirm_password = $_POST['confirm_password']; $user = getCurrentUser(); $db_user = $db->fetchOne("SELECT password FROM users WHERE id = ?", [$user['id']]); if (!password_verify($current_password, $db_user['password'])) { setFlashMessage('Password corrente non corretta', 'error'); } elseif ($new_password !== $confirm_password) { setFlashMessage('Le nuove password non coincidono', 'error'); } elseif (strlen($new_password) < 6) { setFlashMessage('La password deve essere di almeno 6 caratteri', 'error'); } else { $hashed = password_hash($new_password, PASSWORD_DEFAULT); $db->query("UPDATE users SET password = ? WHERE id = ?", [$hashed, $user['id']]); logActivity('update', 'Modificata la propria password', 'user', $user['id']); setFlashMessage('Password modificata con successo', 'success'); } header('Location: settings.php'); exit; break; case 'add_user': $username = sanitize($_POST['username']); $email = sanitize($_POST['email']); $password = $_POST['password']; $is_admin = isset($_POST['is_admin']) ? 1 : 0; if (strlen($password) < 6) { setFlashMessage('La password deve essere di almeno 6 caratteri', 'error'); } else { $hashed = password_hash($password, PASSWORD_DEFAULT); $result = $db->query( "INSERT INTO users (username, email, password, is_admin) VALUES (?, ?, ?, ?)", [$username, $email, $hashed, $is_admin] ); if ($result) { $new_user_id = $db->getConnection()->lastInsertId(); $role = $is_admin ? 'amministratore' : 'utente'; logActivity('create', "Creato nuovo utente '$username' con ruolo $role", 'user', $new_user_id); setFlashMessage('Utente aggiunto con successo', 'success'); } else { setFlashMessage('Errore: username già esistente', 'error'); } } header('Location: settings.php'); exit; break; case 'delete_user': $user_id = (int)$_POST['user_id']; // Non permettere di eliminare se stesso if ($user_id == $_SESSION['user_id']) { setFlashMessage('Non puoi eliminare il tuo account', 'error'); } else { $user_to_delete = $db->fetchOne("SELECT username FROM users WHERE id = ?", [$user_id]); $db->query("DELETE FROM users WHERE id = ?", [$user_id]); if ($user_to_delete) { logActivity('delete', "Eliminato utente '{$user_to_delete['username']}'", 'user', $user_id); } setFlashMessage('Utente eliminato con successo', 'success'); } header('Location: settings.php'); exit; break; } } } // Carica configurazioni $config = [ 'link_expiry_days' => $db->getConfig('link_expiry_days', 7), 'warning_days_normal' => $db->getConfig('warning_days_normal', 90), 'warning_days_priority' => $db->getConfig('warning_days_priority', 180), 'warning_days_return' => $db->getConfig('warning_days_return', 120) ]; // Carica utenti $users = $db->fetchAll("SELECT id, username, email, is_admin, created_at FROM users ORDER BY username"); include 'header.php'; ?>

Configurazioni Generali

Numero di giorni per cui i link di condivisione territorio sono validi
Giorni dopo i quali un territorio in reparto è considerato da assegnare
Giorni dopo i quali un territorio in reparto è considerato prioritario
Giorni dopo i quali un territorio assegnato è da riconsegnare

Cambia Password

Gestione Utenti

Username Email Ruolo Data Creazione Azioni
Admin Utente
Tu

Aggiungi Nuovo Utente