Laravel 12 Rolleri ve İzinleri Kurulumu

Laravel 12 Rolleri ve İzinleri Kurulumu

Laravel 12 Rolleri ve İzinleri Kurulumu

Birçok web uygulamasında, kullanıcı erişimini rollere ve izinlere göre kontrol etmek hayati önem taşır. Örneğin, bir yönetici tüm özelliklere tam erişime ihtiyaç duyabilirken, normal bir kullanıcı yalnızca sınırlı izinlere sahip olabilir. Güçlü bir PHP çerçevesi olan Laravel, bu tür erişim kontrol mekanizmalarını uygulamak için mükemmel bir temel sağlar.Bu blog yazısında, popüler Spatie Laravel Permission paketini kullanarak bir Laravel 12 uygulamasına roller ve izinlerin nasıl ekleneceğini inceleyeceğiz. Bu paket, rollerin ve izinlerin yönetimini basitleştirerek Laravel projelerinize entegre edilmesini kolaylaştırır.Bu kılavuzun sonunda şunları nasıl yapacağınızı öğreneceksiniz:Spatie Laravel İzin paketini kurun ve yapılandırın.Roller ve izinler oluşturun.Kullanıcılara roller ve izinler atayın.Uygulamanızdaki rolleri ve izinleri kontrol edin.Rol ve izinlere dayalı ara yazılım kullanarak rotaları koruyun.Ön koşullar:Laravel 12 projesi kurulumu.Besteci kuruldu.Modeller, geçişler ve ara yazılımlar gibi Laravel kavramlarının temel bilgisi.Adım 1: Spatie Laravel İzin Paketini Yükleyinİlk adım Composer aracılığıyla Spatie Laravel Permission paketini kurmaktır. Terminalinizde aşağıdaki komutu çalıştırın: composer require spatie/laravel-permission Bu, paketi ve bağımlılıklarını projenize indirecektir.Adım 2: Paketi YapılandırınKurulumdan sonra, paketin geçiş dosyalarını yayımlamanız gerekir. Bu geçişler roller, izinler ve bunların ilişkileri için gerekli tabloları oluşturacaktır. Aşağıdaki komutu çalıştırın: php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" Bu, göç dosyalarını dizininize kopyalayacaktır database/migrations. Sonra, tabloları oluşturmak için göçleri çalıştırın: php artisan migrate HasRolesEk olarak, özelliği Kullanıcı modelinize ekleyin . app/Models/User.phpÖzelliği aşağıda gösterildiği gibi açın ve ekleyin: use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable, HasRoles; // ... } Adım 3: Rolleri ve İzinleri OluşturunArtık paket kurulduğuna göre, roller ve izinler oluşturabilirsiniz. Bunu çeşitli yollarla yapabilirsiniz, örneğin tohumlayıcılar aracılığıyla, denetleyicilerinizde veya konsol aracılığıyla. Bu örnekte, bazı roller ve izinler oluşturmak için bir tohumlayıcı kullanacağız.Öncelikle yeni bir seeder oluşturun: php artisan make:seeder RolesAndPermissionsSeeder Yeni oluşturulan seeder dosyasını açın database/seeders/RolesAndPermissionsSeeder.phpve aşağıdaki kodu ekleyin: use Illuminate\Database\Seeder; use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Permission; class RolesAndPermissionsSeeder extends Seeder { public function run() { // Create roles $adminRole = Role::create(['name' => 'admin']); $editorRole = Role::create(['name' => 'editor']); $userRole = Role::create(['name' => 'user']); // Create permissions $createPostPermission = Permission::create(['name' => 'create post']); $editPostPermission = Permission::create(['name' => 'edit post']); $deletePostPermission = Permission::create(['name' => 'delete post']); // Assign permissions to roles $adminRole->givePermissionTo($createPostPermission); $adminRole->givePermissionTo($editPostPermission); $adminRole->givePermissionTo($deletePostPermission); $editorRole->givePermissionTo($createPostPermission); $editorRole->givePermissionTo($editPostPermission); $userRole->givePermissionTo($createPostPermission); } } Bu ekici üç rol ( admin, editor, user) ve üç izin ( create post, edit post, delete post) oluşturur. Daha sonra her role belirli izinler atar.Seeder'ı çalıştırmak için aşağıdaki komutu kullanın: php artisan db:seed --class=RolesAndPermissionsSeeder Adım 4: Kullanıcılara Roller AtamakRoller oluşturulduktan sonra bunları kullanıcılara atayabilirsiniz. Örneğin, kontrol cihazınızda veya kullanıcı kaydı sırasında, şu şekilde bir rol atayabilirsiniz: use App\Models\User; use Spatie\Permission\Models\Role; $user = User::find(1); $role = Role::findByName('admin'); $user->assignRole($role); Alternatif olarak, bir kullanıcı oluştururken doğrudan rol atayabilirsiniz: $user = User::create([ 'name' => 'Admin User', 'email' => 'admin@example.com', 'password' => bcrypt('password'), ]); $user->assignRole('admin'); Adım 5: Rolleri ve İzinleri Kontrol EdinUygulamanızda, bir kullanıcının belirli bir role veya izne sahip olup olmadığını kontrol edebilirsiniz. Örneğin, bir denetleyicide: if ($user->hasRole('admin')) { // User is an admin } if ($user->hasPermissionTo('create post')) { // User can create posts } Koşullu oluşturma için görünümlerinizde Blade yönergelerini de kullanabilirsiniz: @role('admin') <p>You are an admin.</p> @endrole @permission('create post') Create Post @endpermission Adım 6: Rotaları Korumak için Ara Yazılımı KullanınRollere veya izinlere dayalı rotaları korumak için, paket tarafından sağlanan ara yazılımı kullanabilirsiniz. İlk olarak, ara yazılımı şuraya kaydedin app/Http/Kernel.php: protected $routeMiddleware = [ // ... 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, ]; Daha sonra ara yazılımı rotalarınıza uygulayın: Route::group(['middleware' => ['role:admin']], function () { Route::get('/admin', [AdminController::class, 'index']); }); Route::group(['middleware' => ['permission:create post']], function () { Route::get('/posts/create', [PostController::class, 'create']); }); ÇözümLaravel 12 uygulamanıza roller ve izinler eklemek Spatie Laravel Permission paketiyle basittir. Bu adımları izleyerek erişim denetimini verimli bir şekilde yönetebilir, kullanıcıların yalnızca yetkilendirildikleri eylemleri gerçekleştirebilmelerini sağlayabilirsiniz.Rollerinizi ve izinlerinizi beklendiği gibi çalıştıklarından emin olmak için iyice test etmeyi unutmayın. İzinleri doğrudan kullanıcılara atamak veya kapılar ve politikalar kullanmak gibi daha gelişmiş özellikler için resmi belgelere bakın.Bu kurulumla Laravel 12 uygulamanız kullanıcı yetkilendirmesini güvenli ve etkili bir şekilde yönetmek için iyi bir donanıma sahip olacak!

Haluk Ozyurt
Super-Admin