Roles

Modificar el modelo User añadiendo un nuevo campo:
$table->integer("role_id");

Crear un modelo role con su correspondiente migration
php artisan make:model Role --migration

En ese fichero de migration add el campo:
$table->string("nombre_role");

Ejecutar todas las migraciones desde cero con refresh:
php artisan migrate:refresh

Meter desde el phpmyadmin dos roles en la nueva tabla roles (uno Administrador y otro Usuario).

Desde el front registrar dos usuarios y desde el phpmyadmin modificar el campo role_id de esos dos nuevos usuarios.

Crear un middleware llamado EsAdmin:
php artisan make:middleware EsAdmin

El handle de este middleware tendrá:
if (Auth::check()) {
$user = Auth::user();
if (!$user->esAdmin() ) {
return redirect("/");
}

}
return $next($request);

En el modelo de User añadir:
public function role() {
return $this->belongsTo("App\Role");
}

public function esAdmin() {
if ($this->role['nombre_role'] == 'Administrador'){
return true;
}
return false;
}

Crear un nuevo controller:
php artisan make:controller AdministradorController

Este controller tendrá:
public function __construct() {
$this->middleware("EsAdmin");
}

public function index() {
return "Si has llegado aquí es que eres Administrador";
}

Hay que registrar el nuevo middleware en el kernel (app/http/kernel.php)
En el $routeMiddleware añadir:
'EsAdmin' => \App\Http\Middleware\EsAdmin::class,

En routes/web.php:
Route::get("/admin", "AdministradorController@index");

Con todo esto solo se podrá acceder a la ruta de Admin aquellos usuarios que tengan el rol de Administrador.

No hay comentarios:

Publicar un comentario