Como Crear middleware Laravel paso a paso


Escrito por zEOCk hace hace 9 meses

Compartir En redes Sociales

Facebook WhatsApp Youtube

Un middleware nos permite restringir módulos a usuarios no permitidos y en esta guía te enseñaremos a cómo puedes dar acceso al panel administrativo, solamente a los que tenga el rol de administrador y no a los que solamente inicien sesión sin tener ningún rol.
Créalos y utilízalos de la manera más fácil y practica posible, siguiendo los pasos siguientes:


1 - Creamos un campo role en la table users


Lo primero que tenemos que hacer, es crear un campo role de tipo integer en la tabla users, el cual va guardar el dato 1 si es admin y 0 si no es administrador, asi que creamos una migracion para agregar este campo.

php artisan make:migration add_role_to_users


Una vez creada la migración la abrimos y agregamos el campo de la tabla como se muestra acontinuación;

    public function up(): void
     {
        Schema::table('users', function (Blueprint $table) {
             $table->string('role')
                   ->after('email')
                   ->default('admin');
           });
     } 
     * Reverse the migrations.
    */
    public function down(): void
      {
       Schema::table('users', function (Blueprint $table) {
         $table->dropColumn('role');
});
}
/**

Corremos la migración con:

Php artisan migrate


2 - Creamos un middleware


php artisan make:middleware administrador

3 - Editar el middleware

Necesitamos editar el middleware, para esto nos vamos a la ruta "App\hhtp\middleware\" en esta carpeta aparecerán todos los que están creados y solamente abrimos el "administrador" que hicimos en el paso anterior, en la función "handle" vamos a añadir una condición, la cual dice que solamente tendrá acceso al panel administrativo si el usuario autenticado tiene como valor 1 en el campo role, así que añadimos el siguiente código:

public function handle(Request $request, Closure $next): Response
    {
        if (auth()->user() && (auth()->user()->role == "admin")) {
                return $next($request);
         }
        return redirect('/');
    }

    

4 - Editamos el app\http\kernel


Lo que haremos en esta línea es agregar el middleware que creamos, añadiendo la siguiente línea, en el área de "protected middlewareAliases".

 'admin' => \App\Http\Middleware\administrador::class,

5 - Añadir el middleware a las rutas web


Primero que nada nos vamos a las rutas web "routes/web" Para poder aplicar esta restricción, debemos decirle a laravel en que rutas se requiere, entonces como primero paso sería importarla.


use App\Http\Middleware\administrador;
Route::middleware([
    'auth:sanctum',
    config('jetstream.auth_session'),
    'verified',
])->group(function () {
    Route::get('/dashboard', function () {
        return view('dashboard');
    })->name('dashboard')->middleware(administrador::class);;
});




Etiquetas:


Compartir En redes Sociales

Facebook WhatsApp Youtube

Generic placeholder image
Ing. Obed Sánchez

Gusto por las motos Harley Davidson, el rock n roll y la informática, creador de este blog para difusión del conocimiento libre, interesado en el mundo open source.