SetUserPermissions.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const API = require("../../../lib/API")
  2. const AccessControl = require("../../../lib/AccessControl")
  3. const db = require("../../../plugin/DataBase/db")
  4. const { BaseStdResponse } = require("../../../BaseStdResponse")
  5. class SetUserPermissions extends API {
  6. constructor() {
  7. super()
  8. this.setPath("/Admin/Permission/User")
  9. this.setMethod("POST")
  10. this.setPermissionCode("action.user.permissionManage")
  11. }
  12. async onRequest(req, res) {
  13. const { userid, permissionCodes, deniedBasicPermissionCodes } = req.body
  14. if ([userid, permissionCodes].some(value => value === "" || value === null || value === undefined))
  15. return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  16. if (!Array.isArray(permissionCodes))
  17. return res.json({ ...BaseStdResponse.ERR, msg: "权限列表格式错误" })
  18. if (deniedBasicPermissionCodes !== undefined && deniedBasicPermissionCodes !== null && !Array.isArray(deniedBasicPermissionCodes))
  19. return res.json({ ...BaseStdResponse.ERR, msg: "基础权限关闭列表格式错误" })
  20. const rows = await db.query("SELECT uuid FROM users WHERE uuid = ? LIMIT 1", [userid])
  21. if (!rows || rows.length !== 1)
  22. return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "未找到用户" })
  23. try {
  24. await AccessControl.setUserPermissionCodes(userid, permissionCodes)
  25. if (Array.isArray(deniedBasicPermissionCodes))
  26. await AccessControl.setUserDeniedBasicPermissionCodes(userid, deniedBasicPermissionCodes)
  27. const effectivePermissionCodes = await AccessControl.getUserPermissionCodes(userid)
  28. return res.json({
  29. ...BaseStdResponse.OK,
  30. msg: "权限已保存",
  31. data: { effectivePermissionCodes }
  32. })
  33. } catch (error) {
  34. return res.json({ ...BaseStdResponse.ERR, msg: error.message || "保存权限失败" })
  35. }
  36. }
  37. }
  38. module.exports.SetUserPermissions = SetUserPermissions