import { ensureKnownConfigKey, setGlobalConfigValue, } from "#server/service/config"; import { toPublicConfigError } from "#server/service/config/errors"; import type { H3Event } from "h3"; type UpdateGlobalConfigBody = { key: string; value: unknown; }; async function assertCanManageGlobalConfig(event: H3Event) { const user = await event.context.auth.requireUser(); // 当前版本先采用最小权限策略:仅首个系统用户可写全局配置。 if (user.id !== 1) { throw createError({ statusCode: 403, statusMessage: "无权限修改全局配置", data: { code: "CONFIG_FORBIDDEN", }, }); } } export default defineWrappedResponseHandler(async (event) => { try { await assertCanManageGlobalConfig(event); const body = await readBody(event); const key = ensureKnownConfigKey(body.key); await setGlobalConfigValue(key, body.value); const value = await event.context.config.getGlobal(key); return R.success({ key, value, }); } catch (err) { throw toPublicConfigError(err); } });