artsWork.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /**
  2. * ПОЛУЧЕНИЕ ПЕРЕЧНЕЙ ID СТАТЕЙ В РАБОТЕ (ТОЛЬКО ПО ЗАПРОСУ РЕДАКТОРА)
  3. * Copyright © 2021, А.М.Гольдин. ISC license
  4. */
  5. "use strict";
  6. // Возвращает объект (ключи - статусы)
  7. // {st1: ["ghf46s8h", "hdsfk567"], st2: ["sd546243e"], ...}
  8. // либо пустой объект
  9. // arg - это неиспользуемая переменная, только для соблюдения синтаксиса
  10. // user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
  11. module.exports = async (arg, user) => {
  12. try {
  13. // Проверяем, является ли он редактором
  14. let roles = 0;
  15. let staff = await dbFind("staff", {login: user[1]});
  16. if (staff[0]) roles = staff[0].roles;
  17. let isEditor =
  18. roles.toString(2).padStart(3, '0')[0] == "1" || user[1] == ADMIN;
  19. if (!isEditor) return "{}";
  20. // Получаем массив с неопубликованными статьями
  21. let res = await dbFind("articles",
  22. {$where: function () {return (this.status < 7);}}
  23. );
  24. if (!res.length) return "{}";
  25. // Разбираем его по статусам и отдаем клиенту
  26. let resp = {};
  27. for (let art of res) {
  28. if (!resp[`st${art.status}`]) resp[`st${art.status}`] = [];
  29. resp[`st${art.status}`].push(art._id);
  30. }
  31. return JSON.stringify(resp);
  32. }
  33. catch(e) {console.info(e); return "{}";}
  34. };