diff --git a/src/App.vue b/src/App.vue index 84bf10b..0ed2064 100644 --- a/src/App.vue +++ b/src/App.vue @@ -17,11 +17,13 @@ import { getSetting } from "@/utils/settings"; import { useRouter, useRoute } from "vue-router"; import RateLimitModal from "@/components/RateLimitModal.vue"; import Clarity from "@microsoft/clarity"; +import { kvServerProvider } from '@/utils/providers/kvServerProvider'; + const theme = useTheme(); const router = useRouter(); const route = useRoute(); -onMounted(() => { +onMounted(async () => { // 应用保存的主题设置 const savedTheme = getSetting("theme.mode"); theme.global.name.value = savedTheme; @@ -29,6 +31,16 @@ onMounted(() => { // 检查存储提供者类型 checkProviderType(); Clarity.identify(getSetting("device.uuid"), getSetting("server.domain"), getSetting("server.provider"), getSetting("server.classNumber")); // only custom-id is required + + // 如果使用KV服务器,加载命名空间信息 + const provider = getSetting('server.provider'); + if (provider === 'kv-server' || provider === 'classworkscloud') { + try { + await kvServerProvider.loadNamespaceInfo(); + } catch (error) { + console.error('加载命名空间信息失败:', error); + } + } }); // 检查存储提供者类型,如果是已废弃的类型则重定向 diff --git a/src/axios/axios.js b/src/axios/axios.js index cdae19e..3cd2dd7 100644 --- a/src/axios/axios.js +++ b/src/axios/axios.js @@ -16,6 +16,13 @@ axiosInstance.interceptors.request.use( if (siteKey) { requestConfig.headers["x-site-key"] = siteKey; } + + // 自动添加命名空间密码 + const namespacePassword = getSetting("namespace.password"); + if (namespacePassword) { + requestConfig.headers["x-namespace-password"] = namespacePassword; + } + return requestConfig; }, (error) => { diff --git a/src/components/MigrationTool.vue b/src/components/MigrationTool.vue index 26b38c9..a10c655 100644 --- a/src/components/MigrationTool.vue +++ b/src/components/MigrationTool.vue @@ -681,7 +681,7 @@ export default { // 批量导入配置数据 const configResponse = await axios.post( - `${this.targetServerUrl}/${this.machineId}/import/batch-import`, + `${this.targetServerUrl}/${this.machineId}/_batchimport`, batchData, { headers: this.getRequestHeaders(), @@ -798,7 +798,7 @@ export default { // 批量导入配置数据 const configResponse = await axios.post( - `${this.targetServerUrl}/${this.machineId}/import/batch-import`, + `${this.targetServerUrl}/${this.machineId}/_batchimport`, batchData, { headers: this.getRequestHeaders(), @@ -890,7 +890,7 @@ export default { // 发送批量请求 if (Object.keys(batchPayload).length > 0) { const response = await axios.post( - `${this.targetServerUrl}/${this.machineId}/import/batch-import`, + `${this.targetServerUrl}/${this.machineId}/_batchimport`, batchPayload, { headers: this.getRequestHeaders(), diff --git a/src/components/NamespaceAccess.vue b/src/components/NamespaceAccess.vue new file mode 100644 index 0000000..67a0194 --- /dev/null +++ b/src/components/NamespaceAccess.vue @@ -0,0 +1,187 @@ + + + diff --git a/src/components/settings/cards/NamespaceSettingsCard.vue b/src/components/settings/cards/NamespaceSettingsCard.vue new file mode 100644 index 0000000..64822a7 --- /dev/null +++ b/src/components/settings/cards/NamespaceSettingsCard.vue @@ -0,0 +1,427 @@ + + + diff --git a/src/pages/index.vue b/src/pages/index.vue index 8096219..eda4a15 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -11,6 +11,7 @@