delArticle.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /**
  2. * ПОЛНОЕ УДАЛЕНИЕ НЕОПУБЛИКОВАННОЙ СТАТЬИ
  3. * Copyright © 2021, А.М.Гольдин. ISC license
  4. */
  5. "use strict";
  6. // Возвращает success или none
  7. // id - это id удаляемой статьи :)
  8. // user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
  9. module.exports = async (id, user) => {
  10. try {
  11. // Промисификатор коллбэка удаления папки
  12. const delFolder = id => {
  13. return new Promise((resolve, reject) => {
  14. fs.rm(__dirname + "/../draft/" + id, {recursive: true}, e => {
  15. if (e) reject("none"); else resolve("success");
  16. })
  17. })
  18. };
  19. // Является ли юзер автором статьи или главным редактором?
  20. // Не опубликована ли уже статья (для НЕ главного редактора)?
  21. let res = await dbFind("articles", {_id: id});
  22. if (!res.length) return "none";
  23. if (user[1] !== global.ADMIN) {
  24. if (res[0].us == user[1]) {if (res[0].status == 7) return "none";}
  25. else return "none";
  26. }
  27. // Удаляем папку и запись из базы
  28. let success = await delFolder(id);
  29. if (success == "success") db.articles.remove({_id: id}, {});
  30. return success;
  31. }
  32. catch(e) {return "none";}
  33. };