优化角色权限分配

This commit is contained in:
JaguarJack 2020-06-21 21:07:15 +08:00
parent e6d7ee8f55
commit 317a9ef595
2 changed files with 21 additions and 9 deletions

View File

@ -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();
} }