Proje: OkulUp · Hub: OkulUp — Decisions
Karar: İkili Permission Sistemi
Karar
Erişim kontrolü iki katmanlı:
- Frontend role map (default fallback)
- Backend PermissionMap override (gerçek kaynak)
canAccess(role, feature, context)
// Önce backend perm'e bakıyor, varsa onu kullanıyor
// Yoksa frontend rol tabanlı kontrole düşüyorWhy: Multi-tenant yapı — her okulun kullanıcıları farklı yetkilerle özelleştirilebiliyor. Sadece rol bazlı kontrol okul bazlı granüler konfigürasyonu desteklemez. Backend permission her login’de /api/me ile alınıyor, ayrıca /api/mobile-config ile de update ediliyor.
How to apply: Yeni feature eklerken:
PermissionKeyunion’a yeni key ekle (permissions.ts)PERMISSIONSmap’e rol tanımı ekleBACKEND_PERMISSION_MAP’e backend key eşlemesi eklecanSeeNavigationItemswitch’e ekle (navigation için)BackendPermissionKeyunion’a backend perm key ekle (auth.types.ts)MobileConfigFeatures’a flag ekle (gerekiyorsa)
Alternatif Değerlendirilen
Sadece backend permission — internet olmadan çalışmaz, ilk yükleme sırasında undefined state sorunları çıkar.
Related
- permission-system — detaylı permission tablosu
- mobile-config-feature-flags — feature flag katmanı