101 lines
3.6 KiB
PHP
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();
|
|
?>
|