refactor: 修改角色校验及新增/更新
This commit is contained in:
@@ -74,7 +74,7 @@ class Role
|
|||||||
'desc',
|
'desc',
|
||||||
// $[*].menu_id
|
// $[*].menu_id
|
||||||
// $[*].permissions
|
// $[*].permissions
|
||||||
'menu_permission'
|
'menu_permission' => '[]'
|
||||||
]);
|
]);
|
||||||
$post['menu_permission'] = json_decode($post['menu_permission'], true);
|
$post['menu_permission'] = json_decode($post['menu_permission'], true);
|
||||||
|
|
||||||
@@ -90,12 +90,13 @@ class Role
|
|||||||
throw new InvalidOperateException('角色新增失败');
|
throw new InvalidOperateException('角色新增失败');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($post['menu_permission'])) {
|
||||||
$permissions = [];
|
$permissions = [];
|
||||||
foreach ($post['menu_permission'] as $menu) {
|
foreach ($post['menu_permission'] as $menu) {
|
||||||
$permissions[] = [
|
$permissions[] = [
|
||||||
'role_id' => $role->id,
|
'role_id' => $role->id,
|
||||||
'menu_id' => $menu['menu_id'],
|
'menu_id' => $menu['menu_id'],
|
||||||
'permission' => array_reduce($menu['permissions'], function($v1, $v2) {
|
'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) {
|
||||||
return $v1 | $v2;
|
return $v1 | $v2;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
@@ -104,6 +105,7 @@ class Role
|
|||||||
if ($authority->isEmpty()) {
|
if ($authority->isEmpty()) {
|
||||||
throw new InvalidOperateException('角色权限新增失败');
|
throw new InvalidOperateException('角色权限新增失败');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SysRoleModel::commit();
|
SysRoleModel::commit();
|
||||||
} catch (InvalidOperateException $e) {
|
} catch (InvalidOperateException $e) {
|
||||||
@@ -126,7 +128,7 @@ class Role
|
|||||||
'desc',
|
'desc',
|
||||||
// $[*].menu_id
|
// $[*].menu_id
|
||||||
// $[*].permissions
|
// $[*].permissions
|
||||||
'menu_permission'
|
'menu_permission' => '[]'
|
||||||
]);
|
]);
|
||||||
$put['menu_permission'] = json_decode($put['menu_permission'], true);
|
$put['menu_permission'] = json_decode($put['menu_permission'], true);
|
||||||
|
|
||||||
@@ -146,12 +148,13 @@ class Role
|
|||||||
throw new InvalidOperateException('角色更新失败');
|
throw new InvalidOperateException('角色更新失败');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($put['menu_permission'])) {
|
||||||
$permissions = [];
|
$permissions = [];
|
||||||
foreach ($put['menu_permission'] as $menu) {
|
foreach ($put['menu_permission'] as $menu) {
|
||||||
$permissions[] = [
|
$permissions[] = [
|
||||||
'role_id' => $role->id,
|
'role_id' => $role->id,
|
||||||
'menu_id' => $menu['menu_id'],
|
'menu_id' => $menu['menu_id'],
|
||||||
'permission' => array_reduce($menu['permissions'], function($v1, $v2) {
|
'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) {
|
||||||
return $v1 | $v2;
|
return $v1 | $v2;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
@@ -162,6 +165,7 @@ class Role
|
|||||||
if ($authority->isEmpty()) {
|
if ($authority->isEmpty()) {
|
||||||
throw new InvalidOperateException('角色权限更新失败');
|
throw new InvalidOperateException('角色权限更新失败');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SysRoleModel::commit();
|
SysRoleModel::commit();
|
||||||
} catch (InvalidOperateException $e) {
|
} catch (InvalidOperateException $e) {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class SysRoleValidate extends Validate
|
|||||||
'pid' => 'integer',
|
'pid' => 'integer',
|
||||||
'name' => 'max:64',
|
'name' => 'max:64',
|
||||||
'desc' => 'max:255',
|
'desc' => 'max:255',
|
||||||
'menu_permission.*.menu_id' => 'integer',
|
'menu_permission.*.menu_id' => 'require|integer',
|
||||||
'menu_permission.*.permission' => 'array',
|
'menu_permission.*.permission' => 'array',
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -34,6 +34,7 @@ class SysRoleValidate extends Validate
|
|||||||
'pid.integer' => '父级角色ID必须为整数',
|
'pid.integer' => '父级角色ID必须为整数',
|
||||||
'name.max' => '角色名称最多64个字符',
|
'name.max' => '角色名称最多64个字符',
|
||||||
'desc.max' => '角色描述最多255个字符',
|
'desc.max' => '角色描述最多255个字符',
|
||||||
|
'menu_permission.*.menu_id.require' => '菜单ID不能为空',
|
||||||
'menu_permission.*.menu_id.integer' => '菜单ID必须为整数',
|
'menu_permission.*.menu_id.integer' => '菜单ID必须为整数',
|
||||||
'menu_permission.*.permission.array' => '权限必须为数组',
|
'menu_permission.*.permission.array' => '权限必须为数组',
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user