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