Sistem PERENCANAAN DINKES NATUNA β Setup Panduan Integrasi Firebase Backend
dinkes-natunadinkes-natuna-webfirebase-config.js β ganti nilai YOUR_*// Contoh konfigurasi yang sudah terisi:
const FIREBASE_CONFIG = {
apiKey: "AIzaSyB...",
authDomain: "dinkes-natuna.firebaseapp.com",
projectId: "dinkes-natuna",
storageBucket: "dinkes-natuna.appspot.com",
messagingSenderId: "123456789",
appId: "1:123456789:web:abc123"
};
| Role | Password | Catatan | |
|---|---|---|---|
| Admin | admin@dinkes.go.id | admin123 | Super admin akses penuh |
| Verifikator | verifikator@dinkes.go.id | verif123 | Validasi laporan |
| User | puskesmas@example.com | user123 | Petugas pelapor |
users dengan ID = UID akun Firebase, dan isi field role dengan salah satu: super_admin, admin, verifikator, user_puskesmasasia-southeast1 (Singapore)Buka Firestore Rules β Paste isi dari firestore.rules β Klik Publish
Berikut collections yang akan digunakan otomatis oleh aplikasi:
| Collection | Deskripsi | Otomatis? |
|---|---|---|
users | Profil pengguna dengan role | Manual |
puskesmas | Data profil puskesmas | Otomatis |
programs | Daftar program kesehatan | Manual |
laporan | Semua laporan kesehatan | Otomatis |
dokumen_laporan | Metadata dokumen pendukung | Otomatis |
log_aktivitas | Audit trail aktivitas | Otomatis |
notifikasi | Notifikasi ke pengguna | Otomatis |
penyimpanan | Backup data per kategori | Otomatis |
firestore.rules bagian Storage)rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /dokumen_laporan/{laporanId}/{fileName} {
allow read: if request.auth != null;
allow write: if request.auth != null
&& request.resource.size < 10 * 1024 * 1024
&& request.resource.contentType.matches('image/.*|application/pdf|application/msword|application/vnd.openxmlformats-officedocument.*');
}
}
}
Tambahkan berikut di <head> preview.html:
<!-- Firebase SDK --> <script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-firestore-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-storage-compat.js"></script> <!-- Firebase Services --> <script src="firebase-config.js"></script> <script src="auth-service.js"></script> <script src="firestore-service.js"></script> <script src="firebase-bridge.js"></script>
Ganti fungsi doLogin() di preview.html:
// LAMA (localStorage):
function doLogin() {
var user = findUser(selectedRole, username);
if (user && user.password === password) { ... }
}
// BARU (Firebase):
async function doLogin() {
var email = document.getElementById('loginUsername').value;
var password = document.getElementById('loginPassword').value;
try {
var user = await FirebaseBridge.login(email, password);
var profile = await FirestoreService.getUserProfile(user.uid);
currentUser = { uid: user.uid, ...profile };
applyRoleAccess();
} catch (error) {
document.getElementById('loginError').textContent = error.message;
}
}
βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββ βββββββΆβ FIRESTORE DB βββββββ Super Admin β β β β β β β β 1. Isi laporan β β laporan: { β β 1. Lihat laporan β β 2. Simpan draft ββββββΆβ status: draft β β 2. Cek dokumen β β 3. Kirim laporan ββββββΆβ status: menunggu β 3. Verifikasi β β 4. Lihat status βββββββ status: terverifββββββ 4. Setujui/Tolak β β 5. Perbaiki ββββββΆβ status: perlu_ β β 5. Minta perbaikan β β β β perbaikan β β β βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββ β β β βΌ βΌ βΌ βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββ β NOTIFIKASI β β LOG AKTIVITAS β β DOKUMEN β β - Laporan baru β β - Login β β - Upload file β β - Status update β β - Kirim/Cek β β - Validasi file β β - Perlu perbaik β β - Verifikasi β β - Status dokumen β βββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββ
YOUR_* di firebase-config.js dengan konfigurasi Firebase project Andausers di Firestore untuk setiap akun dengan field rolefirestore.rulesdoLogin() di preview.html untuk menggunakan Firebase AuthlocalStorage calls dengan FirebaseBridge callsusers β Add document{
"username": "petugas_ranai",
"email": "petugas@ranai.go.id",
"displayName": "Petugas Puskesmas Ranai",
"role": "user_puskesmas",
"puskesmas": "Puskesmas Ranai",
"noHp": "08123456789"
}Menu Pengaturan β Manajemen Akun β Isi form β Klik Daftar
Ini akan otomatis membuat akun di Firebase Auth + document di Firestore
| Menu | π‘οΈ Super Admin | π‘οΈ Admin | β Verifikator | π€ User Puskesmas |
|---|---|---|---|---|
| Dashboard | β Ringkasan Kabupaten | β Ringkasan Kabupaten | β Status Verifikasi | β Statistik Internal |
| Data Umum | β Full | β Full | β Validasi Data | β Input Profil |
| KESGA | β Full | β Full | β Review Laporan | β Input Laporan |
| P2P | β Full | β Full | β Review Laporan | β Input Laporan |
| SDK | β Full | β Full | β Review Laporan | β Input Laporan |
| Yankes | β Full | β Full | β Review Laporan | β Input Laporan |
| β Verifikasi | β Full | β Full | β Validasi | β Locked |
| ποΈ Penyimpanan | β Backup/Restore | β Backup/Restore | β Arsip Terverifikasi | β Simpan Draft |
| βοΈ Pengaturan | β Full | β Full | β Notifikasi | β Akun Saja |