Laravel’de Middleware (Kontrol) İşlemleri

Laravel

Merhabalar,
Bu yazımızda laravel’in bel kemiğini oluşturan Middleware’lerden bahsedeceğim, bunu Türkçe’ye çevirdiğimizde tam bir anlamı yok kimi yazılımcı ara katman olarak adlandırıyor ama ben bu sefer kontrol işlemleri olarak bahsedeceğim çünkü daha anlamada akılda kalmada önde olacaktır. Laravel’de middleware ne işe yarar diye sorarsanız şu şekilde anlaşılması daha uygun olacaktır. Tanımladığınız middleware sayesinde bazı koşullar sunuyoruz eğer bu koşullar kabul edilirse bu sayfaya erişim yapabilir hale geliyor bunu daha açıklanabilir hale getirirsek yazılımda karşılacağınız admin ve kullanıcı kısıtlamalarını middleware’ler ile yapabilmemiz çok mümkün ve kolaydır gelin şimdi işlemlere başlayalım.
Kullanıcımızın admin mi değil mi bunun kontrolünü sağlayacak middleware yazalım. Öncelikle user tablomuza rol adında string bir kolon ekleyelim ve ilgili kullanicimize bunu admin yazarak kayıt edelim.
Öncelikle User modelimize giderek bir AdminCheck diye bir method oluşturuyoruz ve alt kısımdaki gibi bir kontrol işlemi gerçekleştirelim.

public function AdminCheck()
{
if($this->rol == "admin")
{
return true;
}
return false;
}

Bu işlemin ardından AdminController isimli bir kontroller ekleyelim, ve içerisine index methodu yazalım
 

public function index()
{
return "Admin Sayfası";
}

Bu controller’e methodundan çalışmasını sağlayalım.

Route::get('/admin','AdminController@index');

Tüm bu işlemlerin ardından bir middleware tanımlıyoruz.

php artisan make:middleware AdminCheck

Oluşturduktan sonra Kernel.php dosyasını açarak bu middleware bir isim veriyoruz.
$routeMiddleware içerisine hemen altına yazıyoruz.

'AdminCheck' => \App\Http\Middleware\AdminCheck::class,

Bu işlemin sonucunda bu middleware kontrol edeceği ilgili controller’e gidecek construct methodu oluşturuyoruz.

    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('AdminCheck');
    }

Auth middleware tanımlamamızın nedeni kullanıcı giriş yapmış mı yapmamış mı kontrolüdür.
Daha sonra AdminCheck middleware Erişim yaparak haddle methoduna alt kısımdaki kodu yazıyoruz.

// Öncelikle Kullanıcı giriş yapmış mı bunu kontrol ediyoruz.
if(Auth::check()){
//Bu kısımda giriş yapan kullanıcımızın bilgilerini alıyoruz
$user = Auth::user();
// Bu kısımda user modeli içerisinde oluşturduğumuz AdminCheck methodunu kontrol edip buna göre bir cevap verdiriyoruz.
if($user->AdminCheck())
{
// Admin ise yoluna devam ediyor.
return next($request);
}
// Değilse geldiği sayfaya geri atıyor.
return redirect()->back();
}

Bu middleware ‘leri ilgili controller’e __construct ile kontrol edebiliyoruz fakat bunu route ile de yapmamız mümkün olacak.

Route::get('/admin','AdminController@index')->middleware(['AdminCheck','auth']);

Diğer bir şekliyle topluca route kontrol edeceğimiz zaman ise alt kısımdaki kodları uygulayabiliriz.

Route::group(['middleware' => ['AdminCheck','auth']],function(){
      Route::get('/admin','AdminController@index'));
});

Daha ayrıntılı bilgi için laravel dökümantasyonunu inceleyebilirsiniz.
Yararlı olabildiysem ne mutlu, Hatam var ise bildirilirse düzeltebilirim.

“Laravel’de Middleware (Kontrol) İşlemleri” üzerine 3 yorum.

  1. Çok teşekkürler emeğiniz için
    Laravel ile proje geliştiriyorum ancak veritabanından seçmeli bakım modunu yapamadım select box bakımda veya site açık diye kaydedip maintanceyi istedigim zaman göstermek şimdiden teşekkürler.

Bir cevap yazın