Лично я хотел бы использовать ПО промежуточного слоя и маршрутные группы для выполнения этой задачи, которая была бы похожа способ Laravel проверки для проверки подлинности пользователя.
Вам просто нужно определить, когда вам нужно запустить промежуточное программное обеспечение, которое может быть выполнено путем вложения Route::group
или ввода промежуточного программного обеспечения с вашего контроллера.
Так, для примера вложенности вы можете иметь что-то вроде этого в маршрутах файл:
Route::group(['middleware' => ['auth']], function() {
Route::get('dashboard', ['as' => 'dashboard', function() {
return view('dashboard');
}]);
Route::group(['prefix' => 'company', 'namespace' => 'Company', 'middleware' => ['App\Http\Middleware\HasRole'], function() {
Route::get('dashboard', ['as'=>'dashboard', function() {
return view('company.dashboard');
}]);
Route::resource('employees', 'EmployeesController');
...
...
});
});
или вы можете вводить связующее ПО контроллеров, как так:
use Illuminate\Routing\Controller;
class AwesomeController extends Controller {
public function __construct()
{
$this->middleware('hasRole', ['only' => 'update'])
}
}
А потом добавьте один или несколько файлов промежуточного программного обеспечения, используя что-то вроде php artisan make:middleware HasRole
, которое даст вам табличку с программным обеспечением промежуточного программного обеспечения, которую вы могли бы добавить в свою логику проверки роли:
<?php namespace App\Http\Middleware;
use Closure;
class HasRole {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($request->is('admin/*')){
[******ADD YOUR LOGIC HERE TO DETERMINE THE ROLE ******]
[******YOU CAN ALSO INCLUDE ANY REDIRECTS IF NECESSARY******]
}
return $next($request);
}
}
Уведомление Я использовал $route->is('admin/*')
для фильтрации любых маршрутов в качестве примера последующих запросов на фильтрацию, которые вы, вероятно, не включили бы, если вы вводите промежуточное программное обеспечение с контроллера.
Но если пользователь передает требуемую проверку роли, вам не нужно ничего делать, и им будет разрешено продолжить просмотр. Если они не выполняют проверку роли, вы можете справиться с этим соответствующим образом, но будьте осторожны, чтобы их поймали в неудавшемся цикле разрешений.
Я предполагаю, что вы получите его суть, не стесняйтесь заглядывать в Laravel middleware docs для получения дополнительной информации.
Вы не дали четкого представления о том, что вы делаете, есть ли 20 ролей для 500 маршрутов или что? Но может быть то, что вы ищете, используя фильтры маршрутов, чтобы помочь организовать его, взгляните на Zizaco: доверить, даже если вы не используете эту услугу, могут быть примеры, которые помогут вам разработать фильтр маршрутов или другой ответ, подходящий для вашего проект. – Azeame
Существует три роли разных пользователей. роли упоминаются выше в вопросе. Я просто хочу создать три уровня аутентификации для разных пользователей -> ролей. –