Neredeyim ?

Muğla / Ortaca

Hızlı İletişim

buldurmert@gmail.com

Beni Takip Edebilirsin

Yazılarım

Laravel Controller __construct içinden Auth verisine erişmek

Laravel Controller __construct içinden Auth verisine erişmek

  • 3 dakika
  • 3 year ago

Herkese merhabalar, Bildiginiz gibi laravel construct methodlarının içinden direk olarak auth sınıfına erişim sağlayıp yönlendirme işlemi yapamıyoruz ama bunun için bir yöntem var size bu yazımda bu yöntemden bahsedeceğim.

Bir senaryomuz olsun bu senaryoda kullanıcı rolleri olsun Örnegin ADMIN,USER,SUPERADMIN şeklinde 3 farklı bir rollerimiz olsun.Biz istiyoruzki belirttiğimiz sayfaya Sadece Admin giriş yapabilsin.

( Bunu normal Middleware ilede yapabiliriz ama amacımız construct içinden nasıl yapılabildiğini öğrenmek )

Şimdi boş bir constructor nasıl duruyor inceleyelim.

<?php 
class indexController extends Controller
{

    public function __construct(){
        
    }
    
    /* Other Methods */
}

Göreceğiniz gibi sadece dashboard/index sayfası için oluşturulmuş bir construct şimdi bu constract içinden hem auth verisine erişicez hemde yönlendirme yapıcaz.Bunun için Controller içindeki middleware methodunu çağırmamız gerekiyor. Çağırımı şu şekildedir.

<?php 
 $this->middleware(function ($request, $next) { 
   /* Code */
});

Bunuda indexController içindeki construct methoduna dahil edelim ve son halini görelim.

<?php 
class indexController extends Controller
{

    public function __construct(){
        $this->middleware(function ($request, $next) {
            if(auth()->user()->role_id  != User::ADMIN){ // kullanıcı rolünü kontrol ediyoruz.

                return redirect()->back(); // işlem olumsuzsa geri gönderiyoruz.
            }
            return $next($request); // her şey düzgün giderse devam ettiriyoruz.
        });
    }

 

Yorumlar: