У меня есть настройка маршрута следующим образом:
Route::prefix('/admin/{company}')->group(function() {
Route::resource("employees", "Admin\EmployeesController");
Route::resource("jobs", "Admin\JobsController");
// and few other routes
})->middleware('admin');
Раньше я использовал {companyId}
, но сейчас я хочу изменить его для привязки модели.И мое промежуточное программное обеспечение проверяло через $companyId = $request->route('companyId');
public function handle($request, Closure $next)
{
$id = $request->route('companyId');
$adminRole = Role::where('name', 'admin')->first();
if (!Auth::user()->userRoles->where('company_id', $id)->where('role_id', $adminRole->id)->count()) {
return response("Unauthorized action", 403);
}
return $next($request);
}
Поскольку я выполняю рефакторинг для использования привязки модели {company}
вместо {companyId}
, я осознал такие вещи, как Gates и Policies.Нужно ли мне использовать Gates или Policies, чтобы сделать это хорошим способом?
Однако я, вероятно, не хочу делать это для каждого из моих маршрутов или каждого из моих ресурсов, так как префикс /admin
уже определено там.Есть ли способ поставить гейт или политику на основе префикса?
Какая хорошая практика, чтобы код выглядел лучше?