2016-12-06 2 views
2

Здравствуйте у меня есть 2 пользователи уровня: 1 Супер администратор, который способен видеть и сделать Everthing -TD, который способен видеть только вещи, а не что-либо изменитьпользователей уровня Laravel маршрутизация Мульти с промежуточным

Я сделал 2 промежуточного слоя: 1 auth.superadmin и 1 auth.td

Мои маршруты:

Route::group(['middleware' => ['auth.superadmin']], function() { 
Route::get('/users/{id}/destroy', '[email protected]'); 
Route::get('/searchuser', '[email protected]'); 
Route::get('/users/create-worker', '[email protected]'); 
Route::post('/users/post-create-worker', '[email protected]'); 
Route::get('/users/create-agent', '[email protected]'); 
Route::post('/users/post-create-agent', '[email protected]'); 
Route::get('/users-optima', '[email protected]'); 
Route::resource('/users', 'UsersController'); 
Route::patch('/retours/{id}/postupdatefill','[email protected]'); 
Route::get('/retours/{retourid}/addpart/{partid}','[email protected]'); 
Route::get('/retours/{retourid}/remove/{partid}','[email protected]'); 
Route::post('/retours/{retourid}/garantie','[email protected]'); 
Route::get('/retours/{id}/updatefill/searchpart', '[email protected]'); 
Route::get('/searchpart', '[email protected]'); 
Route::resource('/parts', 'PartsController'); 
}); 

Route::group(['middleware' => ['auth.td']], function() { 
Route::get('/users/{id}/destroy', '[email protected]'); 
Route::get('/searchuser', '[email protected]'); 

Route::resource('/users', 'UsersController', 
    ['only' => ['index']]); 

Route::patch('/retours/{id}/postupdatefill','[email protected]'); 
Route::get('/retours/{retourid}/addpart/{partid}','[email protected]'); 
Route::get('/retours/{retourid}/remove/{partid}','[email protected]'); 
Route::post('/retours/{retourid}/garantie','[email protected]'); 
Route::get('/retours/{id}/updatefill/searchpart', '[email protected]'); 
Route::get('/searchpart', '[email protected]'); 
Route::resource('/parts', 'PartsController'); 
}); 

Мой middelware: суперамин

if (auth()->check() && auth()->user()->level == 1) { 
     return $next($request); 
    } 
    return abort(404, 'no entry to this page'); 

TD

if (auth()->check() && auth()->user()->level == 2) { 
      return $next($request); 
     } 
     return abort(404, 'no entry to this page'); 

Я пытался, начиная с/Users. TD может видеть только индекс в/Users.

Когда я сделать это таким образом auth.superadmin не может видеть индекс @/пользователей ...

enter image description here

я делаю неправильно?

Любая помощь приветствуется.

+0

Для себя, посмотрите на использование 'Route :: group ([" prefix "=>" ... "] ...);' вместо повторения маршрутов '/ users/whatever' снова и снова –

+0

Будет делать @TimLewis, спасибо. – Rubberduck1337106092

ответ

3

Вы можете изменить свои маршруты и его группу, как это:

Route::group(['middleware' => ['auth.td']], function() { 
    Route::get('/users/{id}/destroy', '[email protected]'); 
    Route::get('/searchuser', '[email protected]'); 
    Route::resource('/users', 'UsersController',['only' => ['index']]); 
    Route::patch('/retours/{id}/postupdatefill','[email protected]'); 
    Route::get('/retours/{retourid}/addpart/{partid}','[email protected]'); 
    Route::get('/retours/{retourid}/remove/{partid}','[email protected]'); 
    Route::post('/retours/{retourid}/garantie','[email protected]'); 
    Route::get('/retours/{id}/updatefill/searchpart', '[email protected]'); 
    Route::get('/searchpart', '[email protected]'); 
    Route::resource('/parts', 'PartsController'); 

    Route::group(['middleware' => ['auth.superadmin']], function() { 
     Route::get('/users/{id}/destroy', '[email protected]'); 
     Route::get('/searchuser', '[email protected]'); 
     Route::get('/users/create-worker', '[email protected]'); 
     Route::post('/users/post-create-worker', '[email protected]'); 
     Route::get('/users/create-agent', '[email protected]'); 
     Route::post('/users/post-create-agent', '[email protected]'); 
     Route::get('/users-optima', '[email protected]'); 
     Route::resource('/users', 'UsersController'); 
     Route::patch('/retours/{id}/postupdatefill','[email protected]'); 
     Route::get('/retours/{retourid}/addpart/{partid}','[email protected]'); 
     Route::get('/retours/{retourid}/remove/{partid}','[email protected]'); 
     Route::post('/retours/{retourid}/garantie','[email protected]'); 
     Route::get('/retours/{id}/updatefill/searchpart', '[email protected]rt'); 
     Route::get('/searchpart', '[email protected]'); 
     Route::resource('/parts', 'PartsController'); 
    }); 
}); 

и ваше auth:td промежуточного программного обеспечения должна быть так:

if (auth()->check() && (auth()->user()->level == 1 || auth()->user()->level == 2)) { 
    return $next($request); 
} 
return abort(404, 'no entry to this page'); 

Просто для знания, которые вы можете либо удалить внешнее промежуточное ПО (auth:td), поскольку оба пользователя могут использовать маршруты под ним. Но я этого не делал, потому что думаю, что у вас больше пользователей в вашей системе.

Надеюсь, это поможет!

+0

Да, это исправило мою проблему. Большое спасибо! – Rubberduck1337106092

+0

Спасибо, рад видеть, что он работает на вас! –