kevin
efc30156b9
feat: 站点设置接口 JSON 化——/api/admin/settings/*
- settings.go:5 组 save handler 改 JSON 绑定(siteSettingsRequest/
uploadSettingsRequest/downloadSettingsRequest/commentSettingsRequest/
navLinkSettingsRequest);request struct 变更子函数签名(不再触碰
c.PostForm),upload/navlink/download 的 action 分发保留,未知
action 返回 400;enabled 用 *bool(nil 沿用旧默认启用语义)
- favicon/logo 上传拆出:POST /api/admin/settings/site/favicon|logo
(multipart,图片类别校验 + 旧本地文件替换),SiteSettingsSave 只
处理文本/URL/clear(存储路径校验保留 illegal_dir 400)
- main.go:设置旧 POST 路由移除,新 /api/admin/settings 分组注册
- 模板:base.html 新增 blogSettingsForm 委托(data-api-url/data-action/
data-confirm → POST + redirect/alert);settings_site 主表单 JSON +
logo/favicon 选择即上传;navlinks/upload/download/comments 页全部
小表单改委托(约 14 个)
- blogForm:剔除 file 字段(文件走 multipart)
- 测试:TestStorageDirTraversalRejected、TestAddUploadFileTypeRejectsDangerousExtensions
更新 JSON 断言;env 路由补 /api/admin/settings
- main_test 冒烟补设置 API 断言;go build/vet/test 全绿