Öncelikle roller oluşturmalısınız. Roller Yönetici, Editör, Kullanıcı, Muhasebeci, Patron gibi kişileri temsil eder.
$adminRole = Role::create(['name' => 'admin']);
$accountantRole = Role::create(['name' => 'accountant']);
gibi.
Sonra insanların yapabilecekleri eylemleri de izin olarak oluşturmalısınız. Mesela resimleri silebilir, müzik ekleyebilir, faturaları gönderebilir gibi. İzinler eylemleri temsil eder.
$permissionEditImages = Permission::create(['name' => 'edit-images']);
$permissionDeleteContacts = Permission::create(['name' => 'delete-contacts']);
$permissionCreateInvoice = Permission::create(['name' => 'create-invoice']);
Daha sonra izinleri rollere bağlarsınız. Yani her rol hangi eylemlere sahiptir bunu belirtirsiniz.
$adminRole->givePermissionTo($permissionEditImages);
$accountantRole->givePermissionTo($permissionDeleteContacts);
$accountantRole->givePermissionTo($permissionCreateInvoice);
Sonra da kullanıcılara (User modelinden elde ettiğiniz) rol tanımlarsınız.
$user->assignRole('accountant');
En son olarak da rotaları middleware ile korursunuz.
https://spatie.be/docs/laravel-permission/v3/basic-usage/middleware#package-middleware
Route::group(['middleware' => ['role:accountant']], function () {
// Accountant rolündeki herkes bu rotalara ulaşır.
});
Route::group(['middleware' => ['permission:create-invoice']], function () {
// Create Invoice iznine sahip tüm roller bu rotaya ulaşır.
});
*Bir rol bir sürü izne sahip olabilir.
*Bir izin bir sürü rolde bulunabilir.
*Bir kullanıcı bir sürü role sahip olabilir.
*Bir kullanıcı herhangi bir role sahip olmadan doğrudan bir izne de sahip olabilir.
*Dökümantasyon okumanız yukarıdaki her şeyden daha önemlidir.
https://spatie.be/docs/laravel-permission/v3/introduction
Bu kadar basit. 🙂 Kolay gelsin.