|
@@ -115,13 +115,32 @@ class RoleController extends Controller
|
|
|
{
|
|
|
$role = Role::query()->findOrFail($id);
|
|
|
|
|
|
+ //获取菜单所有权限
|
|
|
+ $menusPermission=Menu::query()->where("group", \request("group", "web"))->pluck('permission')->toArray();
|
|
|
+
|
|
|
+ //通过获取用户拥有的菜单权限
|
|
|
+ $roleMenusPermissions=$role->permissions->filter(function ($permission) use ($menusPermission) {
|
|
|
+ return in_array($permission->name, $menusPermission);
|
|
|
+ })->pluck('name')->toArray();
|
|
|
+
|
|
|
+
|
|
|
$permissions=$request->input('permissions');
|
|
|
- foreach ($permissions as $permission){
|
|
|
- if($role->hasPermissionTo($permission)){
|
|
|
- $role->revokePermissionTo($permission);
|
|
|
- }else{
|
|
|
- $role->givePermissionTo($permission);
|
|
|
- };
|
|
|
+
|
|
|
+ // 找出需要新增的权限
|
|
|
+ $extraPermissions = array_diff($permissions, $roleMenusPermissions);
|
|
|
+
|
|
|
+ if(!empty($extraPermissions)&&count($extraPermissions)!=0){
|
|
|
+ foreach ($extraPermissions as $extraPermission){
|
|
|
+ $role->givePermissionTo($extraPermission);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 找出需要剔除的权限
|
|
|
+ $missingPermissions = array_diff($roleMenusPermissions, $permissions);
|
|
|
+ if(!empty($missingPermissions)&&count($missingPermissions)!=0){
|
|
|
+ foreach ($missingPermissions as $missingPermission){
|
|
|
+ $role->revokePermissionTo($missingPermission);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return $this->noContent();
|