Beni Takip Edebilirsin
Laravel Controller __construct içinden Auth verisine erişmek
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: