Files
rill/frontend/src/api/site.ts
T
kevin 588b63a15b 新增底部导航链接配置与 Favicon 上传
- nav_links 增加 position(header/footer,迁移 v11),后台“导航链接”拆为头部/底部两张卡片,页脚链接支持多语言、新窗口与点分隔,删除硬编码的关于我们等链接
- site_settings 增加 favicon(迁移 v12),新增 PUT/DELETE /api/site/favicon,支持 ICO/PNG/SVG 等且不裁剪,引用计数与 Logo 一致自动管理
- 文件服务识别 SVG 并允许内联,统一附加 CSP(default-src 'none'; sandbox)防止存储型 XSS;Logo 维持仅栅格
- 前端 SiteInfoForm 增加 Favicon 上传/清空/预览,App.vue 动态更新 link rel=icon,三语文案补齐
- 补充位置与 Favicon 的接口/引用计数/安全头测试,重新生成 Swagger 文档
2026-09-21 23:23:11 +08:00

54 lines
1.2 KiB
TypeScript

import { request } from './http'
export interface SiteInfo {
site_name: string
logo: string
favicon: string
footer: string
updated_at: string
}
export interface UpdateSitePayload {
site_name: string
logo: string
favicon: string
footer: string
}
export function getSiteInfo(): Promise<SiteInfo> {
return request<SiteInfo>('/site')
}
export function updateSiteInfo(payload: UpdateSitePayload): Promise<SiteInfo> {
return request<SiteInfo>('/site', {
method: 'PUT',
body: JSON.stringify(payload),
})
}
export function uploadSiteLogo(file: File): Promise<SiteInfo> {
const form = new FormData()
form.append('file', file, file.name)
return request<SiteInfo>('/site/logo', {
method: 'PUT',
body: form,
})
}
export function deleteSiteLogo(): Promise<SiteInfo> {
return request<SiteInfo>('/site/logo', { method: 'DELETE' })
}
export function uploadSiteFavicon(file: File): Promise<SiteInfo> {
const form = new FormData()
form.append('file', file, file.name)
return request<SiteInfo>('/site/favicon', {
method: 'PUT',
body: form,
})
}
export function deleteSiteFavicon(): Promise<SiteInfo> {
return request<SiteInfo>('/site/favicon', { method: 'DELETE' })
}