Middleware

Crear el middleware:
php artisan make:middleware CheckAge

En el Http\Kernel.php añadir en $routeMiddleware (pq solo lo vamos a ejecutar en unas rutas concretas, sino se pondría en el global):
'es_mayor_de_edad' => \App\Http\Middleware\CheckAge::class

En el middleware creado (CheckAge.php):
public function handle($request, Closure $next)
    {
        if ($request->age < 18) {
            return redirect('home');
        }
        return $next($request);
    }

En routes/web.php:
Route::get('front.garci-list', 'GarciController@frontGarciList')->name('front.garci-list')->middleware('es_mayor_de_edad');

De esta manera la url: http://localhost/edc_laravel/public/front.garci-list?age=19
Entra perfectamente en el controlador de frontGarciList
La url: http://localhost/edc_laravel/public/front.garci-list?age=16
Se redirige a home sin llegar a entrar en el controller

Se pueden poner varios middleware, por ejemplo:
Route::get('front.garci-list', 'GarciController@frontGarciList')->name('front.garci-list')->middleware('auth','es_mayor_de_edad');
Ejecutaría primero el auth, luego el de 'es_mayor_de_edad' y si pasa el filtro de todos ya se redirige correctamente al controller.

No hay comentarios:

Publicar un comentario