| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- const API = require('../../../lib/API')
- const AccessControl = require('../../../lib/AccessControl')
- const { BaseStdResponse } = require('../../../BaseStdResponse')
- const { CONFIG_KEYS, getAllRuntimeConfigs, saveRuntimeConfig, selectRuntimeConfig } = require('../../../lib/RuntimeConfig')
- async function checkAdmin(uuid, session) {
- if (!await AccessControl.checkSession(uuid, session)) return false
- const permissions = await AccessControl.getPermission(uuid)
- return permissions.includes('admin') || permissions.includes('server')
- }
- class GetRuntimeConfig extends API {
- constructor() { super(); this.setPath('/Admin/System/RuntimeConfig'); this.setMethod('GET') }
- async onRequest(req, res) {
- const { uuid, session } = req.query
- if (!uuid || !session) return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- if (!await checkAdmin(uuid, session)) return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- return res.json({ ...BaseStdResponse.OK, data: await getAllRuntimeConfigs() })
- }
- }
- class SaveRuntimeConfig extends API {
- constructor() { super(); this.setPath('/Admin/System/RuntimeConfig'); this.setMethod('PUT') }
- async onRequest(req, res) {
- const { uuid, session, config } = req.body
- if (!uuid || !session || !config || typeof config !== 'object') return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- if (!await checkAdmin(uuid, session)) return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- try {
- if (!CONFIG_KEYS.includes(config.key)) return res.json({ ...BaseStdResponse.ERR, msg: `不支持的配置项:${config.key}` })
- await saveRuntimeConfig({ ...config, updatedBy: uuid })
- return res.json({ ...BaseStdResponse.OK })
- } catch (error) {
- return res.json({ ...BaseStdResponse.ERR, msg: error.message || '保存配置失败' })
- }
- }
- }
- class SelectRuntimeConfig extends API {
- constructor() { super(); this.setPath('/Admin/System/RuntimeConfig/Select'); this.setMethod('PUT') }
- async onRequest(req, res) {
- const { uuid, session, key, name } = req.body
- if (!uuid || !session || !key || !name) return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- if (!await checkAdmin(uuid, session)) return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- try { await selectRuntimeConfig({ key, name, updatedBy: uuid }); return res.json({ ...BaseStdResponse.OK }) }
- catch (error) { return res.json({ ...BaseStdResponse.ERR, msg: error.message || '切换配置失败' }) }
- }
- }
- module.exports = { GetRuntimeConfig, SaveRuntimeConfig, SelectRuntimeConfig }
|