Skip to content

RBAC — Peran & Izin

Ringkasan

Sistem RBAC (Role-Based Access Control) mengelola semua otorisasi di platform Sutomo. Sistem ini dibangun di atas Spatie Permission dan diintegrasikan melalui Filament Shield. Setiap tindakan pengguna — melihat halaman, membuat catatan, mengedit pengaturan — diperiksa melalui gate izin.

Konsep Kunci

KonsepDeskripsi
Peran (Role)Sekelompok izin bernama (misal: super_admin, admin, teacher, staff). Pengguna dapat diberikan satu atau lebih peran.
Izin (Permission)Hak akses granular (misal: ViewGeneral:SystemSetting, EditCandidate:Candidate).
GuardGuard auth yang menjadi lingkup izin (web untuk panel admin, api untuk API).
Super AdminMelewati semua pemeriksaan izin. Didefinisikan melalui konfigurasi filament-shield.super_admin.

Konvensi Penamaan Izin

Izin mengikuti konvensi:

{Action}{Resource}:{Module}
BagianContohDeskripsi
ActionView, Create, Edit, DeleteOperasi yang diperiksa
ResourceGeneral, Mail, CandidateFitur atau halaman yang diakses
ModuleSystemSetting, CandidateLingkup modul (PascalCase)

Contoh:

  • ViewGeneral:SystemSetting — Melihat halaman pengaturan umum
  • EditMail:SystemSetting — Mengedit konfigurasi email
  • ViewAny:Candidate — Menampilkan semua kandidat
  • Delete:Candidate — Menghapus catatan kandidat

Diagram Alir — Pemeriksaan Izin

Diagram alir berikut mengilustrasikan bagaimana izin dievaluasi saat pengguna melakukan suatu tindakan:

Penjelasan:

  1. Saat pengguna mencoba melakukan tindakan, autentikasi diperiksa terlebih dahulu.
  2. Key izin di-resolve dari resource/halaman Filament (misal: ViewGeneral:SystemSetting).
  3. Middleware Filament Shield memeriksa gate otorisasi terhadap peran yang diberikan ke pengguna.
  4. Pengguna super admin melewati semua pemeriksaan izin.
  5. Akses yang tidak sah menghasilkan respons 403 Forbidden.

Diagram Alir Data

Level 1 — Sistem RBAC


Diagram Aktivitas — Siklus Hidup Penugasan Peran


Database

Entity Relationship Diagram

Tabel Kunci

TabelTujuan
rolesDefinisi peran bernama dengan guard
permissionsDefinisi izin granular dengan guard
role_has_permissionsMemetakan izin mana yang dimiliki setiap peran
model_has_rolesMemetakan peran mana yang diberikan ke setiap pengguna
model_has_permissionsPenugasan izin langsung (jarang digunakan)

File Kunci

app/
└── Filament/
    └── Resources/
        └── Candidates/
            └── CandidateResource.php    # Contoh: HasShieldPermissions

config/
├── permission.php                       # Konfigurasi Spatie Permission
└── filament-shield.php                  # Konfigurasi Filament Shield

└── Providers/
    └── FilamentServiceProvider.php      # Registrasi Shield