我无法弄清楚如何正确地做到这一点。
我有用户可以创建文章,可以是viewed
,edited
和deleted
。如果当前登录的用户不是文章的创建者,我想限制编辑和删除操作。
我已经使用策略完成了这项工作,并在表单请求中使用Gate,但如果我理解正确,FormRequest仅用于POST请求。我目前将FormRequest作为参数传递给getEdit()动作。这似乎不对。
那么如何确保用户既不能访问也不能编辑文章?
答案 0 :(得分:0)
如果您已经定义了一个策略,您可以使用控制器操作中的Gate
外观直接访问它,如下所示:
public function getEdit($id)
{
$reference = Reference::findOrFail($id);
if (Gate::denies('owns-reference', $reference))
abort(403);
return view('reference.edit')
->with('reference', $reference);
}
请确保将Gate
包含在您的文件顶部,如下所示:
use Gate;