Files
2026-06-11 10:16:53 +07:00

101 lines
3.6 KiB
PHP

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
echo json_encode(["status" => "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();
?>