Roller ve Yetkiler
Bu proje, spatie/laravel-permission paketini config/permission-resources.php icindeki config tabanli ek katmanla birlikte kullanir.
Yetkiler nereden uretilir
Yetkiler uc kaynaktan olusturulur:
resourcessub_resourcescustom_permissions
Mevcut projeden ornekler:
users.readroles.updateactivity-logs.readpulse.readapi-docs.read
Varsayilan roller
Uygulama su varsayilan rolleri seed eder:
system_adminadminuser
Varsayilan rollerin yetkileri de config/permission-resources.php icinde tanimlidir.
Sync sureci
database/seeders/_01_RolePermissionSeeder.php su islemleri yapar:
- config'te tanimli permission'lari olusturur
- sub-resource permission'larini olusturur
- custom permission'lari olusturur
- artik config'te olmayan orphan permission'lari siler
- varsayilan rolleri olusturur ve gunceller
Admin panelde ayrica sadece system_admin kullanicilarinin calistirabildigi bir permission sync aksiyonu vardir.
Otomatik route-to-permission esleme
app/Http/Middleware/CheckResourcePermission.php, route isimlerini permission string'lerine donusturur.
Ornekler:
users.index -> users.readusers.store -> users.createusers.edit -> users.updateusers.destroy -> users.delete
Route middleware icinde acik bir permission verilirse o deger dogrudan kullanilir.
Sub-resource destegi
Middleware, type query parametresi ile sub-resource permission'larini da destekler.
Ornek:
- route permission:
users.read - mevcut URL:
/users?type=student - cozulmus permission:
users:student.read
Bu davranis sadece ilgili scoped permission veritabaninda varsa uygulanir.
Frontend kullanim
Composable
Sayfa ve bilesenlerde @/composables/useCan kullanilir.
const { can, canAny, hasRole } = useCan();
Vue direktifleri
Frontend permission plugin'i su direktifleri kaydeder:
v-canv-role
Ornekler:
vue<Button v-can="'users.create'" />
<Button v-can:any="['users.create', 'users.update']" />
<div v-role="'system_admin'">Sadece sistem yoneticileri icin</div>
Yeni korumali alan eklerken pratik akis
config/permission-resources.phpicine resource ve ability tanimini ekle.- Permission sync akisini tekrar calistir.
- Route'lari
check.permissionile koru. - Frontend tarafinda gereken yerde
useCan()veyav-cankullan.