Я пытаюсь определить, есть ли у пользователя возможность обновить модель в глобальной области, но я использую префиксы разрешений, которые я обычно получаю через отношение.
Применяется следующий код:
public function apply(Builder $builder, Model $model)
{
$user = getUser();
if ($user === null || $user->cannot('update', $model)) {
$builder->where('active', '=', 1);
}
}
Когда я dd($model)
модель фактически не создается, поэтому, когда я делаю проверку прав доступа в моей политике:
public function update(User $user, Item $item)
{
return $user->hasAnyPermission(['edit-things', $this->prefix($item) . "-edit-item"]);
}
Где префиксная функция выглядит так:
private function prefix(Item $item = null)
{
if ($item !== null) {
return $item->parentRelation->roles_permission_prefix;
}
$parentRelation= ParentRelation::findOrFail(request('parent_relation_id'));
return $parentRelation->roles_permission_prefix;
}
Все это терпит неудачу из-за того, что они на самом деле не являются отношениями. Есть идеи?
Быстрое редактирование: я использую библиотеку разрешений Spatie, если это уместно.