1

Please tell me how you can use 2 roles on 1 route. I am using the Laravel Permission.

Routes

Route::group(['middleware' => ['role:user_сitisen']], function () {
    Route::get('/addcitisens', [App\Http\Controllers\CitisenControl::class, 'index']);
    Route::get('/citisen/{id}', [App\Http\Controllers\CitisenControl::class, 'show']);
    Route::post('/citisen/{id}', [App\Http\Controllers\CitisenControl::class, 'update'])->name('citisen');
    Route::get('/destroy/{id}', [App\Http\Controllers\CitisenControl::class, 'destroy']);
    Route::post('/citisens', [App\Http\Controllers\CitisenControl::class, 'store']);
    Route::get('/citisens/export', [App\Http\Controllers\CitisenControl::class, 'CitisenExport']);
});

Route::group(['middleware' => ['role:user_avto']], function () {
    Route::get('/avtoslist', [App\Http\Controllers\AvtosController::class, 'index']);
    Route::get('/addavtos', [App\Http\Controllers\AvtosController::class, 'indexAdd']);
    Route::post('/avtos', [App\Http\Controllers\AvtosController::class, 'store']);
});

Route::group(['middleware' => ['role:admin']], function () {
    Route::get('/addcitisens', [App\Http\Controllers\CitisenControl::class, 'index']);
    Route::get('/citisen/{id}', [App\Http\Controllers\CitisenControl::class, 'show']);
    Route::post('/citisen/{id}', [App\Http\Controllers\CitisenControl::class, 'update'])->name('citisen');
    Route::get('/destroy/{id}', [App\Http\Controllers\CitisenControl::class, 'destroy']);
    Route::post('/citisens', [App\Http\Controllers\CitisenControl::class, 'store']);
    Route::get('/citisens/export', [App\Http\Controllers\CitisenControl::class, 'CitisenExport']);
    Route::get('/avtoslist', [App\Http\Controllers\AvtosController::class, 'index']);
    Route::get('/addavtos', [App\Http\Controllers\AvtosController::class, 'indexAdd']);
    Route::post('/avtos', [App\Http\Controllers\AvtosController::class, 'store']);
    Route::get('/usersList', [App\Http\Controllers\UsersController::class, 'index'])->name('usersList');
    Route::get('/addusers', [App\Http\Controllers\UsersController::class, 'indexUser']);
    Route::post('/users', [App\Http\Controllers\UsersController::class, 'store']);
    Route::get('/users/{id}', [App\Http\Controllers\UsersController::class, 'show']);
    Route::post('/users/{id}', [App\Http\Controllers\UsersController::class, 'update']);
    Route::get('/destroyuser/{id}', [App\Http\Controllers\UsersController::class, 'destroy']);
});
Karl Hill
  • 12,937
  • 5
  • 58
  • 95

3 Answers3

4

As documentation says

you can separate multiple roles or permission with a | (pipe) character:

Route::group(['middleware' => ['role:super-admin|writer']], function () {
    //
});
Ihar Aliakseyenka
  • 9,587
  • 4
  • 28
  • 38
1

Yes, But You Can also do please change in Middleware.

Route::group(['middleware' => ['auth','web','roles'],'roles'=>['admin','driver']],function() {

});
Waleed Muaz
  • 737
  • 6
  • 17
1

Separate it by |.

Route::group(['middleware'=>['role:admin|user']],function(){

Source: https://spatie.be/docs/laravel-permission/v4/basic-usage/middleware

cit: Alternatively, you can separate multiple roles or permission with a | (pipe) character:

Kevin
  • 1,152
  • 5
  • 13