如何在Laravel中处理索引路由的授权

时间:2016-07-05 13:30:18

标签: php laravel

我正在尝试隐藏特定用户的帖子。只有帖子的创建者可以编辑或查看帖子。

我的节目视图一切正常。

我的PostController:

public function show($id)
{
    //auth()->loginUsingId(3);

    // Find Blog post by id
    $post = Post::findOrFail($id);

    if(Gate::denies('show-post', $post)) {
      abort(403, 'Access denied');
    };

    return view('posts.show')->withPost($post);
}

但是我不知道如何为我的索引视图做同样的事情。我无法将参数传递给索引( $ id )。

有人能指出我正确的方向吗?

由于

1 个答案:

答案 0 :(得分:1)

如果索引视图应仅返回用户创建的帖子,则应该是这样的:

public function index()
{
    //get the auth user id
    $user_id = Auth::user()->id;

    //get only the posts where the user is the owner
    $posts = Post::where('owner', $user_id)->get();      

    return view('posts.index')->withPost($posts);
}

您不需要在此处使用Gate外观,因为您确定只获得当前经过身份验证的用户可以访问的帖子