Files
UAS_WEBGIS_IhyaUlumuddinHar…/database/migrations/001_fase_a_roles.sql
T
2026-06-13 11:24:58 +07:00

52 lines
2.1 KiB
SQL

-- ============================================================
-- Migrasi Fase A — Sistem 4 Role SKPL + Log Aktivitas
-- ============================================================
-- Jalankan SEKALI pada database existing (webgis_db).
-- Aman untuk data yang sudah ada: role lama dipetakan, bukan dihapus.
-- admin -> operator
-- user -> pimpinan
-- ============================================================
-- 1. Migrasi nilai role lama -> SKPL (widen -> update -> narrow)
ALTER TABLE users MODIFY COLUMN role VARCHAR(20) NOT NULL DEFAULT 'enumerator';
UPDATE users SET role = 'operator' WHERE role = 'admin';
UPDATE users SET role = 'pimpinan' WHERE role = 'user';
ALTER TABLE users
MODIFY COLUMN role ENUM('publik','enumerator','operator','pimpinan')
NOT NULL DEFAULT 'enumerator';
-- 2. Kolom tambahan users (KF-02 / KF-03 / KF-26)
ALTER TABLE users
ADD COLUMN email VARCHAR(120) DEFAULT NULL AFTER username,
ADD COLUMN is_active TINYINT(1) NOT NULL DEFAULT 1 AFTER role,
ADD COLUMN wilayah_tugas VARCHAR(100) DEFAULT NULL AFTER is_active,
ADD COLUMN last_login TIMESTAMP NULL DEFAULT NULL AFTER wilayah_tugas;
-- 3. Akun demo Enumerator (password: user123)
-- operator & pimpinan berasal dari migrasi akun lama (admin / pengguna)
INSERT IGNORE INTO users (username, email, password, role, nama_lengkap)
VALUES (
'enumerator',
'enumerator@webgis.id',
'$2y$12$djJkmhJBRCSCqqpAICIvGuLoVpICrDUS2IVECbZUodgR89VRTqdLW',
'enumerator',
'Petugas Lapangan'
);
-- 4. Log aktivitas (KF-04) — audit trail
CREATE TABLE IF NOT EXISTS activity_log (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NULL,
username VARCHAR(50) DEFAULT NULL,
aksi VARCHAR(50) NOT NULL,
tabel_target VARCHAR(50) DEFAULT NULL,
record_id INT DEFAULT NULL,
keterangan TEXT DEFAULT NULL,
ip_address VARCHAR(45) DEFAULT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_activity_user (user_id),
INDEX idx_activity_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;