diff --git a/ui/console-src/modules/system/roles/components/RoleEditingModal.vue b/ui/console-src/modules/system/roles/components/RoleEditingModal.vue index 324e9f1b4..b2ca00d50 100644 --- a/ui/console-src/modules/system/roles/components/RoleEditingModal.vue +++ b/ui/console-src/modules/system/roles/components/RoleEditingModal.vue @@ -4,6 +4,7 @@ import { useRoleForm, useRoleTemplateSelection } from "@/composables/use-role"; import { rbacAnnotations } from "@/constants/annotations"; import { pluginLabels, roleLabels } from "@/constants/labels"; import { setFocus } from "@/formkit/utils/focus"; +import { resolveDeepDependencies } from "@/utils/role"; import type { Role } from "@halo-dev/api-client"; import { coreApiClient } from "@halo-dev/api-client"; import { VButton, VModal, VSpace } from "@halo-dev/components"; @@ -61,11 +62,9 @@ onMounted(() => { if (props.role) { formState.value = cloneDeep(props.role); - const dependencies = - props.role.metadata.annotations?.[rbacAnnotations.DEPENDENCIES]; - if (dependencies) { - selectedRoleTemplates.value = new Set(JSON.parse(dependencies)); - } + selectedRoleTemplates.value = new Set( + resolveDeepDependencies(props.role, roleTemplates.value || []) + ); } }); @@ -74,13 +73,8 @@ const editingModalTitle = props.role : t("core.role.editing_modal.titles.create"); const handleCreateOrUpdateRole = async () => { - try { - await handleCreateOrUpdate(); - - modal.value?.close(); - } catch (e) { - console.error(e); - } + await handleCreateOrUpdate(); + modal.value?.close(); };