From 0045ae18cbe69b3f5dc7950625013122c4bfc93a Mon Sep 17 00:00:00 2001 From: jayhgq Date: Mon, 8 Jun 2026 15:01:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=B3=BB=E7=BB=9F=E6=A0=87=E9=A2=98=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 后端新增公开系统设置接口,仅允许获取id为1或key为"系统标题"的配置项 2. 管理后台登录页和布局页改为动态获取系统标题作为页面标题 3. 两处页面均在挂载时调用接口获取系统标题并更新对应显示文本 --- backend/auth/apps/settings/urls.py | 24 +++++++++++++++++++ .../src/modules/admin/layout/AdminLayout.vue | 16 +++++++++++-- .../src/modules/admin/views/LoginView.vue | 11 ++++++++- 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/backend/auth/apps/settings/urls.py b/backend/auth/apps/settings/urls.py index c3f4b33..f2385c8 100644 --- a/backend/auth/apps/settings/urls.py +++ b/backend/auth/apps/settings/urls.py @@ -67,6 +67,30 @@ async def get_settings( return [SystemSettingResponse.model_validate(s) for s in settings] +@router.get("/public", response_model=SystemSettingResponse) +async def get_public_setting( + setting_id: int = None, + key: str = None, + db: AsyncSession = Depends(get_db), +): + """公开接口:获取系统设置(仅允许获取id为1或key为"系统标题"的内容)""" + if setting_id is not None: + if setting_id != 1: + raise HTTPException(status_code=403, detail="无权访问该设置项") + result = await db.execute(select(SystemSetting).filter(SystemSetting.id == setting_id)) + elif key is not None: + if key != "系统标题": + raise HTTPException(status_code=403, detail="无权访问该设置项") + result = await db.execute(select(SystemSetting).filter(SystemSetting.key == key)) + else: + raise HTTPException(status_code=400, detail="必须提供setting_id或key参数") + + setting = result.scalar_one_or_none() + if not setting: + raise HTTPException(status_code=404, detail="设置项不存在") + return setting + + @router.get("/{setting_id}", response_model=SystemSettingResponse) async def get_setting( setting_id: int, diff --git a/frontend/src/modules/admin/layout/AdminLayout.vue b/frontend/src/modules/admin/layout/AdminLayout.vue index dc30666..838eccb 100644 --- a/frontend/src/modules/admin/layout/AdminLayout.vue +++ b/frontend/src/modules/admin/layout/AdminLayout.vue @@ -1,7 +1,7 @@