GetUserPermissions.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 GetUserPermissions extends API {
  6. constructor() {
  7. super()
  8. this.setPath("/Admin/Permission/User")
  9. this.setMethod("GET")
  10. this.setPermissionCode("action.user.permissionManage")
  11. }
  12. async onRequest(req, res) {
  13. const { userid } = req.query
  14. if ([userid].some(value => value === "" || value === null || value === undefined))
  15. return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  16. const rows = await db.query(
  17. "SELECT uuid, username, permission FROM users WHERE uuid = ? LIMIT 1",
  18. [userid]
  19. )
  20. if (!rows || rows.length !== 1)
  21. return res.json({ ...BaseStdResponse.MISSING_FILE, msg: "未找到用户" })
  22. const directPermissionCodes = await AccessControl.getUserDirectPermissionCodes(userid)
  23. const deniedBasicPermissionCodes = await AccessControl.getUserDeniedBasicPermissionCodes(userid)
  24. const effectivePermissionCodes = await AccessControl.getUserPermissionCodes(userid)
  25. return res.json({
  26. ...BaseStdResponse.OK,
  27. data: {
  28. user: {
  29. uuid: rows[0].uuid,
  30. username: rows[0].username,
  31. roles: AccessControl.parseArray(rows[0].permission)
  32. },
  33. directPermissionCodes,
  34. deniedBasicPermissionCodes,
  35. effectivePermissionCodes
  36. }
  37. })
  38. }
  39. }
  40. module.exports.GetUserPermissions = GetUserPermissions