GetArticle.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const API = require("../../../lib/API");
  2. const db = require("../../../plugin/DataBase/db");
  3. const AccessControl = require("../../../lib/AccessControl");
  4. const { BaseStdResponse } = require("../../../BaseStdResponse");
  5. // 管理后台获取文章内容
  6. class GetArticle extends API {
  7. constructor() {
  8. super();
  9. this.setPath('/Admin/Article')
  10. this.setMethod('GET')
  11. }
  12. async onRequest(req, res) {
  13. let { uuid, session, id } = req.query
  14. if ([uuid, session, id].some(value => value === '' || value === null || value === undefined))
  15. return res.json({
  16. ...BaseStdResponse.MISSING_PARAMETER
  17. })
  18. // 检查 session
  19. if (!await AccessControl.checkSession(uuid, session))
  20. return res.status(401).json({
  21. ...BaseStdResponse.ACCESS_DENIED
  22. })
  23. // 检查权限
  24. let permission = await AccessControl.getPermission(uuid)
  25. if (!permission.includes("admin") && !permission.includes("article"))
  26. return res.json({
  27. ...BaseStdResponse.PERMISSION_DENIED
  28. })
  29. let sql = `
  30. SELECT
  31. a.id,
  32. a.title,
  33. a.cover,
  34. a.describe,
  35. a.content,
  36. a.type,
  37. a.state,
  38. a.views,
  39. a.time,
  40. u.username AS author
  41. FROM
  42. article a
  43. LEFT JOIN
  44. users u
  45. ON
  46. a.author = u.uuid
  47. WHERE
  48. a.id = ?
  49. `
  50. let rows = await db.query(sql, [id])
  51. if (!rows || rows.length !== 1)
  52. return res.json({
  53. ...BaseStdResponse.MISSING_FILE,
  54. msg: '文章不存在'
  55. })
  56. res.json({
  57. ...BaseStdResponse.OK,
  58. data: rows
  59. })
  60. }
  61. }
  62. module.exports.GetArticle = GetArticle;