我有一个位置模型,其中包含两个属性:ID 和名称。
为了编辑这个模型,我设置了这条路线:
Route::get('administration/location/{location}/edit', 'LocationController@edit')->name('location.edit');
我设置了非常简单的权限:在AuthServiceProvider我正在检查boot以下方法中
Gate::before(function ($user, $permission) {
if ($user->permissions->pluck('name')->contains($permission)) {
return true;
}
});
其中permission是包含 ID 和名称的模型,通过permission_user表映射。
我设置了这些权限:
编辑洛杉矶
编辑纽约
编辑波士顿
与位置无关的大量其他权限
经过所有这些漫无目的的讨论,我真正的问题是:
如何将这些权限与编辑位置联系起来?
我面临的问题是,不允许给定用户编辑所有位置,而只能允许编辑一个位置。只有具有权限的用户edit_los_angeles才可以编辑Location名称为 的文件Los Angeles。
因此,我无法将其分组为一个权限,例如edit_location并将其添加到我的路线中->middleware('can:edit_location')。
相反,我想我需要这样的东西:
Route::get('administration/location/{location}/edit', 'LocationController@edit')->name('location.edit')->middleware('can:edit_los_angeles');
Route::get('administration/location/{location}/edit', 'LocationController@edit')->name('location.edit')->middleware('can:edit_new_york');
Route::get('administration/location/{location}/edit', 'LocationController@edit')->name('location.edit')->middleware('can:edit_boston');
...显然这是行不通的。
你会采取什么方法来解决这个困境?:-)
也许我做的事情完全错误,并且有更好的 Laravel-Way 来做到这一点?
非常感谢您提前提供的帮助!
我正在使用 Laravel 6.0 :-)
FFIVE
qq_遁去的一_1