refactor(core): 重构访问控制和插件实例化逻辑

- 修改访问控制和插件注册方式,使用异步函数统一实例化逻辑
- 更新相关组件和控制器以适应新的异步实例化方式
- 优化 DNS 提供商选择器,增加访问类型支持
This commit is contained in:
xiaojunnuo
2025-04-12 01:21:50 +08:00
parent c4fb138ae8
commit 3d8a5196a0
15 changed files with 79 additions and 39 deletions
@@ -35,7 +35,7 @@ import { HttpRecord } from "/@/components/plugins/cert/domains-verify-plan-edito
import { dict } from "@fast-crud/fast-crud";
defineOptions({
name: "HttpVerifyPlan"
name: "HttpVerifyPlan",
});
const emit = defineEmits(["update:modelValue", "change"]);
@@ -53,12 +53,12 @@ watch(
(value: any) => {
if (value) {
records.value = {
...value
...value,
};
}
},
{
immediate: true
immediate: true,
}
);
@@ -75,8 +75,8 @@ const uploaderTypeDict = dict({
{ label: "阿里云OSS", value: "alioss" },
{ label: "腾讯云COS", value: "tencentcos" },
{ label: "七牛OSS", value: "qiniuoss" },
{ label: "SSH(已废弃,请选择SFTP方式)", value: "ssh", disabled: true }
]
{ label: "SSH(已废弃,请选择SFTP方式)", value: "ssh", disabled: true },
],
});
</script>
@@ -32,14 +32,21 @@
<div class="form-item">
<span class="label">DNS类型</span>
<span class="input">
<fs-dict-select v-model:value="item.dnsProviderType" size="small" :dict="dnsProviderTypeDict" placeholder="DNS提供商" @change="onPlanChanged"></fs-dict-select>
<fs-dict-select
v-model:value="item.dnsProviderType"
size="small"
:dict="dnsProviderTypeDict"
placeholder="DNS提供商"
@change="onPlanChanged"
@selected-change="onDnsProviderChange(item, $event)"
></fs-dict-select>
</span>
</div>
<a-divider type="vertical" />
<div class="form-item">
<span class="label">DNS授权</span>
<span class="input">
<access-selector v-model="item.dnsProviderAccessId" size="small" :type="item.dnsProviderType" placeholder="请选择" @change="onPlanChanged"></access-selector>
<access-selector v-model="item.dnsProviderAccessId" size="small" :type="item.dnsProviderAccessType || item.dnsProviderType" placeholder="请选择" @change="onPlanChanged"></access-selector>
</span>
</div>
</div>
@@ -101,6 +108,10 @@ const emit = defineEmits<{
"update:modelValue": any;
}>();
function onDnsProviderChange(item: any, option: any) {
item.dnsProviderAccessType = option.accessType;
}
const fullscreen = ref(false);
function fullscreenExit() {
if (fullscreen.value) {
@@ -12,6 +12,7 @@ export type DomainVerifyPlanInput = {
domains: string[];
type: "cname" | "dns" | "http";
dnsProviderType?: string;
dnsProviderAccessType?: string;
dnsProviderAccessId?: number;
cnameVerifyPlan?: Record<string, CnameRecord>;
httpVerifyPlan?: Record<string, HttpRecord>;