"error", "pesan" => "Akses ditolak. Silakan login."]); exit; } include 'koneksi.php'; $aksi = $_GET['aksi']; include 'koneksi.php'; $aksi = $_GET['aksi']; // 🛡️ PROTEKSI KEAMANAN GLOBAL UNTUK WARGA $role_aktif = $_SESSION['role'] ?? 'warga'; // Jika aksi adalah sesuatu yang merubah data (simpan, update, hapus) if (in_array($aksi, ['simpan', 'update', 'hapus', 'update_lokasi', 'simpan_bantuan', 'update_bantuan', 'hapus_bantuan'])) { // Blokir total jika role-nya adalah warga atau walikota if ($role_aktif === 'warga' || $role_aktif === 'walikota') { echo "Gagal: Akses ditolak. Warga hanya diizinkan untuk melihat data dan melakukan donasi."; exit; } } if ($aksi == 'tampil') { $result = $conn->query("SELECT * FROM rumah_ibadah"); $data = array(); while($row = $result->fetch_assoc()) { $data[] = $row; } echo json_encode($data); } elseif ($aksi == 'simpan') { $nama = $conn->real_escape_string($_POST['nama_tempat'] ?? ''); // Tangkap kategori dari formulir $kategori = $conn->real_escape_string($_POST['kategori'] ?? 'Masjid'); $pic = $conn->real_escape_string($_POST['pic'] ?? ''); $alamat = $conn->real_escape_string($_POST['alamat'] ?? ''); $radius = intval($_POST['radius'] ?? 500); $lat = floatval($_POST['lat'] ?? 0); $lng = floatval($_POST['lng'] ?? 0); if ($nama === '' || $lat === 0 || $lng === 0) { echo "Gagal: Nama tempat dan koordinat tidak boleh kosong."; exit; } // Masukkan kategori ke dalam query INSERT $sql = "INSERT INTO rumah_ibadah (nama_tempat, kategori, pic, alamat, radius, lat, lng) VALUES ('$nama', '$kategori', '$pic', '$alamat', $radius, $lat, $lng)"; if ($conn->query($sql)) { echo "Sukses"; } else { echo "Gagal: " . $conn->error; } } elseif ($aksi == 'hapus') { $id = intval($_POST['id'] ?? 0); if($conn->query("DELETE FROM rumah_ibadah WHERE id=$id")) echo "Sukses"; else echo "Gagal"; } elseif ($aksi == 'update') { $role = $_SESSION['role'] ?? ''; $session_masjid = $_SESSION['nama_masjid'] ?? ''; $id = intval($_POST['id'] ?? 0); $nama_tempat = $conn->real_escape_string($_POST['nama_tempat'] ?? ''); // Tangkap kategori saat proses edit $kategori = $conn->real_escape_string($_POST['kategori'] ?? 'Masjid'); $pic = $conn->real_escape_string($_POST['pic'] ?? ''); $alamat = $conn->real_escape_string($_POST['alamat'] ?? ''); $radius = intval($_POST['radius'] ?? 500); if ($role === 'pengurus_masjid') { $cek = $conn->query("SELECT nama_tempat FROM rumah_ibadah WHERE id = $id")->fetch_assoc(); if (!$cek || $cek['nama_tempat'] !== $session_masjid) { echo "Gagal: Anda tidak memiliki wewenang mengedit data masjid lain."; exit; } } elseif ($role !== 'admin') { echo "Gagal: Akses ditolak."; exit; } // Masukkan kategori ke dalam query UPDATE $sql = "UPDATE rumah_ibadah SET nama_tempat='$nama_tempat', kategori='$kategori', pic='$pic', alamat='$alamat', radius=$radius WHERE id=$id"; if ($conn->query($sql)) { echo "Sukses"; } else { echo "Gagal: " . $conn->error; } exit; } elseif ($aksi == 'update_lokasi') { $id = intval($_POST['id'] ?? 0); $lat = floatval($_POST['lat'] ?? 0); $lng = floatval($_POST['lng'] ?? 0); if($conn->query("UPDATE rumah_ibadah SET lat=$lat, lng=$lng WHERE id=$id")) echo "Sukses"; else echo "Gagal"; } $conn->close(); ?>