So i have this code in my route :
// Facilitator Priviledges
Route::group(['roles'=>'facilitator'],function(){
//Material
Route::get('/material', 'MaterialController@index');
Route::post('/material', 'MaterialController@store');
Route::get('/material/{course:id}/create', 'MaterialController@create');
Route::get('/material/detail/{course:id}', 'MaterialController@show');
Route::get('/material/{material:id}/edit', 'MaterialController@edit');
Route::patch('/material/{material:id}', 'MaterialController@update');
Route::delete('/material/{material:id}', 'MaterialController@destroy');
});
//Admin Priviledges
Route::group(['roles'=>'admin'],function(){
Route::resource('/categories', 'CategoriesController');
//Material
Route::get('/material', 'MaterialController@index');
Route::post('/material', 'MaterialController@store');
Route::get('/material/{course:id}/create', 'MaterialController@create');
Route::get('/material/detail/{course:id}', 'MaterialController@show');
Route::get('/material/{material:id}/edit', 'MaterialController@edit');
Route::patch('/material/{material:id}', 'MaterialController@update');
Route::delete('/material/{material:id}', 'MaterialController@destroy');
});
It has the same route, in this case, Material Route that both admin and facilitator roles can access it, but when the code runs it can be only one role that working fine (I'm using admin) and the other giving error (503) Servive unavailable
You can refer to this to this Question
Or you can refer to Laravel Policy
or you can simply create your own policy and register it in your middleware.
Route::group(['middleware' => ['admin', 'facilitator']], function () {
Route::get('/material', 'MaterialController@index');
Route::post('/material', 'MaterialController@store');
Route::get('/material/{course:id}/create', 'MaterialController@create');
Route::get('/material/detail/{course:id}', 'MaterialController@show');
Route::get('/material/{material:id}/edit', 'MaterialController@edit');
Route::patch('/material/{material:id}', 'MaterialController@update');
Route::delete('/material/{material:id}', 'MaterialController@destroy');
});