From 771d288338692e6c3070153866163f74fd2dfe4d Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Thu, 12 Mar 2026 15:13:23 +0200 Subject: [PATCH] =?UTF-8?q?K=C3=A4ytt=C3=A4j=C3=A4n=20poisto:=20admin=20po?= =?UTF-8?q?istaa=20vain=20yrityksest=C3=A4,=20ei=20kokonaan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Admin poistaa käyttäjän vain nykyisestä yrityksestä (user_companies). Käyttäjä poistetaan kokonaan vasta kun ei kuulu enää yhteenkään yritykseen. Superadmin poistaa edelleen kokonaan. Co-Authored-By: Claude Opus 4.6 --- api.php | 16 ++++++++++++++-- db.php | 8 ++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/api.php b/api.php index 9a0a3b0..31802fa 100644 --- a/api.php +++ b/api.php @@ -1727,9 +1727,21 @@ switch ($action) { break; } } - dbDeleteUser($id); $companyId = $_SESSION['company_id'] ?? ''; - if ($deleted) dbAddLog($companyId, currentUser(), 'user_delete', '', '', "Poisti käyttäjän: {$deleted['username']}"); + if ($isSA) { + // Superadmin poistaa käyttäjän kokonaan + dbDeleteUser($id); + if ($deleted) dbAddLog($companyId, currentUser(), 'user_delete', '', '', "Poisti käyttäjän kokonaan: {$deleted['username']}"); + } else { + // Admin poistaa käyttäjän vain nykyisestä yrityksestä + dbRemoveUserFromCompany($id, $companyId); + if ($deleted) dbAddLog($companyId, currentUser(), 'user_delete', '', '', "Poisti käyttäjän yrityksestä: {$deleted['username']}"); + // Jos käyttäjällä ei ole enää yhtään yritystä, poista kokonaan + $remaining = dbGetUserCompanies($id); + if (empty($remaining)) { + dbDeleteUser($id); + } + } echo json_encode(['success' => true]); break; diff --git a/db.php b/db.php index f5968bb..b203a76 100644 --- a/db.php +++ b/db.php @@ -976,6 +976,14 @@ function dbDeleteUser(string $userId): void { _dbExecute("DELETE FROM users WHERE id = ?", [$userId]); } +function dbRemoveUserFromCompany(string $userId, string $companyId): void { + _dbExecute("DELETE FROM user_companies WHERE user_id = ? AND company_id = ?", [$userId, $companyId]); +} + +function dbGetUserCompanies(string $userId): array { + return _dbFetchAll("SELECT company_id FROM user_companies WHERE user_id = ?", [$userId]); +} + // ==================== ASETUKSET (global) ==================== function dbLoadConfig(): array {