我的路线设置如下:
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}
而不是
{公司id}
参数,我意识到像盖茨和政策之类的东西。我是否需要利用关卡或政策使之成为好的方式?
但是,我可能不想让我的每一条路线或每一个资源
/admin
已经在那里定义了前缀。有没有办法根据前缀设置门或策略?
怎样才能使代码看起来更好?