Laravel'de middleware ile rol bazlı yetkilendirme işlemi yapma

Merhabalar,


Bu yazıda Laravel'de middleware kullanarak rol bazlı yetkilendirme işleminin nasıl yapılabileceğinden bahsedeceğim. Daha açık olmak gerekirse bu işlem sayesinde, örneğin Laravel'de bir Rest Api projesi geliştirirken "şu api'ye sadece şu role/rollere sahip kullanıcılar istekte bulunabilsin" diyebileceğiz.


Bu işlemi anlatırken daha önceden Laravel'de Passport kullanımı yazısında oluşturduğum proje üzerinden gideceğim. Bu yüzden eğer okuyup uygulamadıysanız öncelikle o yazıdakileri uygulamanızı tavsiye ederim.


İlk olarak register api'sine bir istekte bulunup kullanıcı kaydı yapıyorum. Sonrasında veritabanında bulunan users tablosuna role adında bir sütun ekliyorum. Ve mevcut kullanıcıma 1 rolünü veriyorum:



app/Http/Middleware klasörünü açarak CheckRole.php adında bir dosya oluşturuyorum ve içeriğini şu şekilde dolduruyorum:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class CheckRole
{
    public function handle($request, Closure $next, $roles)
    {
        $user = Auth::user();
        $need_roles = explode('|', $roles);
        if (in_array($user->role, $need_roles)) {
            return $next($request);
        }
        return response()->json(['message' => 'Yetkisiz giriş'], 401);
    }
}

Burada yapmış olduğumuz işlem şunu ifade ediyor; giriş yapan kullanıcının rol bilgisi istenilen rollerden birine sahipse işleme devam et, değilse 'Yetkisiz giriş' şeklinde hata mesajı döndür.


Oluşturduğumuz middleware'ı app/Http/Kernel.php dosyasının routeMiddleware kısmında tanımlıyoruz:

'roles' => \App\Http\Middleware\CheckRole::class


api.php dosyasını açarak deneme api'sine middleware'ı ekliyoruz:

Route::group(['middleware' => 'auth:api'], function () {
    Route::get('deneme', '[email protected]')->middleware('roles:1|2');
});


Artık deneme api'sine sadece 1 veya 2 rolündeki kullanıcılar istekte bulunabilecek. Postman üzerinden deneyerek sonucu görebilirsiniz.


İyi çalışmalar.

Yusuf Borucu

Benim adım Yusuf. 1993 yılında Şanlıurfa'da doğdum. 2015 yılında Bilecik Şeyh Edebali Üniversitesi'nde Bilgisayar Mühendisliği bölümünden mezun oldum. Şu anda özel bir şirkette Yazılım Geliştirici olarak çalışmaktayım. Yazılıma yönelik uğraştığım, sevdiğim ve ilgi duyduğum teknolojilerden bahsetmem gerekirse; Laravel, MySQL (mevcut çalıştığım şirkette uğraştıklarım). Asp.Net Mvc, MSSQL (önceden ça...

"Laravel'de middleware ile rol bazlı yetkilendirme işlemi yapma" için hiç yorum yapılmadı.

Henüz yorum yapılmamış.

Yorum yap * E-posta adresiniz yayınlanmayacak.