优化角色权限分配

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());
$role = $this->role->findBy($id);
$role->detach();
$permissions = $request->param('permissions');
if (!empty($permissions)) {
$role->attach(array_unique($permissions));
$hasPermissionIds = $role->getPermissions()->column('id');
$permissionIds = $request->param('permissions');
// 已存在权限 IDS
$existedPermissionIds = [];
foreach ($hasPermissionIds as $hasPermissionId) {
if (in_array($hasPermissionId, $permissionIds)) {
$existedPermissionIds[] = $hasPermissionId;
}
}
if (!empty($request->param('departments'))) {
$role->detachDepartments();
$role->attachDepartments($request->param('departments'));
$attachIds = array_diff($permissionIds, $existedPermissionIds);
$detachIds = array_diff($hasPermissionIds, $existedPermissionIds);
if (!empty($detachIds)) {
$role->detach($detachIds);
}
if (!empty($attachIds)) {
$role->attach(array_unique($attachIds));
}
return CatchResponse::success();
}