90 lines
3.6 KiB
SQL
90 lines
3.6 KiB
SQL
-- ============================================================
|
||
-- MIGRASI: Tabel Users & Role-Based Access Control
|
||
-- WebGIS Poverty Mapping – Sistem Autentikasi
|
||
-- Jalankan di phpMyAdmin atau MySQL CLI setelah database.sql
|
||
-- ============================================================
|
||
|
||
USE webgis_p3;
|
||
|
||
-- ── Tabel pengguna ─────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS users (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
username VARCHAR(100) NOT NULL UNIQUE,
|
||
nama_lengkap VARCHAR(200) NOT NULL,
|
||
role ENUM('admin','petugas','pengurus','walikota') NOT NULL,
|
||
password_hash VARCHAR(255) NOT NULL,
|
||
aktif TINYINT(1) NOT NULL DEFAULT 1,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
INDEX idx_role (role),
|
||
INDEX idx_aktif (aktif)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
||
-- ── Akun demo (password di-hash dengan bcrypt PHP PASSWORD_DEFAULT) ──
|
||
-- Gunakan script generate_hash.php untuk membuat hash baru jika perlu.
|
||
--
|
||
-- admin → admin123
|
||
-- petugas → petugas123
|
||
-- pengurus → pengurus123
|
||
--
|
||
-- Hash di bawah digenerate dengan PHP:
|
||
-- password_hash('admin123', PASSWORD_DEFAULT) → $2y$12$...
|
||
-- password_hash('petugas123', PASSWORD_DEFAULT) → $2y$12$...
|
||
-- password_hash('pengurus123', PASSWORD_DEFAULT) → $2y$12$...
|
||
--
|
||
-- !! Jangan gunakan plain text password di produksi !!
|
||
|
||
INSERT INTO users (username, nama_lengkap, role, password_hash) VALUES
|
||
(
|
||
'admin',
|
||
'Administrator Sistem',
|
||
'admin',
|
||
'$2y$12$YourHashHereReplaceMe.admin123HashGeneratedByPHP'
|
||
),
|
||
(
|
||
'petugas',
|
||
'Petugas Lapangan',
|
||
'petugas',
|
||
'$2y$12$YourHashHereReplaceMe.petugas123HashGeneratedByPHP'
|
||
),
|
||
(
|
||
'pengurus',
|
||
'Pengurus Rumah Ibadah',
|
||
'pengurus',
|
||
'$2y$12$YourHashHereReplaceMe.pengurus123HashGeneratedByPHP'
|
||
),
|
||
(
|
||
'walikota',
|
||
'Walikota Pontianak',
|
||
'walikota',
|
||
'$2y$10$s0387VqXY8wBXYkVytEKxumpF0DmlBlE1z3usinr0nr1RYN/4BZw.'
|
||
);
|
||
|
||
-- !! PENTING: Setelah import tabel di atas, jalankan generate_hash.php
|
||
-- untuk mengisi password_hash yang benar secara otomatis. !!
|
||
|
||
-- ── Catatan hak akses per role ──────────────────────────────
|
||
/*
|
||
ROLE: admin
|
||
─────────────────────────────────────────────────────────────
|
||
• CRUD semua data: SPBU, kemiskinan, rumah ibadah
|
||
• Dapat melihat semua layer & analisis spasial
|
||
• Fitur FAB Tambah: SPBU, Kemiskinan, Rumah Ibadah
|
||
|
||
ROLE: petugas
|
||
─────────────────────────────────────────────────────────────
|
||
• Input & edit data kemiskinan (CREATE + UPDATE + DELETE)
|
||
• View semua data (read-only untuk SPBU & Rumah Ibadah)
|
||
• Fitur FAB Tambah: hanya Kemiskinan
|
||
• Tidak dapat hapus data SPBU atau Rumah Ibadah
|
||
• Tidak dapat tambah/edit SPBU atau Rumah Ibadah
|
||
|
||
ROLE: pengurus
|
||
─────────────────────────────────────────────────────────────
|
||
• Input & edit data rumah ibadah miliknya (CREATE + UPDATE + DELETE)
|
||
• View data kemiskinan (read-only)
|
||
• Fitur FAB Tambah: hanya Rumah Ibadah
|
||
• Tidak dapat hapus data SPBU atau kemiskinan
|
||
• Tidak dapat tambah/edit SPBU atau kemiskinan
|
||
*/
|