| 123456789101112131415161718192021222324252627282930313233343536373839 |
- const API = require("../../../lib/API.js")
- const db = require("../../../plugin/DataBase/db.js")
- const AccessControl = require("../../../lib/AccessControl.js")
- const { BaseStdResponse } = require("../../../BaseStdResponse.js")
- class AdminNoticeUpsert extends API {
- constructor() {
- super()
- this.setPath('/Admin/Notice')
- this.setMethod('POST')
- }
- async onRequest(req, res) {
- const { uuid, session, key, content } = req.body
- if ([uuid, session, key, content].some(v => v === '' || v === null || v === undefined))
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- if (!await AccessControl.checkSession(uuid, session))
- return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
- const permission = await AccessControl.getPermission(uuid)
- if (!permission.includes("admin") && !permission.includes("service") && !permission.includes("server"))
- return res.json({ ...BaseStdResponse.PERMISSION_DENIED })
- const safeKey = String(key).trim()
- if (!safeKey) return res.json({ ...BaseStdResponse.ERR, msg: '公告标识不能为空' })
- const sql = `
- INSERT INTO notice (\`key\`, content)
- VALUES (?, ?)
- ON DUPLICATE KEY UPDATE content = VALUES(content)
- `
- const rows = await db.query(sql, [safeKey, String(content)])
- if (!rows) return res.json({ ...BaseStdResponse.DATABASE_ERR })
- return res.json({ ...BaseStdResponse.OK })
- }
- }
- module.exports.AdminNoticeUpsert = AdminNoticeUpsert
|