From 3e916aa3bcd4dd55b6f645c486a7b8c45b1f98d3 Mon Sep 17 00:00:00 2001 From: overtrue Date: Wed, 9 Jul 2025 21:51:30 +0800 Subject: [PATCH] fix: custom server config --- pages/auth/login.vue | 61 +++++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 15 deletions(-) diff --git a/pages/auth/login.vue b/pages/auth/login.vue index 6c11675..9754ff3 100644 --- a/pages/auth/login.vue +++ b/pages/auth/login.vue @@ -75,21 +75,10 @@ const handleLogin = async () => { const credentials = method.value === 'accessKeyAndSecretKey' ? accessKeyAndSecretKey.value : sts.value try { - // 使用 configManager 保存配置(如果有 public/config.json 则不保存) - const saved = await configManager.saveConfig({ - protocol: serverConfig.value.protocol, - host: serverConfig.value.host, - port: serverConfig.value.port, - region: serverConfig.value.region - }) - - if (saved) { - message.success(t('Server configuration saved')) - } - await auth.login(credentials) message.success(t('Login Success')) - window.location.href = '/' + // 重新加载页面以确保新的配置生效 + window.location.reload() } catch (error) { expandedNames.value = ['server-config'] configAlert.value = t('Login failed, please check server configuration') @@ -134,12 +123,54 @@ const validateAndParseUrl = () => { urlValidationStatus.value = 'success' urlError.value = '' + + // 立即保存配置并更新 $siteConfig + saveConfigAndUpdateSiteConfig() } catch (error) { urlValidationStatus.value = 'error' urlError.value = t('Invalid URL format') } } +// 保存配置并更新 $siteConfig 的函数 +const saveConfigAndUpdateSiteConfig = async () => { + try { + // 保存配置到 localStorage + const saved = await configManager.saveConfig({ + protocol: serverConfig.value.protocol, + host: serverConfig.value.host, + port: serverConfig.value.port, + region: serverConfig.value.region + }) + + if (saved) { + // 动态更新 $siteConfig + const nuxtApp = useNuxtApp() + const currentConfig = nuxtApp.$siteConfig + const updatedConfig = { + ...currentConfig, + api: { + baseURL: `${serverConfig.value.protocol}://${serverConfig.value.host}:${serverConfig.value.port}/rustfs/admin/v3` + }, + s3: { + endpoint: `${serverConfig.value.protocol}://${serverConfig.value.host}:${serverConfig.value.port}`, + region: serverConfig.value.region + } + } + + // 更新 $siteConfig + nuxtApp.$siteConfig = updatedConfig + } + } catch (error) { + console.warn('Failed to save config:', error) + } +} + +// 监听 region 变化 +const onRegionChange = () => { + saveConfigAndUpdateSiteConfig() +} + const onUrlInput = () => { // 清除之前的错误状态 if (urlValidationStatus.value === 'error') { @@ -212,7 +243,7 @@ const onUrlInput = () => {
- +
@@ -248,7 +279,7 @@ const onUrlInput = () => {
- +