togethere.cloud/public_html/api/deleteUser.php

104 lines
2.8 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/admin_bootstrap.php';
$admin = admin_require_auth();
$adminId = (int)($admin['user_id'] ?? 0);
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
// Handle preflight
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
exit(0);
}
try {
$pdo = admin_get_pdo();
} catch (PDOException $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'error' => 'Błąd połączenia z bazą danych: ' . $e->getMessage()
], JSON_UNESCAPED_UNICODE);
exit;
}
// Pobieranie danych z POST
$input = json_decode(file_get_contents('php://input'), true);
if (!$input || !isset($input['user_id'])) {
http_response_code(400);
echo json_encode([
'success' => false,
'error' => 'Nieprawidłowe dane wejściowe'
], JSON_UNESCAPED_UNICODE);
exit;
}
$userId = (int)$input['user_id'];
if ($userId <= 0) {
http_response_code(400);
echo json_encode([
'success' => false,
'error' => 'Nieprawidłowe ID użytkownika'
], JSON_UNESCAPED_UNICODE);
exit;
}
// Sprawdzenie czy użytkownik istnieje
$stmt = $pdo->prepare("SELECT id, username, role FROM users WHERE id = ? AND (disabled IS NULL OR disabled = 0)");
$stmt->execute([$userId]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$user) {
http_response_code(404);
echo json_encode([
'success' => false,
'error' => 'Użytkownik nie istnieje lub jest już usunięty'
], JSON_UNESCAPED_UNICODE);
exit;
}
if ((int)$user['id'] === $adminId) {
http_response_code(403);
echo json_encode([
'success' => false,
'error' => 'Nie możesz zarządzać swoim kontem w tym widoku'
], JSON_UNESCAPED_UNICODE);
exit;
}
if (strtolower((string)($user['role'] ?? 'user')) === 'admin') {
http_response_code(403);
echo json_encode([
'success' => false,
'error' => 'Nie można zarządzać kontami administratorów w tym widoku'
], JSON_UNESCAPED_UNICODE);
exit;
}
try {
// Zamiast usuwać, oznaczamy jako disabled
$stmt = $pdo->prepare("UPDATE users SET disabled = 1, account_suspended = 1 WHERE id = ?");
$stmt->execute([$userId]);
echo json_encode([
'success' => true,
'message' => 'Użytkownik został pomyślnie usunięty'
], JSON_UNESCAPED_UNICODE);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'error' => 'Błąd podczas usuwania użytkownika: ' . $e->getMessage()
], JSON_UNESCAPED_UNICODE);
}
?>