Proje: OkulUp API · Hub: OkulUp API — Domain
OkulUp API — Rol ve Yetki Mimarisi
5 Rol
| Rol | Türkçe | School-Scoped? | Açıklama |
|---|---|---|---|
admin | Sistem Yöneticisi | Hayır | Tüm okullara erişir |
manager | Okul Müdürü | Evet | Kendi okulunu yönetir |
teacher | Öğretmen | Evet | Kendi sınıflarını yönetir |
parent | Veli | Evet | Çocuklarının verilerine erişir |
student | Öğrenci | Evet | Kendi verilerine erişir |
AuthorizationService — Merkezi Yetki
app/Services/AuthorizationService.php tüm yetki kontrolleri için tek nokta.
Temel Metodlar
canManageUser(User $actor, User $target): bool
canAssignUserRole(User $actor, int $roleId): bool
canAssignUserSchool(User $actor, ?int $schoolId): bool
canAccessStudent(User $user, int $studentId): bool // çok kullanılan
canAccessClass(User $user, int $classId): bool
validateStudentFilter(User $user, ?int $studentId, string $context): ?int
validateClassFilter(User $user, ?int $classId, string $context): ?int
getAccessibleStudentIds(User $user): ?Collection // null = admin = tümü
getAccessibleClassIds(User $user): ?Collection
getPermissions(User $user): array<string, bool> // /me ve /mobile/config
logUnauthorizedAccess(User $user, ...): void // AuditLog + Log::warningcanAccessStudent Kuralları
| Rol | Kural |
|---|---|
| admin | Her zaman true |
| manager | Aynı school_id |
| teacher | Kendi sınıflarındaki öğrenciler |
| student | Sadece kendi ID’si |
| parent | children() pivot tablosundaki öğrenciler |
Kullanıcı Yönetimi Hiyerarşisi
- admin → tüm rolleri oluşturabilir (admin dahil)
- manager → teacher, parent, student oluşturabilir (kendi okulu)
- teacher, parent, student → kimseyi yönetemez
Yetki İhlali Loglama
Yetkisiz erişim hem Log::warning hem de audit_logs tablosuna yazılır. Context string ile hangi endpoint’ten geldiği de kaydedilir.
permissions Map — /me endpoint
getPermissions() metodunun döndürdüğü ~30 adet true/false flag, mobil uygulamanın hangi UI elementlerini göstereceğini belirler.
Örnek: dashboard_teacher, assignments_submit, payments_create vb.
Related
- feature-flag-sistemi — özellik bazlı kısıtlamalar (SchoolSetting üzerinden)
- veritabani-sema — student_parent ve class_user pivot tabloları