关于laravel-permission用户权限问题
最近准备重构项目,先从权限开始
使用的laravel-permission,基本上都已经差不多了。但是我发现有个表没用到
摸索一会,发现是要给用户权限,这个表就有数据了
private function assignRolesAndPermissions(Admin $admin, array $roleIds)
{
$roles = Role::query()->whereKey($roleIds)->get();
$admin->syncRoles($roles->pluck('name'));
$permissions = $roles->map(function (Role $role) use ($admin) {
return $role->permissions->pluck('name');
})
->flatten()
->values()
->unique()
->toArray();
$admin->syncPermissions($permissions);
}
但是最后我发现如果我不给用户权限一样可以拿到用户的权限,继承角色的权限
// Permissions inherited from the user's roles
$user->getPermissionsViaRoles();
现在就很迷茫了,那这个表还有用的必要吗?
因为一个是在继承角色里面的权限,一个是直接授权用户的权限。打个比方,一个角色拥有创建商品和修改商品权限,但是我想不动角色的情况下单独给这个用户删除商品的权限,这样的话,用户就继承了角色的创建和修改,然后还有单独的删除。当然,下面的
getPermissionsViaRoles
只能拿到创建和修改的,要全部拿到需要用到getAllPermissions
。