我目前正处理一个用户创建模型的项目,只允许他/她查看,编辑或删除。
创建部件由Eloquent Relationships完成,但对于其他操作,我想将其与Route Model绑定结合,而不是在控制器中手动组合。我尝试用中间件解决它,但我无法访问Ressource。
有人可以指出我正确的方向,欢迎任何最佳实践!
答案 0 :(得分:2)
我个人使用路由模型绑定,但只允许模型在用户拥有记录时绑定。
这意味着无论如何 - 人们永远无法访问别人的记录。例如,在我的路线中,我可以做到
$router->get('property/{property}, ['uses' => PropertyController@show]);
然后在我的RouteServiceProvider中:
$router->bind('property', function($value) {
$property = \App\Property::findOrFail($value);
if ((int)$property->user_id !== (int)auth()->id()) {
abort (404);
}
return $property;
});
所以在上面的例子中 - 我们有一个property
路由,它会尝试找到给定的属性记录。然后它将检查用户是否拥有该记录,否则它将抛出404(但您可以重定向或某事 - 由您决定)。