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 @@