mirror of https://github.com/halo-dev/halo
Fix role dependency handling in role editing form (#7684)
#### What type of PR is this? /area ui /kind bug /milestone 2.21.x #### What this PR does / why we need it: See #7676 #### Which issue(s) this PR fixes: Fixes #7676 #### Special notes for your reviewer: #### Does this PR introduce a user-facing change? ```release-note 修复角色修改表单中,所选权限可能出现不完整的问题。 ```pull/7700/head
parent
3345ccb035
commit
e6f8783389
|
@ -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<string>(
|
||||
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();
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
|
@ -196,7 +190,10 @@ const handleCreateOrUpdateRole = async () => {
|
|||
</dt>
|
||||
<dd class="text-sm text-gray-900">
|
||||
<ul class="space-y-2">
|
||||
<li v-for="(roleTemplate, index) in group.roles" :key="index">
|
||||
<li
|
||||
v-for="roleTemplate in group.roles"
|
||||
:key="roleTemplate.metadata.name"
|
||||
>
|
||||
<label
|
||||
class="inline-flex w-full cursor-pointer flex-row items-center gap-4 rounded-base border p-5 hover:border-primary"
|
||||
>
|
||||
|
|
Loading…
Reference in New Issue