带前缀的中间件的最佳选择是什么

时间:2018-12-11 16:58:42

标签: laravel laravel-5 middleware

我的路线设置如下:

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或Policys做它的好方法?

但是,我可能不想为我的每条路线或我的每一项资源都使用它,因为已经在其中定义了/admin前缀。有没有一种方法可以根据前缀设置门或策略?

有什么好的方法可以使代码看起来更好?

0 个答案:

没有答案
相关问题