Skip to content

Role & Otorisasi ​

SiDesa memakai RBAC (Role-Based Access Control) multi-guard dengan 5 role dan permission granular.

Role Bawaan ​

Didefinisikan di database/seeders/RoleAndPermissionSeeder.php:

RoleLabelRingkasan Hak
superadminSuper AdministratorSeluruh permission + manajemen pengguna & matriks permission.
kadesKepala DesaLihat penduduk, persetujuan & TTE surat, kelola konten, lihat laporan.
perangkatPerangkat DesaOperator: kelola KK/penduduk, proses surat, template surat, konten, laporan.
rtKetua RTAkses admin terbatas: lihat penduduk wilayahnya, verifikasi surat tingkat RT.
wargaWargaHanya pengajuan surat mandiri di portal /citizen.

Daftar Permission ​

PermissionFungsi
admin.accessMasuk area /admin
users.manageKelola pengguna/role
settings.manageUbah pengaturan sistem
residents.view / residents.manageLihat / kelola data kependudukan
letters.requestAjukan surat (warga)
letters.verify_rtVerifikasi surat RT
letters.processProses verifikasi staf desa
letters.approvePersetujuan & TTE Kepala Desa
letters.manage_templatesKelola template surat
contents.manageKelola berita/halaman/galeri
reports.viewLihat laporan statistik

Middleware ​

Didaftarkan di app/Http/Kernel.php:

AliasKelasDipakai pada
adminAdminAccessSeluruh prefix /admin
roleEnsureUserHasRolerole:superadmin (manajemen user/role)
can / permissionEnsureUserHasPermissionCheck permission per menu/aksi
redirect.installedRedirectIfInstalledRute /install
(global)RedirectIfNotInstalledSemua rute → redirect ke /install bila belum terpasang

Prinsip Keamanan (wajib untuk kontributor) ​

  1. Akses berbasis wilayah (need-to-know): akun RT hanya melihat penduduk di RT-nya; implementasikan scope query, bukan hanya sembunyikan menu.
  2. Minimisasi paparan: gunakan accessor masked_nik / masked_family_card_number untuk menampilkan NIK/No KK.
  3. Audit trail: pembacaan data sensitif wajib tercatat (ResidentViewed, FamilyViewed, FamilyPdfDownloaded) via ttpryg/audit-engine.
  4. Setiap route admin wajib minimal bermiddleware ['auth', 'admin'].
  5. Escape output Blade ; {!! !!} hanya untuk konten WYSIWYG yang sudah di-purify.

Matriks Permission ​

Superadmin dapat mengelola matriks role ↔ permission di Admin → Pengguna → Role (/admin/roles/{role}).

Dokumentasi resmi proyek SiDesa