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 {