【问题标题】:Laravel Nova Restrict View of ResourceLaravel Nova 限制资源查看
【发布时间】:2021-03-05 14:53:01
【问题描述】:

我有以下问题:

如果用户(非管理员)通过链接直接访问资源(例如我的资源文档),则可以查看该资源。

我已经修改了 indexquery,这样他们就无法在索引视图上看到资源,但是当他们尝试通过 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;
    }
 }

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

最终,用户应该只能看到自己或他创建的资源(通过 belongsTo 字段链接)。

感谢您的帮助,谢谢!

【问题讨论】:

    标签: laravel laravel-nova laravel-authorization


    【解决方案1】:

    我只是自己想通了,在 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2019-04-21
      • 1970-01-01
      相关资源
      最近更新 更多