fix: not reset permission after cloning a role (#4333)

#### What type of PR is this?

/area console
/kind bug
/milestone 2.8.x

#### What this PR does / why we need it:

修复创建角色时,如果基于某个角色创建,实际权限可能不会更新的问题。

#### Special notes for your reviewer:

需要测试:

1. 基于超级管理员创建新角色。
2. 取消勾选一些角色模板。
3. 测试此角色是否存在取消了勾选的角色模板。

#### Does this PR introduce a user-facing change?

```release-note
修复创建角色时,如果基于某个角色创建,实际权限可能不会更新的问题。
```
pull/4344/head
Ryan Wang 2023-08-01 10:46:20 +08:00 committed by GitHub
parent 81e985f2af
commit 370b44f9b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 8 deletions

View File

@ -29,7 +29,6 @@ import { formatDatetime } from "@/utils/date";
import { useFetchRole } from "@/modules/system/roles/composables/use-role";
// libs
import cloneDeep from "lodash.clonedeep";
import { apiClient } from "@/utils/api-client";
import Fuse from "fuse.js";
import { usePermission } from "@/utils/permission";
@ -97,13 +96,22 @@ const onEditingModalClose = () => {
};
const handleCloneRole = async (role: Role) => {
const roleToCreate = cloneDeep<Role>(role);
roleToCreate.metadata.name = "";
roleToCreate.metadata.generateName = "role-";
roleToCreate.metadata.creationTimestamp = undefined;
//
delete roleToCreate.metadata.labels?.[roleLabels.SYSTEM_RESERVED];
const roleToCreate: Role = {
apiVersion: "v1alpha1",
kind: "Role",
metadata: {
name: "",
generateName: "role-",
labels: {},
annotations: {
[rbacAnnotations.DEPENDENCIES]:
role.metadata.annotations?.[rbacAnnotations.DEPENDENCIES] || "",
[rbacAnnotations.DISPLAY_NAME]:
role.metadata.annotations?.[rbacAnnotations.DISPLAY_NAME] || "",
},
},
rules: [],
};
//
if (role.metadata.name === SUPER_ROLE_NAME) {