我有以下问题:
如果用户(不是管理员)通过链接直接访问资源,则可以查看资源(例如,我的资源文档)。
我已经修改了indexquery,这样他们就看不到索引视图上的资源了,但是当他们尝试通过url直接访问资源时,他们也应该得到403。
我已经为我的文档资源创建了一个策略,并且我知道我必须以某种方式修改view函数。
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字段链接)。
感谢大家的帮助,谢谢!
发布于 2020-12-02 02:58:08
我是自己想出来的,在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;
}https://stackoverflow.com/questions/64959132
复制相似问题