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;
}
我有以下问题:
如果用户(不是管理员)直接通过 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;
}