Örneklerle Laravel Permission : Kullanıcı Grupları ve Yetkileri

Laravel permission spatie tarafından geliştirilmiş ve çok popüler bir laravel paketi. Bu paket ile kullanıcı grupları ve yetkileri oluşturabilirsiniz ve bunları kolayca düzenleyebilirsiniz. Laravel blade ve route middleware uyumlu olduğu için kolayca yetki ve erişim kontrolü de sağlayabilirsiniz.

Bu yazımızda laravel-permission ile nasıl kullanıcı grupları ve yetkileri tanımlıyıcaz ve yöneticez bundan bahsedicez.

Kurulum

1) Kurulum komutu ile projemize laravel-permission paketini dahil edebiliriz ilk adım olarak.

 composer require spatie/laravel-permission

2) Ardından migration ve config dosyalarını gerekli dizinlere taşımak için aşağıdaki komutu çalıştırıyoruz.

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

Bu komutun ardından migration ve config dizinlerinde yeni dosyalar oluştuğunu görebilirsiniz.

3) Laravel projemizin cache’sini temizlemeliyiz ve böylelikle eklenen config dosyaları tanınacaktır.

 php artisan optimize:clear

4) Gerekli tabloların da oluşturulabilmesi için migration komutunu çalıştırmamız gerekiyor.

php artisan migrate

5) Kullanıcılar için kullandığımız modelimize gerekli ek fonksiyonları eklemek için HasRoles trait’i User.php modelimize ekliyoruz. Projenizde başka bir model ismi kullanıyorsanız sizin için değişecektir.

use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;

    // ...
}

Bu adımla birlikte artık kurulumumuz tamamlandı.

Terimler ve İşleyiş

Öncelikle neyi anlatacağımızı sizlere kısaca özetleyelim sonuçta kullanıcı grup ve yetkileri ile ilk kez uğraşanlar da olacaktır.

Kullanıcı

Sistemimize üye olan ve yetkilerini kısıtlamak veya artırmak istediğimiz kişi.

Yetki

Bir eyleme izin vermemiz için o eyleme verdiğimiz isim.

Kullanıcı grubu

Admin, editör, üye gibi isimler verebildiğimiz ve kullanıcılar ve yetkiler arasında bir köprü oluşturan yapıdır. Kullanıcı grubuna verdiğimiz yetki o gruba ait tüm kullanıcılara otomatik verilmiş olur ve yeni eklenen kullanıcılar da aynı şekilde bu yetkilere sahip olacaktır.

Örnekler

Basit ama güçlü örneklerle kütüphanemizi nasıl kullanacağımızı anlatalım.

Yetki Oluşturmak

use Spatie\Permission\Models\Permission;

$permission = Permission::create(['name' => 'makale_duzenle']);

Kullanıcı Grubu Oluşturmak

Kullanıcı grupları her projede kullandığımız en önemli yapılardan birisi. Kullanıcı gruplarının önemi belirlediğimiz yetkileri bu gruplara atayarak sonrasında bu gruplara eklediğimiz kullanıcıların bu grubun tüm yetkilerine sahip olmasıdır.

Örneğin yönetici grubuna bir sayfayı görüntüleme yetkisi verdik artık bu gruba ekli olan ve gelecekte eklenen tüm kullanıcılar bu yetkiye sahip olacaktır. Böylelikle yetkilerimizi yönetmemizi sağlayacaktır.

use Spatie\Permission\Models\Role; 

$role = Role::create(['name' => 'yazar']);

Kullanıcı Grubuna Yetki Atamak

Yukarıda oluşturduğumuz iki kodu birleştirerek kullanıcı grubuna yetki ataması yapalım.

use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

$role = Role::create(['name' => 'yazar']);
$permission = Permission::create(['name' => 'makale_duzenle']);


$role->givePermissionTo($permission);
$permission->assignRole($role);

Birden fazla yetkili kullanıcı grubuna senkronize etmek

Bu işlemi yaparken eski yetkilerin silineceğini bilmeliziniz.

$role->givePermissionTo($permission);
$permission->assignRole($role);

Kullanıcı grubunun yetkisini silmek

Belirli bir yetkiyi aşağıdaki şekilde silebilirsiniz.

$role->revokePermissionTo($permission);
$permission->removeRole($role);

Yetki veya Kullanıcı Grubu Aramak

Normal bir eloquent modelinde arama yapar gibi role ve gruplarda arama yapabilirsiniz.

$makale_duzenle_yetkisi = Permission::where('name','makale_duzenle')->first();

Aynı şekilde kullanıcı grubu araması da araması da yapabilirsiniz.

$yazar = Role::where('name','yazar')->first();

Kullanıcıya rol atama

$kullanici = User::find(1);
$yazar_rolu = Role::where('name','yazar')->first();

$kullanici->addRole($yazar_rolu);

// veya

$kullanici->addRole('yazar');

Kullanıcı rol’e veya yetkiye sahip mi ?

$kullanici = User::find(1);

$rol_kontrol = $kullanici->hasRole('yazar');
$yetki_kontrol = $kullanici->has

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Alışveriş Sepeti
Hemen iletişime geçin!