仅允许CRUD拥有拥有ressource的Auth :: user

时间:2015-07-12 00:03:22

标签: laravel eloquent laravel-5 laravel-middleware

我目前正处理一个用户创建模型的项目,只允许他/她查看,编辑或删除。

创建部件由Eloquent Relationships完成,但对于其他操作,我想将其与Route Model绑定结合,而不是在控制器中手动组合。我尝试用中间件解决它,但我无法访问Ressource。

有人可以指出我正确的方向,欢迎任何最佳实践!

1 个答案:

答案 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(但您可以重定向或某事 - 由您决定)。