优化角色权限分配
This commit is contained in:
parent
e6d7ee8f55
commit
317a9ef595
@ -71,17 +71,29 @@ class Role extends CatchController
|
|||||||
{
|
{
|
||||||
$this->role->updateBy($id, $request->param());
|
$this->role->updateBy($id, $request->param());
|
||||||
$role = $this->role->findBy($id);
|
$role = $this->role->findBy($id);
|
||||||
$role->detach();
|
|
||||||
|
|
||||||
$permissions = $request->param('permissions');
|
$hasPermissionIds = $role->getPermissions()->column('id');
|
||||||
if (!empty($permissions)) {
|
|
||||||
$role->attach(array_unique($permissions));
|
$permissionIds = $request->param('permissions');
|
||||||
|
|
||||||
|
// 已存在权限 IDS
|
||||||
|
$existedPermissionIds = [];
|
||||||
|
foreach ($hasPermissionIds as $hasPermissionId) {
|
||||||
|
if (in_array($hasPermissionId, $permissionIds)) {
|
||||||
|
$existedPermissionIds[] = $hasPermissionId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($request->param('departments'))) {
|
$attachIds = array_diff($permissionIds, $existedPermissionIds);
|
||||||
$role->detachDepartments();
|
$detachIds = array_diff($hasPermissionIds, $existedPermissionIds);
|
||||||
$role->attachDepartments($request->param('departments'));
|
|
||||||
|
if (!empty($detachIds)) {
|
||||||
|
$role->detach($detachIds);
|
||||||
}
|
}
|
||||||
|
if (!empty($attachIds)) {
|
||||||
|
$role->attach(array_unique($attachIds));
|
||||||
|
}
|
||||||
|
|
||||||
return CatchResponse::success();
|
return CatchResponse::success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user