getRevCorr.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * ПОЛУЧЕНИЕ ДАННЫХ О РЕЦЕНЗЕНТАХ И КОРРЕКТОРАХ (ТОЛЬКО ПО ЗАПРОСУ РЕДАКТОРА)
  3. * Copyright © 2021, А.М.Гольдин. ISC license
  4. */
  5. "use strict";
  6. // Возвращает строку для вставки в <select>
  7. // arg - это "rev" или "corr"
  8. // user - это данные клиента [3, "ivanov", "Иванов", "Ян", "Карлович"]
  9. module.exports = async (arg, user) => {
  10. try {
  11. // Проверяем, является ли он редактором
  12. let roles = 0;
  13. let staff = await dbFind("staff", {login: user[1]});
  14. if (staff[0]) roles = staff[0].roles;
  15. let isEditor =
  16. roles.toString(2).padStart(3, '0')[0] == "1" || user[1] == ADMIN;
  17. if (!isEditor) return "none";
  18. // Допустимые статусы для рецензента и корректора
  19. let status = arg == "rev" ? [1, 3, 5, 7] : [2, 3, 6, 7];
  20. // Получаем всех сотрудников из базы и фильтруем
  21. let resp = '';
  22. if (user[1] == ADMIN)
  23. resp += `<option value="ADMIN">Я (главный редактор)</option>`;
  24. let res = await dbFind("staff", {});
  25. for (let sotr of res) {
  26. if (!status.includes(sotr.roles)) continue;
  27. resp += `<option value="${sotr.login}">${sotr.fio}</option>`;
  28. }
  29. if (!resp) resp = "none";
  30. return resp;
  31. }
  32. catch(e) {console.info(e); return "none";}
  33. };