Laravel Nova 限制资源视图

Laravel Nova Restrict View of Resource

我有以下问题:

如果用户(不是管理员)直接通过 link.

访问资源(例如我的资源文档),则他们可以查看资源

我已经修改了索引查询,这样他们就无法在索引视图中看到资源,但是当他们尝试通过 url.

直接访问它时,他们也应该得到 403。

我已经为我的文档资源创建了一个策略,我知道我必须以某种方式修改视图函数。

  public function view(User $user, User $model){
    return true;
    // return canViewOwn($user); 
  }

我试过像这样在文档模型中创建自定义函数:

  public function canViewOwn($user){
    // This should test whether the current requested resource has the same user Id 
    //  as the currently logged in user

    if($user->id == auth()->user()->id) {
        return true;
    }
 }

我的资源有一个接受用户 ID 的 BelongsTo 字段,但我不知道如何在资源模型函数中检查它。

最后,用户应该只能看到他自己或他创建的资源(通过 belongsTo 字段link编辑)。

感谢任何帮助,谢谢!

我自己想出来的,在UserPolicy中工作的时候太糊涂了:

只是:

public function view(User $user, User $model){
    if($user->role === 'admin'){
        return true;
    } 
    return $model->id == $user->id;
}

对于我使用的任何其他资源:

public function view(User $user, Document $document){
    if($user->role === 'admin'){
        return true;
     } 
     return $document->user_id == $user->id;
}