Käyttäjän poisto: admin poistaa vain yrityksestä, ei kokonaan

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 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 15:13:23 +02:00
parent ef25748f03
commit 771d288338
2 changed files with 22 additions and 2 deletions

16
api.php
View File

@@ -1727,9 +1727,21 @@ switch ($action) {
break; break;
} }
} }
dbDeleteUser($id);
$companyId = $_SESSION['company_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]); echo json_encode(['success' => true]);
break; break;

8
db.php
View File

@@ -976,6 +976,14 @@ function dbDeleteUser(string $userId): void {
_dbExecute("DELETE FROM users WHERE id = ?", [$userId]); _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) ==================== // ==================== ASETUKSET (global) ====================
function dbLoadConfig(): array { function dbLoadConfig(): array {