Proje: OkulUp · Hub: OkulUp — Domain

Permission Sistemi

İki Katmanlı Kontrol

1. Rol Tabanlı (Frontend Default)

PERMISSIONS map’inde her PermissionKey için roles: UserRole[] tanımlı.

2. Backend Permission (Override)

Login sonrası getMe()permissions: PermissionMap — backend’den gelen gerçek yetkiler. BACKEND_PERMISSION_MAP aracılığıyla PermissionKeyBackendPermissionKey eşlemesi yapılıyor. Backend permission varsa rol tabanlı kontrol devre dışı kalıyor (override ediyor).

3. MobileConfig Feature Flag (Disable)

isEnabled callback’i mobileConfig.features.* flaglarını kontrol ediyor. Feature kapalıysa kim olursa olsun erişim yok.

canAccess() Fonksiyonu

canAccess(role, feature, context)
// 1. isEnabled() → false ise return false
// 2. backend permission varsa → backend sonucunu döndür
// 3. yoksa → role tabanlı kontrol

canSeeNavigationItem(itemId, context) — navigation item’ın görünürlüğü getTabItems(context) → 5 elemanlı dinamik tab listesi getDrawerItems(context) → tüm drawer item’ları filtreli

Feature Permission Map (Tam Liste)

Feature KeyYetkili RollerMobileConfig Flag
announcements.viewALL
announcements.createSTAFF
messages.viewALLmessaging
messages.sendALLmessaging
messages.broadcastSTAFFmessaging + broadcast_messaging
events.viewALL
events.createSTAFF
events.rsvpALL
galleries.viewALLgallery
galleries.createSTAFFgallery
galleries.approveADMINgallery
attendance.viewALLattendance_reports
attendance.recordSTAFFattendance_reports
payments.viewALLpayment_summary
payments.manageADMINpayment_summary
tracking.viewALLtracking
tracking.create/updateSTAFFtracking
appointments.viewALLappointments
appointments.createadmin+manager+teacher+parentappointments
appointments.confirmSTAFFappointments
appointments.cancelALLappointments
reports.viewALLacademic_reports + attendance_reports
reports.exportSTAFFacademic_reports + attendance_reports
assignments.viewALLassignments (default OFF)
assignments.create/reviewSTAFFassignments
academicSummary.viewALLacademic_reports + attendance_reports
documentRequests.view/createadmin+manager+teacher+parentdocument_requests
mealMenus.viewALLmeal_menu
mealMenus.createADMINmeal_menu
users.manageADMIN

PermissionMap (Backend)

BackendPermissionKey union type — 50+ granüler permission. MeResponse içinde permissions: PermissionMap olarak geliyor. Auth store’a kaydediliyor, mobileConfig fetch’inde tekrar update ediliyor.

Önemli İncelikler

  • assignments özelliği default kapalı (mobileConfig.features.assignments === true olması gerekiyor, !== false değil!)
  • Diğer tüm feature’lar default açık (!== false pattern)
  • canAccessStudentScope() — teacher sadece kendi sınıfına ait öğrenci verisine erişebilir