| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- const API = require("../../../lib/API")
- const db = require("../../../plugin/DataBase/db")
- const AccessControl = require("../../../lib/AccessControl")
- const { BaseStdResponse } = require("../../../BaseStdResponse")
- class SetUserBan extends API {
- constructor() {
- super()
- this.setPath("/Admin/User/SetUserBan")
- this.setMethod("POST")
- }
- async onRequest(req, res) {
- let { uuid, session, userid, is_banned } = req.body
- const flag = Number(is_banned)
- if ([uuid, session, userid].some(value => value === "" || value === null || value === undefined))
- return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
- if (![0, 1].includes(flag))
- return res.json({ ...BaseStdResponse.ERR, msg: "参数错误" })
- 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"))
- return res.json({ ...BaseStdResponse.PERMISSION_DENIED })
- if (userid === uuid)
- return res.json({ ...BaseStdResponse.ERR, msg: "不能封禁自己的账号" })
- const targetRows = await db.query(
- "SELECT permission FROM users WHERE uuid = ? LIMIT 1",
- [userid]
- )
- if (!targetRows || targetRows.length === 0)
- return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "未找到用户" })
- const targetPermission = targetRows[0].permission || []
- if (targetPermission.includes("admin") || targetPermission.includes("service"))
- return res.json({ ...BaseStdResponse.ERR, msg: "不能封禁管理员或客服账号" })
- const conn = await db.connect()
- try {
- const [r] = await conn.execute(
- "UPDATE users SET is_banned = ? WHERE uuid = ?",
- [flag, userid]
- )
- if (!r || r.affectedRows !== 1)
- return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "未找到用户或更新失败" })
- if (flag === 1)
- await AccessControl.invalidateSession(userid)
- return res.json({
- ...BaseStdResponse.OK,
- msg: flag === 1 ? "已封禁该用户" : "已解除封禁"
- })
- } catch (err) {
- this.logger.error(`设置用户封禁状态失败: ${err.message || err}`)
- return res.json({ ...BaseStdResponse.ERR, msg: "操作失败,请稍后再试" })
- } finally {
- if (conn?.connection && typeof conn.connection.release === "function" && typeof conn?.release === "function") {
- conn.release()
- }
- }
- }
- }
- module.exports.SetUserBan = SetUserBan
|