Middleware http isteğinden önce ya da sonra yüklenen bir sınıf. İçerisindeki handle yöntemi otomatik olarak ateşleniyor. Burada istediğiniz işlemi yaptırıp ona göre isteğe devam mı etsin, istekten önce bir şey mi yapsın yoksa başka bir şey mi yapsın, belirliyorsunuz.
Mesela:
app/Http/Middleware/CheckAdmin.php
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAdmin
{
public function handle($request, Closure $next)
{
// Kullanıcı tablosunda role diye bir alan olduğunuz düşünelim
// Bu alan değeri "admin" değilse işlemi 401 (Yetkiniz yok) hata kodu ile keselim
if(!auth()->user()->role == 'admin') {
return abort(401);
}
// Her şey yolunda ise http isteği devam etsin
return $next($request);
}
}
Daha sonra bu middleware'i app/Http/Kernel.php içerisindeki $routeMiddleware dizisine bir isim vererek ekliyoruz:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
// Buraya ekleyelim
'admin' => \App\Http\Middleware\CheckAdmin::class,
];
Şimdi istekten önce admin kontrolü yapılmasını istediğimiz rotaya ekliyoruz:
Route::group(['middleware' => 'admin','prefix' => 'admin'], function() {
Route::resource('users','UserController');
Route::resource('settings','SettingController');
// ... gibi
});
Basit ve hızlı bir örnek.
https://laravel.com/docs/5.2/middleware bu kısmı inceleyin.