首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Nova限制资源观

Laravel Nova限制资源观
EN

Stack Overflow用户
提问于 2020-11-23 04:22:50
回答 1查看 421关注 0票数 1

我有以下问题:

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

我已经修改了indexquery,这样他们就看不到索引视图上的资源了,但是当他们尝试通过url直接访问资源时,他们也应该得到403。

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

代码语言:javascript
复制
  public function view(User $user, User $model){
    return true;
    // return canViewOwn($user); 
  }

我尝试在文档模型中创建一个自定义函数,如下所示:

代码语言:javascript
复制
  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字段链接)。

感谢大家的帮助,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-02 02:58:08

我是自己想出来的,在UserPolicy工作的时候我太困惑了:

它只是:

代码语言:javascript
复制
public function view(User $user, User $model){
    if($user->role === 'admin'){
        return true;
    } 
    return $model->id == $user->id;
}

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

代码语言:javascript
复制
public function view(User $user, Document $document){
    if($user->role === 'admin'){
        return true;
     } 
     return $document->user_id == $user->id;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64959132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档