Laravel - Error con los roles en larevel 6

 
Vista:
Imágen de perfil de Yoel
Val: 14
Ha disminuido su posición en 3 puestos en Laravel (en relación al último mes)
Gráfica de Laravel

Error con los roles en larevel 6

Publicado por Yoel (8 intervenciones) el 16/10/2019 15:44:17
Tengo la siguiente situación: estoy usando para crear los roles de mi aplicación en laravel 6 spatie/laravel-permission. Lo que me sucede, es que cuando estoy trabajando con los grupos en mi rutas, si una ruta se encuentra en mas de un grupo solo me funciona como administrador u no como cliente en este caso me dice que no tengo permiso para acceder 403 User does not have the right roles. a continuación le dejo el código para ver si me pueden ayudar. Gracias.

(Ruta para donde se redirecciona en el inicio de sección :Route::resource('menus', 'MenuController');)

Mis Rutas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Route::get('/', function () {
    return view('home');
});
 
Route::group(['middleware' => ['role:cliente']], function () {
    Route::resource('menus', 'MenuController');
});
 
Route::group(['middleware' => ['role:administrador']], function () {
    Route::resource('menus', 'MenuController');
    Route::resource('entidades', 'EntidadresController');
    Route::resource('tipogastos', 'TipoGastosController');
    Route::resource('proveedor', 'ProveedorController');
});
 
 
Auth::routes();
 
Route::get('/home', 'HomeController@index')->name('home');

Asignar el rol a cliente.


1
2
3
4
5
6
7
8
9
10
11
12
13
protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
 
        // Le asignamos el rol de Cliente
        $user->assignRole('cliente');
 
        return $user;
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 13
Ha disminuido 1 puesto en Laravel (en relación al último mes)
Gráfica de Laravel

Error con los roles en larevel 6

Publicado por kip (3 intervenciones) el 16/10/2019 15:51:48
Hola, no veo que asignes multiples roles en el middleware que aplicas a tus rutas, debes usar el | (pipe) carácter, fijate en la doc https://docs.spatie.be/laravel-permission/v3/basic-usage/middleware/.

1
2
3
Route::group(['middleware' => ['role:super-admin|writer']], function () {
    //
});

En tu caso debes aislar la ruta en cuestion y a esa aplicarle los multiples roles:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Route::get('/', function () {
    return view('home');
});
 
Route::group(['middleware' => ['role:cliente|administrador']], function () {
    Route::resource('menus', 'MenuController');
});
 
Route::group(['middleware' => ['role:administrador']], function () {
    // No existe ruta a menus
    Route::resource('entidades', 'EntidadresController');
    Route::resource('tipogastos', 'TipoGastosController');
    Route::resource('proveedor', 'ProveedorController');
});
 
 
Auth::routes();
 
Route::get('/home', 'HomeController@index')->name('home');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar