Lewati ke isi

Access Control & Capability Model

SSOT ringkas untuk relasi role, capability, navigation, feature flag, dan platform tier di frontend Scola.

Last verified: 2026-03-17


1. Prinsip Dasar

  • Otoritas final tetap ada di backend: ACL, record rule, dan entitlement domain.
  • Guard frontend berfungsi untuk UX, fail-closed navigation, dan mencegah fitur bocor antar role atau antar tier.
  • Tier package tidak boleh ditentukan hanya dari menu; harus konsisten di auth payload, feature flags, route guard, dan backend entitlement.

2. Lapisan Source of Truth

Lapisan Fungsi File utama
Auth payload Menentukan role aktif, daftar role, permission list, platform_tier, dan entitlement tenant src/stores/auth.store.js
Capability registry Mendefinisikan kemampuan per role dan fallback capability FE src/config/roleCapabilities.js
Menu registry Menentukan informasi arsitektur menu per role src/config/menuRegistry.js
Navigation policy Menentukan bottom bar, launcher, dan quick access src/config/menuNavigationPolicy.js
Route guard Menegakkan auth, role scope, capability, feature flag, dan minimum tier src/router/index.js
Feature flag + tiering Menentukan modul premium dan minimum package src/config/featureFlags.js, src/config/platformTiers.js

3. Aturan Implementasi

Saat menambah route atau menu baru: 1. Tambahkan capability yang jelas, jangan hanya mengandalkan role string. 2. Jika fitur termasuk modul premium, beri featureFlag eksplisit atau pastikan capability/route dapat diinfer oleh platformTiers. 3. Pastikan route ada di menuRegistry jika memang user-facing. 4. Pastikan menuNavigationPolicy tidak menunjuk route yang tidak ada. 5. Tambahkan test guard jika perubahan menyentuh boundary role, feature flag, atau package tier.

Kontrak auth payload FE yang sekarang didukung: - platform_tier bisa datang dari top-level payload, entitlements, tier_entitlements, atau subscription.plan. - entitlement feature flags bisa datang sebagai map (feature_flags, module_flags, flags) atau allowlist/blocklist (enabled_features, allowed_features, disabled_features, blocked_features). - FE me-reset runtime feature flags setiap pergantian sesi/login agar tidak ada leak antar tenant atau antar role switch flow.


4. Boundary yang Sudah Aktif di FE

Boundary yang saat ini sudah dijaga di FE: - role-scoped route guard untuk student dan parent portal - feature flag guard untuk modul seperti CBT - platform tier guard untuk LMS, CBT, inventory, accounting, library, RFID, dan face recognition - menu filtering berdasarkan capability, feature flag, dan minimum tier

Catatan: - FE guard ini penting, tetapi tidak menggantikan backend security. - Jika FE dan BE berbeda hasil, backend harus dianggap sumber kebenaran terakhir.


5. Referensi Verifikasi