perbaikan keseluruhan bug
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@ if ($aksi === 'login') {
|
||||
$email = trim($_POST['email'] ?? '');
|
||||
$password = $_POST['password'] ?? '';
|
||||
if (!$email || !$password) json_out(['error'=>'Email dan password wajib diisi'],400);
|
||||
$stmt = $conn->prepare("SELECT u.*,r.nama AS role_nama FROM user u JOIN role r ON u.role_id=r.id WHERE u.email=? AND u.aktif=1 LIMIT 1");
|
||||
$stmt = $conn->prepare("SELECT u.*,r.nama AS role_nama FROM `user` u JOIN `role` r ON u.role_id=r.id WHERE u.email=? AND u.aktif=1 LIMIT 1");
|
||||
if (!$stmt) {
|
||||
json_out(['error' => 'Database error: ' . $conn->error], 500);
|
||||
}
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ if ($aksi === 'histori') {
|
||||
FROM histori_bantuan hb
|
||||
JOIN bantuan b ON hb.bantuan_id=b.id
|
||||
JOIN penduduk p ON hb.penduduk_id=p.id
|
||||
LEFT JOIN user u ON hb.disalurkan_oleh=u.id
|
||||
LEFT JOIN `user` u ON hb.disalurkan_oleh=u.id
|
||||
WHERE $w ORDER BY hb.tanggal DESC,hb.id DESC";
|
||||
if($params){$stmt=$conn->prepare($sql);$stmt->bind_param($types,...$params);$stmt->execute();$res=$stmt->get_result();$stmt->close();}
|
||||
else $res=$conn->query($sql);
|
||||
|
||||
+3
-3
@@ -11,7 +11,7 @@ if ($aksi === 'inbox') {
|
||||
if(!$uid) json_out([]);
|
||||
$sql="SELECT p.*,u.nama AS nama_pengirim
|
||||
FROM pesan p
|
||||
JOIN user u ON p.dari_user=u.id
|
||||
JOIN `user` u ON p.dari_user=u.id
|
||||
WHERE (p.ke_user=$uid OR p.ke_user IS NULL)
|
||||
ORDER BY p.created_at DESC LIMIT 80";
|
||||
$res=$conn->query($sql); $rows=[];
|
||||
@@ -23,7 +23,7 @@ if ($aksi === 'inbox') {
|
||||
|
||||
if ($aksi === 'history') {
|
||||
$ke=(int)($_GET['ke']??0);
|
||||
$res=$conn->query("SELECT p.*,u.nama AS nama_pengirim FROM pesan p JOIN user u ON p.dari_user=u.id WHERE (p.dari_user=$uid AND p.ke_user=$ke) OR (p.dari_user=$ke AND p.ke_user=$uid) ORDER BY p.created_at ASC LIMIT 100");
|
||||
$res=$conn->query("SELECT p.*,u.nama AS nama_pengirim FROM pesan p JOIN `user` u ON p.dari_user=u.id WHERE (p.dari_user=$uid AND p.ke_user=$ke) OR (p.dari_user=$ke AND p.ke_user=$uid) ORDER BY p.created_at ASC LIMIT 100");
|
||||
$rows=[]; if($res) while($r=$res->fetch_assoc()) $rows[]=$r;
|
||||
json_out($rows);
|
||||
}
|
||||
@@ -39,7 +39,7 @@ if ($aksi === 'kirim') {
|
||||
}
|
||||
|
||||
if ($aksi === 'kontak') {
|
||||
$res=$conn->query("SELECT u.id,u.nama,r.nama AS role FROM user u JOIN role r ON u.role_id=r.id WHERE u.aktif=1".($uid?" AND u.id!=$uid":'')." ORDER BY u.nama");
|
||||
$res=$conn->query("SELECT u.id,u.nama,r.nama AS role FROM `user` u JOIN `role` r ON u.role_id=r.id WHERE u.aktif=1".($uid?" AND u.id!=$uid":'')." ORDER BY u.nama");
|
||||
$rows=[]; if($res) while($r=$res->fetch_assoc()) $rows[]=$r;
|
||||
json_out($rows);
|
||||
}
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ $prioritas=[]; $res=$conn->query("SELECT p.id,p.nik,p.nama,p.status_ekonomi,TIME
|
||||
if($res) while($r=$res->fetch_assoc()) $prioritas[]=$r;
|
||||
|
||||
// aktivitas
|
||||
$aktivitas=[]; $res=$conn->query("SELECT la.*,u.nama AS nama_user FROM log_aktivitas la LEFT JOIN user u ON la.user_id=u.id ORDER BY la.created_at DESC LIMIT 15");
|
||||
$aktivitas=[]; $res=$conn->query("SELECT la.*,u.nama AS nama_user FROM log_aktivitas la LEFT JOIN `user` u ON la.user_id=u.id ORDER BY la.created_at DESC LIMIT 15");
|
||||
if($res) while($r=$res->fetch_assoc()) $aktivitas[]=$r;
|
||||
|
||||
json_out([
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ if ($aksi === 'list') {
|
||||
$sql="SELECT l.*,p.nama AS nama_penduduk,p.status_ekonomi,p.nik,u.nama AS nama_verifikator
|
||||
FROM laporan l
|
||||
LEFT JOIN penduduk p ON l.penduduk_id=p.id
|
||||
LEFT JOIN user u ON l.diverifikasi_oleh=u.id
|
||||
LEFT JOIN `user` u ON l.diverifikasi_oleh=u.id
|
||||
WHERE $w
|
||||
ORDER BY FIELD(l.urgensi,'darurat','tinggi','sedang','rendah'),l.created_at DESC";
|
||||
$res=$conn->query($sql);
|
||||
@@ -29,7 +29,7 @@ if ($aksi === 'list') {
|
||||
|
||||
if ($aksi === 'detail') {
|
||||
$id=(int)($_GET['id']??0);
|
||||
$res=$conn->query("SELECT l.*,p.nama AS nama_penduduk,u.nama AS nama_verifikator FROM laporan l LEFT JOIN penduduk p ON l.penduduk_id=p.id LEFT JOIN user u ON l.diverifikasi_oleh=u.id WHERE l.id=$id LIMIT 1");
|
||||
$res=$conn->query("SELECT l.*,p.nama AS nama_penduduk,u.nama AS nama_verifikator FROM laporan l LEFT JOIN penduduk p ON l.penduduk_id=p.id LEFT JOIN `user` u ON l.diverifikasi_oleh=u.id WHERE l.id=$id LIMIT 1");
|
||||
json_out($res->fetch_assoc()??['error'=>'Tidak ditemukan']);
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -7,7 +7,7 @@ include 'koneksi.php';
|
||||
$aksi = $_REQUEST['aksi'] ?? 'list';
|
||||
|
||||
if ($aksi === 'list') {
|
||||
$res=$conn->query("SELECT u.id,u.nama,u.email,u.aktif,u.created_at,r.nama AS role_nama,r.id AS role_id FROM user u JOIN role r ON u.role_id=r.id ORDER BY u.nama");
|
||||
$res=$conn->query("SELECT u.id,u.nama,u.email,u.aktif,u.created_at,r.nama AS role_nama,r.id AS role_id FROM `user` u JOIN `role` r ON u.role_id=r.id ORDER BY u.nama");
|
||||
if(!$res) json_out(['error'=>$conn->error],500);
|
||||
$rows=[]; while($r=$res->fetch_assoc()) $rows[]=$r;
|
||||
json_out($rows);
|
||||
@@ -18,9 +18,9 @@ if ($aksi === 'simpan') {
|
||||
$em=$conn->real_escape_string($_POST['email']??'');
|
||||
$pw=password_hash($_POST['password']??'password',PASSWORD_DEFAULT);
|
||||
$rid=(int)($_POST['role_id']??1);
|
||||
$cek=$conn->query("SELECT id FROM user WHERE email='$em'")->num_rows;
|
||||
$cek=$conn->query("SELECT id FROM `user` WHERE email='$em'")->num_rows;
|
||||
if($cek>0) json_out(['error'=>'Email sudah digunakan'],400);
|
||||
$conn->query("INSERT INTO user (nama,email,password,role_id) VALUES ('$nm','$em','$pw',$rid)");
|
||||
$conn->query("INSERT INTO `user` (nama,email,password,role_id) VALUES ('$nm','$em','$pw',$rid)");
|
||||
if($conn->error) json_out(['error'=>$conn->error],500);
|
||||
json_out(['success'=>true,'id'=>$conn->insert_id]);
|
||||
}
|
||||
@@ -31,22 +31,22 @@ if ($aksi === 'edit') {
|
||||
$em=$conn->real_escape_string($_POST['email']??'');
|
||||
$rid=(int)($_POST['role_id']??1);
|
||||
$akt=(int)($_POST['aktif']??1);
|
||||
$conn->query("UPDATE user SET nama='$nm',email='$em',role_id=$rid,aktif=$akt WHERE id=$id");
|
||||
$conn->query("UPDATE `user` SET nama='$nm',email='$em',role_id=$rid,aktif=$akt WHERE id=$id");
|
||||
if(!empty($_POST['password'])){
|
||||
$pw=password_hash($_POST['password'],PASSWORD_DEFAULT);
|
||||
$conn->query("UPDATE user SET password='$pw' WHERE id=$id");
|
||||
$conn->query("UPDATE `user` SET password='$pw' WHERE id=$id");
|
||||
}
|
||||
json_out(['success'=>true]);
|
||||
}
|
||||
|
||||
if ($aksi === 'hapus') {
|
||||
$id=(int)($_POST['id']??0);
|
||||
$conn->query("DELETE FROM user WHERE id=$id");
|
||||
$conn->query("DELETE FROM `user` WHERE id=$id");
|
||||
json_out(['success'=>true]);
|
||||
}
|
||||
|
||||
if ($aksi === 'roles') {
|
||||
$res=$conn->query("SELECT * FROM role"); $rows=[];
|
||||
$res=$conn->query("SELECT * FROM `role`"); $rows=[];
|
||||
while($r=$res->fetch_assoc()) $rows[]=$r;
|
||||
json_out($rows);
|
||||
}
|
||||
|
||||
+4
-7
@@ -5,6 +5,8 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
expose:
|
||||
- "80"
|
||||
volumes:
|
||||
- app_uploads:/var/www/html/05/uploads
|
||||
environment:
|
||||
DB_HOST: db
|
||||
DB_PORT: 3306
|
||||
@@ -47,13 +49,7 @@ services:
|
||||
echo 'Waiting for database...';
|
||||
sleep 2;
|
||||
done;
|
||||
sleep 3;
|
||||
echo 'mysqld is alive';
|
||||
for file in /docker-entrypoint-initdb.d/*.sql; do
|
||||
echo \"Running $$file\";
|
||||
mysql -h db -uroot --password=$$MYSQL_PWD < $$file || exit 1;
|
||||
done;
|
||||
echo 'All migrations done.';
|
||||
echo 'Database is ready, all internal migrations done.';
|
||||
"
|
||||
restart: "no"
|
||||
|
||||
@@ -70,3 +66,4 @@ services:
|
||||
|
||||
volumes:
|
||||
webgis_db_data:
|
||||
app_uploads:
|
||||
|
||||
+15
-15
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- Bawaan 05
|
||||
-- ============================================================
|
||||
@@ -26,19 +26,19 @@ DROP TABLE IF EXISTS `role`;
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ── 1. ROLE ─────────────────────────────────────────────────
|
||||
CREATE TABLE role (
|
||||
CREATE TABLE `role` (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(50) NOT NULL,
|
||||
deskripsi TEXT
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO role (nama, deskripsi) VALUES
|
||||
INSERT INTO `role` (nama, deskripsi) VALUES
|
||||
('masyarakat', 'Hanya dapat melihat data dan membuat laporan'),
|
||||
('pengurus', 'Input & update data penduduk, verifikasi laporan, salurkan bantuan'),
|
||||
('pimpinan', 'Read-only, monitoring dashboard');
|
||||
|
||||
-- ── 2. USER ─────────────────────────────────────────────────
|
||||
CREATE TABLE user (
|
||||
CREATE TABLE `user` (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(100) NOT NULL,
|
||||
email VARCHAR(100) NOT NULL UNIQUE,
|
||||
@@ -46,11 +46,11 @@ CREATE TABLE user (
|
||||
role_id INT NOT NULL DEFAULT 1,
|
||||
aktif TINYINT(1) DEFAULT 1,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (role_id) REFERENCES role(id)
|
||||
FOREIGN KEY (role_id) REFERENCES `role`(id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Password untuk semua akun demo: "password"
|
||||
INSERT INTO user (nama, email, password, role_id) VALUES
|
||||
INSERT INTO `user` (nama, email, password, role_id) VALUES
|
||||
('Admin Utama', 'admin@uas.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 2),
|
||||
('Pimpinan Daerah', 'pimpinan@uas.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 3),
|
||||
('Warga Biasa', 'warga@uas.id', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 1),
|
||||
@@ -68,7 +68,7 @@ CREATE TABLE rumah_ibadah (
|
||||
radius DOUBLE DEFAULT 500,
|
||||
user_id INT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE SET NULL
|
||||
FOREIGN KEY (user_id) REFERENCES `user`(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO rumah_ibadah (nama, jenis, kontak, alamat, lat, lng, radius, user_id) VALUES
|
||||
@@ -190,7 +190,7 @@ CREATE TABLE histori_bantuan (
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (bantuan_id) REFERENCES bantuan(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (disalurkan_oleh) REFERENCES user(id) ON DELETE SET NULL
|
||||
FOREIGN KEY (disalurkan_oleh) REFERENCES `user`(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO histori_bantuan (penduduk_id,bantuan_id,tanggal,jumlah,status,disalurkan_oleh,keterangan) VALUES
|
||||
@@ -217,7 +217,7 @@ CREATE TABLE laporan (
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (diverifikasi_oleh) REFERENCES user(id) ON DELETE SET NULL
|
||||
FOREIGN KEY (diverifikasi_oleh) REFERENCES `user`(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO laporan (pelapor,penduduk_id,deskripsi,lat,lng,urgensi,status) VALUES
|
||||
@@ -237,7 +237,7 @@ CREATE TABLE log_aktivitas (
|
||||
keterangan TEXT,
|
||||
ip_address VARCHAR(45),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE SET NULL
|
||||
FOREIGN KEY (user_id) REFERENCES `user`(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO log_aktivitas (user_id,aksi,tabel,data_id,keterangan) VALUES
|
||||
@@ -254,8 +254,8 @@ CREATE TABLE pesan (
|
||||
isi TEXT NOT NULL,
|
||||
dibaca TINYINT(1) DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (dari_user) REFERENCES user(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (ke_user) REFERENCES user(id) ON DELETE SET NULL
|
||||
FOREIGN KEY (dari_user) REFERENCES `user`(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (ke_user) REFERENCES `user`(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT INTO pesan (dari_user,ke_user,isi,dibaca) VALUES
|
||||
@@ -299,7 +299,7 @@ CREATE TABLE jalan(
|
||||
nama_jalan VARCHAR(150),
|
||||
status VARCHAR(50),
|
||||
panjang DOUBLE,
|
||||
geom LINESTRING NOT NULL,
|
||||
geom LINESTRING NOT NULL SRID 0,
|
||||
SPATIAL INDEX idx_jalan(geom)
|
||||
);
|
||||
|
||||
@@ -308,7 +308,7 @@ CREATE TABLE parsil(
|
||||
pemilik VARCHAR(100),
|
||||
status VARCHAR(50),
|
||||
luas DOUBLE,
|
||||
geom POLYGON NOT NULL,
|
||||
geom POLYGON NOT NULL SRID 0,
|
||||
SPATIAL INDEX idx_parsil(geom)
|
||||
);
|
||||
|
||||
@@ -316,7 +316,7 @@ CREATE TABLE jalan_rusak(
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_titik VARCHAR(100),
|
||||
keterangan TEXT,
|
||||
geom POINT NOT NULL,
|
||||
geom POINT NOT NULL SRID 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
SPATIAL INDEX idx_rusak(geom)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user