usBlock.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /**
  2. * БЛОКИРОВАНИЕ/РАЗБЛОКИРОВАНИЕ ПОЛЬЗОВАТЕЛЕЙ
  3. * Copyright © 2019, А.М.Гольдин. Modified BSD License
  4. */
  5. "use strict";
  6. // В запросе приходит массив [логин, статус], где статус - это block или unblock
  7. // Возвращает "success", "already" (если запрашиваемый статус уже
  8. // установлен), либо "none", если пользователя с таким логином не существует
  9. module.exports = async req => {
  10. try {
  11. let login = req[0], oper = req[1];
  12. if (!login || !oper) return "none";
  13. // Проверяем, есть ли вообще пользователь с таким логином и кто он
  14. let collect = "pupils";
  15. let res = await dbFind("pupils", {Ulogin: login});
  16. if (!res.length) {
  17. res = await dbFind("staff", {Ulogin: login});
  18. if (res.length) collect = "staff";
  19. else return "none";
  20. }
  21. // Получаем его текущий статус (заблокирован или нет)
  22. let user = res[0], status = user.block || false;
  23. // Устанавливаем/сбрасываем статус и возвращаем результат
  24. if (oper == "block") {
  25. if (status) return "already";
  26. user.block = true;
  27. db[collect].update({Ulogin: login}, user, {});
  28. }
  29. else {
  30. if (!status) return "already";
  31. delete user.block;
  32. db[collect].update({Ulogin: login}, user, {});
  33. }
  34. return "success";
  35. }
  36. catch(e) {return "none";}
  37. };