Proje: OkulUp · Hub: OkulUp — Domain

Kullanıcı Rolleri

5 Rol

RoleIDTürkçeKapsam
admin1YöneticiPlatform geneli tüm yetkiler
manager2MüdürOkul bazlı yönetim yetkileri
teacher3ÖğretmenKendi sınıflarıyla sınırlı
parent4VeliKendi çocuklarıyla sınırlı
student5ÖğrenciSadece 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:

  • adminAdminDashboard + AdminCharts
  • managerManagerDashboard
  • teacherTeacherDashboard (pending actions: today’s attendance)
  • parentParentDashboard + ParentCharts (her çocuk için özet)
  • studentStudentDashboard + 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.classes listesindeki sınıflar (pivot.role = ‘teacher’)
  • parent: sadece user.children listesindeki öğ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)