Proje: OkulUp · Hub: OkulUp — Domain
Kullanıcı Rolleri
5 Rol
| Role | ID | Türkçe | Kapsam |
|---|---|---|---|
admin | 1 | Yönetici | Platform geneli tüm yetkiler |
manager | 2 | Müdür | Okul bazlı yönetim yetkileri |
teacher | 3 | Öğretmen | Kendi sınıflarıyla sınırlı |
parent | 4 | Veli | Kendi çocuklarıyla sınırlı |
student | 5 | Öğrenci | Sadece kendine ait veriler |
Role ID Eşlemesi (Backend)
role_id int olarak backend’den geliyor. ROLE_NAME_MAP ile string’e çevriliyor.
getUserRole(user) helper: önce user.role?.name’e bakıyor, yoksa role_id ile map ediyor.
Rol Grupları (permissions.ts’de)
ALL_ROLES = ['admin', 'manager', 'teacher', 'parent', 'student']
STAFF_ROLES = ['admin', 'manager', 'teacher']
ADMIN_ROLES = ['admin', 'manager']Rol Bazlı Farklılıklar
Dashboard
Her rol için ayrı dashboard API endpoint’i ve ayrı component:
admin→AdminDashboard+AdminChartsmanager→ManagerDashboardteacher→TeacherDashboard(pending actions: today’s attendance)parent→ParentDashboard+ParentCharts(her çocuk için özet)student→StudentDashboard+StudentCharts
Dashboard rolü backend’deki dashboard_* permission’larına göre belirleniyor (getDashboardRole() fonksiyonu). Bir admin kullanıcı dashboard_teacher permission’ına sahipse teacher dashboard görür.
Scope (Veri Kapsamı)
- admin/manager: tüm verilere erişim
- teacher: sadece
user.classeslistesindeki sınıflar (pivot.role = ‘teacher’) - parent: sadece
user.childrenlistesindeki öğrenciler - student: sadece kendi verisi
getUserScope(user) → { role, classIds, studentIds, primaryStudentId } döner
Tab Quick Access
- admin → Reports
- manager → Attendance
- teacher → Attendance
- parent → Tracking (günlük takip)
- student → Assignments
Özel Durumlar
Parent-Student İlişkisi
user.children: User[] — velinin çocuklarının User nesneleri
user.parents: User[] — öğrencinin ebeveynleri
Pivot: ParentChildRelation { parent_id, child_id, relationship }
Teacher-Class İlişkisi
user.classes: ClassModel[] — öğretmenin sınıfları
Pivot: ClassUserPivot { class_id, user_id, role } — role ‘teacher’ veya ‘student’ olabilir
Single Student Parent
primaryStudentId: parent’ın tek bir çocuğu varsa otomatik seçili gelir, birden fazlaysa null (kullanıcı seçmeli)
Related
- permission-system — rol bazlı erişim kontrolü
- mobile-config-feature-flags — okul bazlı özellik kontrolü