refactor: 修改角色校验及新增/更新
This commit is contained in:
@@ -74,7 +74,7 @@ class Role
|
||||
'desc',
|
||||
// $[*].menu_id
|
||||
// $[*].permissions
|
||||
'menu_permission'
|
||||
'menu_permission' => '[]'
|
||||
]);
|
||||
$post['menu_permission'] = json_decode($post['menu_permission'], true);
|
||||
|
||||
@@ -90,19 +90,21 @@ class Role
|
||||
throw new InvalidOperateException('角色新增失败');
|
||||
}
|
||||
|
||||
$permissions = [];
|
||||
foreach ($post['menu_permission'] as $menu) {
|
||||
$permissions[] = [
|
||||
'role_id' => $role->id,
|
||||
'menu_id' => $menu['menu_id'],
|
||||
'permission' => array_reduce($menu['permissions'], function($v1, $v2) {
|
||||
return $v1 | $v2;
|
||||
})
|
||||
];
|
||||
}
|
||||
$authority = (new SysRoleAuthorityModel)->saveAll($permissions);
|
||||
if ($authority->isEmpty()) {
|
||||
throw new InvalidOperateException('角色权限新增失败');
|
||||
if (!empty($post['menu_permission'])) {
|
||||
$permissions = [];
|
||||
foreach ($post['menu_permission'] as $menu) {
|
||||
$permissions[] = [
|
||||
'role_id' => $role->id,
|
||||
'menu_id' => $menu['menu_id'],
|
||||
'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) {
|
||||
return $v1 | $v2;
|
||||
})
|
||||
];
|
||||
}
|
||||
$authority = (new SysRoleAuthorityModel)->saveAll($permissions);
|
||||
if ($authority->isEmpty()) {
|
||||
throw new InvalidOperateException('角色权限新增失败');
|
||||
}
|
||||
}
|
||||
|
||||
SysRoleModel::commit();
|
||||
@@ -126,7 +128,7 @@ class Role
|
||||
'desc',
|
||||
// $[*].menu_id
|
||||
// $[*].permissions
|
||||
'menu_permission'
|
||||
'menu_permission' => '[]'
|
||||
]);
|
||||
$put['menu_permission'] = json_decode($put['menu_permission'], true);
|
||||
|
||||
@@ -146,21 +148,23 @@ class Role
|
||||
throw new InvalidOperateException('角色更新失败');
|
||||
}
|
||||
|
||||
$permissions = [];
|
||||
foreach ($put['menu_permission'] as $menu) {
|
||||
$permissions[] = [
|
||||
'role_id' => $role->id,
|
||||
'menu_id' => $menu['menu_id'],
|
||||
'permission' => array_reduce($menu['permissions'], function($v1, $v2) {
|
||||
return $v1 | $v2;
|
||||
})
|
||||
];
|
||||
}
|
||||
if (!empty($put['menu_permission'])) {
|
||||
$permissions = [];
|
||||
foreach ($put['menu_permission'] as $menu) {
|
||||
$permissions[] = [
|
||||
'role_id' => $role->id,
|
||||
'menu_id' => $menu['menu_id'],
|
||||
'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) {
|
||||
return $v1 | $v2;
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
SysRoleAuthorityModel::roleId($role->id)->delete();
|
||||
$authority = (new SysRoleAuthorityModel)->saveAll($permissions);
|
||||
if ($authority->isEmpty()) {
|
||||
throw new InvalidOperateException('角色权限更新失败');
|
||||
SysRoleAuthorityModel::roleId($role->id)->delete();
|
||||
$authority = (new SysRoleAuthorityModel)->saveAll($permissions);
|
||||
if ($authority->isEmpty()) {
|
||||
throw new InvalidOperateException('角色权限更新失败');
|
||||
}
|
||||
}
|
||||
|
||||
SysRoleModel::commit();
|
||||
|
||||
Reference in New Issue
Block a user