user-group-relation.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import loggerFactory from '~/utils/logger';
  2. const logger = loggerFactory('growi:routes:apiv3:user-group-relation'); // eslint-disable-line no-unused-vars
  3. const express = require('express');
  4. const ErrorV3 = require('../../models/vo/error-apiv3');
  5. const { serializeUserGroupRelationSecurely } = require('../../models/serializers/user-group-relation-serializer');
  6. const router = express.Router();
  7. /**
  8. * @swagger
  9. * tags:
  10. * name: UserGroupRelation
  11. */
  12. module.exports = (crowi) => {
  13. const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
  14. const adminRequired = require('../../middlewares/admin-required')(crowi);
  15. const { UserGroupRelation } = crowi.models;
  16. /**
  17. * @swagger
  18. * paths:
  19. * /user-group-relations:
  20. * get:
  21. * tags: [UserGroupRelation]
  22. * operationId: listUserGroupRelations
  23. * summary: /user-group-relations
  24. * description: Gets the user group relations
  25. * responses:
  26. * 200:
  27. * description: user group relations are fetched
  28. * content:
  29. * application/json:
  30. * schema:
  31. * properties:
  32. * userGroupRelations:
  33. * type: object
  34. * description: contains arrays user objects related
  35. */
  36. router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => { // TODO 85062: enable groupIds to filter
  37. try {
  38. const relations = await UserGroupRelation.find().populate('relatedUser');
  39. const serialized = relations.map(relation => serializeUserGroupRelationSecurely(relation));
  40. return res.apiv3({ userGroupRelations: serialized });
  41. }
  42. catch (err) {
  43. const msg = 'Error occurred in fetching user group relations';
  44. logger.error('Error', err);
  45. return res.apiv3Err(new ErrorV3(msg, 'user-group-relation-list-fetch-failed'));
  46. }
  47. });
  48. return router;
  49. };
  50. // const MAX_PAGE_LIST = 50;
  51. // function createPager(total, limit, page, pagesCount, maxPageList) {
  52. // const pager = {
  53. // page,
  54. // pagesCount,
  55. // pages: [],
  56. // total,
  57. // previous: null,
  58. // previousDots: false,
  59. // next: null,
  60. // nextDots: false,
  61. // };
  62. // if (page > 1) {
  63. // pager.previous = page - 1;
  64. // }
  65. // if (page < pagesCount) {
  66. // pager.next = page + 1;
  67. // }
  68. // let pagerMin = Math.max(1, Math.ceil(page - maxPageList / 2));
  69. // let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList / 2));
  70. // if (pagerMin === 1) {
  71. // if (MAX_PAGE_LIST < pagesCount) {
  72. // pagerMax = MAX_PAGE_LIST;
  73. // }
  74. // else {
  75. // pagerMax = pagesCount;
  76. // }
  77. // }
  78. // if (pagerMax === pagesCount) {
  79. // if ((pagerMax - MAX_PAGE_LIST) < 1) {
  80. // pagerMin = 1;
  81. // }
  82. // else {
  83. // pagerMin = pagerMax - MAX_PAGE_LIST;
  84. // }
  85. // }
  86. // pager.previousDots = null;
  87. // if (pagerMin > 1) {
  88. // pager.previousDots = true;
  89. // }
  90. // pager.nextDots = null;
  91. // if (pagerMax < pagesCount) {
  92. // pager.nextDots = true;
  93. // }
  94. // for (let i = pagerMin; i <= pagerMax; i++) {
  95. // pager.pages.push(i);
  96. // }
  97. // return pager;
  98. // }