优化角色权限分配
This commit is contained in:
parent
e6d7ee8f55
commit
317a9ef595
@ -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();
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ trait HasPermissionsTrait
|
||||
public function attach(array $permissions)
|
||||
{
|
||||
if (empty($permissions)) {
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
sort($permissions);
|
||||
@ -68,7 +68,7 @@ trait HasPermissionsTrait
|
||||
public function detach(array $roles = [])
|
||||
{
|
||||
if (empty($roles)) {
|
||||
return $this->permissions()->detach();
|
||||
return $this->permissions()->detach();
|
||||
}
|
||||
|
||||
return $this->permissions()->detach($roles);
|
||||
|
Loading…
x
Reference in New Issue
Block a user