Laravel Yetkilendirme: Kullanıcı İzinleri ve Grupları Oluşturmak

Merhaba bu makalede Laravel’in çok fazla kullanılan paketlerinden biri olan spatie/laravel-permission paketini kullanarak kullanıcı grupları (Rol) ve kullanıcı izinleri (yetkileri) oluşturucaz.

Rol: kullanıcı grubu olarak da adlandırabileceğimiz üyemizin türü.

Permission: adının türkçe karşılığından da anlaşılabileceği gibi rolümüze verevceğimiz izinler.

3 tip kullanıcımız olacak. Yazar yazı okuma, yazma, düzenleme izinlerine sahip olucak, okuyucu sadece okuma iznine sahip olucak. admin ise tüm izinlere sahip olucak.

1.Yazar

2.Okuyucu

3.Admin

Benim kullandığım laravel sürümü 7, bu paket laravel 5.8 ve üzerini destekliyor bunu da bilmenizde yarar var.

Paketimizi laravel projemize aşağıdaki kodu çalıştırarak dahil edebiliriz.

 composer require spatie/laravel-permission

Şu an laravel projemize paketi dahil ettik fakat ufak tefek bazı düzenlemeler daha yapmamız gerekiyor.

İlk düzenleem paketimizin serviceprovider’ini register etmemiz olacak.

Spatie\Permission\PermissionServiceProvider::class,

Yukarıdaki service provider’i eklediğimizde görüntü şu şekilde olmalı.

Şimdi sırada migration işlemimiz var üye tablonuzun kurulu olduğunu varsayıyorum. Daha önceden laravel auth aktif etmediyseniz ve üye giriş – üye ol sayfalarını oluşturmadıysanız oluşturup derse devam edin.

Şimdi öncelikle 3kullanıcı ekliyoruz sisteme laravel hazır üye ol sayfasından üye olabilirsiniz.

User model’e kullanacağımız bazı metodlar için Trait ekliyoruz

use HasRoles;

Üyelerimizin id’leri [1,2,3] olsun

Öncelikle Role ve Permission oluşturmak için namespace’leri sayfamızın en üstüne ekliyoruz.

<?php
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
?>

Şimdi sırada oluşturduğumuz controller içine create adında bir fonksiyon oluşturuyoruz basitçe bu fonksiyon içinde oluşturmak istediğimiz rol ve permissionları oluşturucaz.

<?php
//kullanızı türlerini yani grupları oluşturuyoruz
Role::create(["name" => "writer"]);// id 1
Role::create(["name" => "reader"]);// id 2
Role::create(["name" => "superadmin"]); // id 3

//izinleri oluşturuyoruz
Permission::create(["name" => "edit post"]); // id 1
Permission::create(["name" => "read post"]); // id 2
Permission::create(["name" => "add user"]);// id 3


//yazar'a yazma,okuma iznini veriyoruz

$yazmaizni = Permission::findById(1);
$okumaizni = Permission::findById(2);

$yazar = Role::findById(1);

$yazar->givePermissionTo($yazmaizni);
$yazar->givePermissionTo($okumaizni);

//kullanıcıya yazar rolünü veriyoruz
$user1 = User::findById(1);
$user1->assignRole('writer');

//kullanıcının yazmaizni varmı kontrol ediyoruz 

if($user1->hasRole('writer')){
    //kullanıcı yazma iznine sahip
}else{
    //kullanıcı yazma iznine sahip değil
}

?>

Dosyamızı kaydedip controller’i tarayıcıda çalıştırıyoruz ve role ve izinleri oluşturuyoruz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir