我希望使用Laravel的政策来授权Blade的大量用户权限。
我的授权位于拥有所有应用权限的ActionPermission
模型下。
User
通过数据透视表
使用:
public function permissions(){
return $this->belongsToMany('App\ActionPermission', 'users__action_permission');
}
所以基本上我收到了一组用户权限并调用$user->permissions()->pluck('module_name')->toArray();
我会将权限名称作为数组。
有没有办法通过刀片在一行中引入一系列策略?那么在我的布局中我会插入一行刀片指令吗?
在Laravel的文档中,他们使用函数的名称作为blade指令,如下所示:
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
在刀片中:
@can('update', $post)
<!-- The Current User Can Update The Post -->
@elsecan('create', App\Post::class)
<!-- The Current User Can Create New Post -->
@endcan
如果您拥有大量权限,则上述内容无关紧要。 执行大量权限的最佳做法是什么?
BTW任何方法(不仅是提供者引导程序)都是受欢迎的。
答案 0 :(得分:0)
访问模型以从刀片创建可能是危险的,因为您正在跳过某些验证并要求Eloquent处理好所有事情(它不会)。
除此之外,我希望这可以解释你所寻求的:
$user = User::find($idOfUser) // retrieves an active record of User
$user->permissions // gets the record of permissions that is related to the user, believing the relationship is estabished
User::find($idOfUser)->permissions->update($data) // updates the record in permissions that is related to that user