Skip to main content

RBAC Sistemi

Rol Tabanlı Erişim Kontrolü (Role-Based Access Control) sistemi detayları.

Genel Bakış

RBAC sistemi, kullanıcıların yetkilerini rollere ve permission'lara göre yönetir. Sistem, hiyerarşik bir yapı kullanarak güvenliği sağlar.

Rol Hiyerarşisi

Roller, priority değerine göre sıralanır. Düşük priority değeri = Yüksek yetki mantığı ile çalışır.

Sistem Rolleri

RolPriorityAçıklamaGizli Anahtar
system.toor1Sistem seviyesinde erişimEvet (X-Role-Secret header)
server.root2Sunucu seviyesinde erişimEvet (X-Role-Secret header)

Yönetim Rolleri

RolPriorityAçıklama
mgmt.superadmin10Tam yetkili erişim
mgmt.admin20Yönetici seviyesinde erişim
mgmt.moderator30Moderasyon seviyesinde erişim
mgmt.editor40Editör seviyesinde erişim
mgmt.user50Kullanıcı seviyesinde erişim
mgmt.anonymous60Anonim seviyede erişim

Permission Sistemi

Permission Tanımlama

Permission'lar controller'larda getPermissions() metodu ile tanımlanır:

public static function getPermissions(): array
{
return [
['slug' => 'users.manage', 'name' => 'Kullanıcı Yönetimi - Tam Yetki'],
['slug' => 'users.view', 'name' => 'Kullanıcı Görüntüleme'],
['slug' => 'users.view.own', 'name' => 'Kendi Profilini Görüntüleme'],
// ...
];
}

Rol-Permission Atamaları

Rol-permission atamaları controller'larda getDefaultRolePermissions() metodu ile tanımlanır:

public static function getDefaultRolePermissions(): array
{
return [
'mgmt.superadmin' => [
'users.manage', 'users.view', 'users.view.own',
// ...
],
'mgmt.admin' => [
'users.view', 'users.view.own',
// ...
],
];
}

Permission Pattern'leri

PatternAçıklamaÖrnek
{module}.manageModül tam yetkiusers.manage
{module}.viewModül görüntülemeusers.view
{module}.view.ownKendi kaynaklarını görüntülemeusers.view.own
{module}.createModül oluşturmausers.create
{module}.create.ownKendi kaynaklarını oluşturmausers.create.own
{module}.updateModül güncellemeusers.update
{module}.update.ownKendi kaynaklarını güncellemeusers.update.own
{module}.deleteModül silmeusers.delete
{module}.delete.ownKendi kaynaklarını silmeusers.delete.own
{module}.restoreModül geri yüklemeusers.restore
{module}.restore.ownKendi kaynaklarını geri yüklemeusers.restore.own

Hiyerarşi Kontrolü

Rol Hiyerarşisi

Kullanıcılar sadece kendi seviyelerinden düşük seviyeli rolleri yönetebilir:

  • Kullanıcı priority: 20 rolüne sahipse, sadece priority > 20 rolleri oluşturabilir/güncelleyebilir/silebilir
  • Sistem rolleri (system.toor, server.root) için gizli anahtar gereklidir

Permission Hiyerarşisi

Permission'lar da priority değerine göre sıralanır:

Permission PatternPriorityAçıklama
admin.manage10En yüksek yetki
admin.*20Admin seviyesi
*.manage30Modül yönetimi
*.*40Standart permission'lar
*.own50Kendi kaynak permission'ları

Sistem Rolleri

Özellikler

  • Tüm permission kontrollerini otomatik bypass eder
  • Tüm permission'lar otomatik atanır (RoleSeeder'da)
  • Gizli anahtar ile korunur (ROLE_SYSTEM_SECRET)

Gizli Anahtar Kullanımı

Sistem rolleri için gizli anahtar gereklidir:

Ortam Değişkeni:

ROLE_SYSTEM_SECRET=your-secret-key

Header:

X-Role-Secret: your-secret-key

Body (Opsiyonel):

{
"secret": "your-secret-key"
}

Kullanıcı Permission'ları

Permission Kaynakları

Kullanıcılar permission'ları iki kaynaktan alabilir:

  1. Role'lerden: Kullanıcının rolleri üzerinden gelen permission'lar
  2. Kullanıcıya Özel: Kullanıcıya doğrudan atanmış permission'lar

Permission Kontrolü

Permission kontrolü şu sırayla yapılır:

  1. Sistem rolü kontrolü (varsa bypass)
  2. Kullanıcıya özel reddedilmiş permission kontrolü
  3. Kullanıcıya özel verilmiş permission kontrolü
  4. Role'lerden gelen permission kontrolü

.own Permission'ları

.own uzantılı permission'lar, kullanıcının sadece kendi kaynaklarını yönetmesine izin verir:

  • users.view.own: Sadece kendi profilini görüntüleme
  • users.update.own: Sadece kendi profilini güncelleme
  • users.delete.own: Sadece kendi hesabını silme

API Endpoint'leri

Roller

  • GET /api/v1/roles - Rol listesi
  • POST /api/v1/roles - Rol oluştur
  • GET /api/v1/roles/{id} - Rol detayı
  • PUT/PATCH /api/v1/roles/{id} - Rol güncelle
  • DELETE /api/v1/roles/{id} - Rol sil
  • POST /api/v1/roles/{id}/restore - Rol geri yükle

Permission'lar

  • GET /api/v1/permissions - Permission listesi
  • POST /api/v1/permissions - Permission oluştur
  • GET /api/v1/permissions/{id} - Permission detayı
  • PUT/PATCH /api/v1/permissions/{id} - Permission güncelle
  • DELETE /api/v1/permissions/{id} - Permission sil
  • POST /api/v1/permissions/{id}/restore - Permission geri yükle

Rol-Permission İlişkileri

  • POST /api/v1/roles/assign-permission - Role permission ata
  • POST /api/v1/roles/remove-permission - Role permission kaldır

Kullanıcı-Rol İlişkileri

  • POST /api/v1/users/assign-role - Kullanıcıya rol ata
  • POST /api/v1/users/remove-role - Kullanıcıdan rol kaldır

Kullanıcı Permission'ları

  • GET /api/v1/users/{user}/permissions - Kullanıcı permission listesi
  • POST /api/v1/users/{user}/permissions - Kullanıcıya permission ata
  • PUT/PATCH /api/v1/users/{user}/permissions/{permission?} - Kullanıcı permission güncelle
  • DELETE /api/v1/users/{user}/permissions/{permission?} - Kullanıcıdan permission kaldır

Detaylı bilgi için RBAC API Referansı sayfasına bakın.

İlgili Dokümantasyon