delFile.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /**
  2. * УДАЛЕНИЕ ФАЙЛА, ЗАГРУЖЕННОГО ПОЛЬЗОВАТЕЛЕМ
  3. * Copyright © 2021, А.М.Гольдин. ISC license
  4. */
  5. "use strict";
  6. // Возвращает success или none
  7. // fullName - это имя файла типа kjhg65j/12.svg
  8. // user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
  9. module.exports = async (fullName, user) => {
  10. try {
  11. if (!/^\w+\/\d+\.(jpg|png|svg)$/.test(fullName)) return "none";
  12. // Промисификатор коллбэка удаления файла
  13. const deleteFile = path => {
  14. return new Promise((resolve, reject) => {
  15. fs.rm(__dirname + "/../draft/" + path, e => {
  16. if (e) reject("none"); else resolve("success");
  17. })
  18. })
  19. };
  20. // Является ли юзер автором статьи?
  21. let id = fullName.split('/')[0];
  22. let res = await dbFind("articles", {_id: id});
  23. if (!res.length) return "none";
  24. if (res[0].us !== user[1]) return "none";
  25. // Удаляем файл
  26. let success = await deleteFile(fullName);
  27. return success;
  28. }
  29. catch(e) {return "none";}
  30. };