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 PermissionKey → BackendPermissionKey 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ı kontrolNavigation Visibility
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 Key | Yetkili Roller | MobileConfig Flag |
|---|---|---|
| announcements.view | ALL | — |
| announcements.create | STAFF | — |
| messages.view | ALL | messaging |
| messages.send | ALL | messaging |
| messages.broadcast | STAFF | messaging + broadcast_messaging |
| events.view | ALL | — |
| events.create | STAFF | — |
| events.rsvp | ALL | — |
| galleries.view | ALL | gallery |
| galleries.create | STAFF | gallery |
| galleries.approve | ADMIN | gallery |
| attendance.view | ALL | attendance_reports |
| attendance.record | STAFF | attendance_reports |
| payments.view | ALL | payment_summary |
| payments.manage | ADMIN | payment_summary |
| tracking.view | ALL | tracking |
| tracking.create/update | STAFF | tracking |
| appointments.view | ALL | appointments |
| appointments.create | admin+manager+teacher+parent | appointments |
| appointments.confirm | STAFF | appointments |
| appointments.cancel | ALL | appointments |
| reports.view | ALL | academic_reports + attendance_reports |
| reports.export | STAFF | academic_reports + attendance_reports |
| assignments.view | ALL | assignments (default OFF) |
| assignments.create/review | STAFF | assignments |
| academicSummary.view | ALL | academic_reports + attendance_reports |
| documentRequests.view/create | admin+manager+teacher+parent | document_requests |
| mealMenus.view | ALL | meal_menu |
| mealMenus.create | ADMIN | meal_menu |
| users.manage | ADMIN | — |
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 === trueolması gerekiyor,!== falsedeğil!)- Diğer tüm feature’lar default açık (
!== falsepattern) canAccessStudentScope()— teacher sadece kendi sınıfına ait öğrenci verisine erişebilir
Related
- user-roles — rol tanımları
- mobile-config-feature-flags — feature flag detayları