From 5ae04d4facec52e45077e0765086b9f4d80cd415 Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Sun, 19 Apr 2026 11:33:36 +0800 Subject: [PATCH] refactor(site): use NUXT_PUBLIC_SITE_URL instead of DB publicSiteUrl Made-with: Cursor --- .env.example | 2 ++ app/composables/useGlobalConfig.ts | 3 --- app/pages/me/admin/config/index.vue | 12 +----------- app/pages/me/media/index.vue | 14 ++++++-------- nuxt.config.ts | 6 ++++++ server/service/config/registry.ts | 26 -------------------------- server/service/media/index.ts | 22 +++------------------- server/utils/site-public.test.ts | 26 ++++++++++++++++++++++++++ server/utils/site-public.ts | 24 ++++++++++++++++++++++++ 9 files changed, 68 insertions(+), 67 deletions(-) create mode 100644 server/utils/site-public.test.ts create mode 100644 server/utils/site-public.ts diff --git a/.env.example b/.env.example index 98f6fc8..6309621 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,8 @@ # DATABASE_URL=postgresql://postgres:xxxxxx@localhost:6666/postgres DATABASE_URL=file:./db.sqlite NITRO_PORT=3399 +# 站点对外根 URL(含协议与域名,可带端口)。用于:① 媒体库复制绝对链接 ② 文章/资料里绝对地址图片是否计为本站 /public/assets/ 引用。生产环境务必设置,与浏览器访问地址一致。 +# NUXT_PUBLIC_SITE_URL=https://example.com # Optional: first admin for an empty instance. Creates an admin only when no user has role=admin yet (same username/password rules as registration). BOOTSTRAP_ADMIN_USERNAME= BOOTSTRAP_ADMIN_PASSWORD= \ No newline at end of file diff --git a/app/composables/useGlobalConfig.ts b/app/composables/useGlobalConfig.ts index 858070b..9aa8436 100644 --- a/app/composables/useGlobalConfig.ts +++ b/app/composables/useGlobalConfig.ts @@ -3,8 +3,6 @@ import { request, unwrapApiBody, type ApiResponse } from '../utils/http/factory' export type GlobalConfig = { siteName: string allowRegister: boolean - /** 与后台「站点对外地址」一致;空表示未配置 */ - publicSiteUrl: string } type GlobalConfigResult = { @@ -14,7 +12,6 @@ type GlobalConfigResult = { const DEFAULT_GLOBAL_CONFIG: GlobalConfig = { siteName: 'Person Panel', allowRegister: true, - publicSiteUrl: '', } export function useGlobalConfig() { diff --git a/app/pages/me/admin/config/index.vue b/app/pages/me/admin/config/index.vue index e46f2ce..4db7b30 100644 --- a/app/pages/me/admin/config/index.vue +++ b/app/pages/me/admin/config/index.vue @@ -7,7 +7,6 @@ type GlobalConfigPayload = { config: { siteName: string allowRegister: boolean - publicSiteUrl: string mediaOrphanAutoSweepEnabled: boolean mediaOrphanAutoSweepIntervalMinutes: number } @@ -22,7 +21,6 @@ const loading = ref(true) const saving = ref(false) const siteName = ref('') const allowRegister = ref(true) -const publicSiteUrl = ref('') const mediaOrphanAutoSweepEnabled = ref(false) const mediaOrphanAutoSweepIntervalMinutes = ref(60) @@ -39,7 +37,6 @@ async function load() { const { config: cfg } = await fetchData('/api/config/global') siteName.value = cfg.siteName allowRegister.value = cfg.allowRegister - publicSiteUrl.value = typeof cfg.publicSiteUrl === 'string' ? cfg.publicSiteUrl : '' mediaOrphanAutoSweepEnabled.value = cfg.mediaOrphanAutoSweepEnabled mediaOrphanAutoSweepIntervalMinutes.value = cfg.mediaOrphanAutoSweepIntervalMinutes } finally { @@ -64,7 +61,6 @@ async function save() { try { await putKey('siteName', siteName.value.trim()) await putKey('allowRegister', allowRegister.value) - await putKey('publicSiteUrl', publicSiteUrl.value.trim()) await putKey('mediaOrphanAutoSweepEnabled', mediaOrphanAutoSweepEnabled.value) await putKey('mediaOrphanAutoSweepIntervalMinutes', mediaOrphanAutoSweepIntervalMinutes.value) await load() @@ -82,7 +78,7 @@ async function save() { 应用配置

- 全局设置:站点名称、对外访问地址、开放注册与媒体孤儿自动清扫。 + 全局设置:站点名称、开放注册与媒体孤儿自动清扫。

@@ -103,12 +99,6 @@ async function save() { - - - diff --git a/app/pages/me/media/index.vue b/app/pages/me/media/index.vue index a52288a..326f7a6 100644 --- a/app/pages/me/media/index.vue +++ b/app/pages/me/media/index.vue @@ -1,6 +1,5 @@