$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