mizozobu před 6 roky
rodič
revize
c0b9af7f53

+ 1 - 1
src/client/js/components/Admin/UserGroup/UserGroupPage.jsx

@@ -58,7 +58,7 @@ class UserGroupPage extends React.Component {
 
   async deleteUserGroupById({ deleteGroupId, actionName, transferToUserGroupId }) {
     try {
-      const res = await this.props.crowi.apiPost(`/v3/user-groups/delete/${deleteGroupId}`, {
+      const res = await this.props.crowi.apiPost(`/v3/user-groups/${deleteGroupId}/delete`, {
         actionName,
         transferToUserGroupId,
       });

+ 2 - 15
src/server/routes/apiv3/index.js

@@ -8,25 +8,12 @@ const router = express.Router();
 
 
 module.exports = (crowi) => {
-  const middleware = require('../../util/middlewares');
-  const { loginRequired, adminRequired, formValid } = middleware;
-
-  const form = require('../../form/apiv3');
-
-  const userGroup = require('./user-group')(crowi);
-  const userGroupRelation = require('./user-group-relation')(crowi);
 
   router.use('/healthcheck', require('./healthcheck')(crowi));
 
-  // user groups
-  router.get('/user-groups', loginRequired(crowi), adminRequired(), userGroup.find);
-  // router.get('/user-groups/:id', loginRequired(crowi), adminRequired(), adminUserGroup.findOne);
-  router.post('/user-groups/create', loginRequired(crowi), adminRequired(), form.userGroup.create, formValid(), userGroup.create);
-  // router.post('/user-groups/update/:id', loginRequired(crowi), adminRequired(), adminUserGroup.update);
-  router.post('/user-groups/delete/:id', loginRequired(crowi), adminRequired(), form.userGroup.delete, formValid(), userGroup.delete);
+  router.use('/user-groups', require('./user-group')(crowi));
 
-  // user group relations
-  router.get('/user-group-relations', loginRequired(crowi), adminRequired(), userGroupRelation.find);
+  router.use('/user-group-relations', require('./user-group-relation')(crowi));
 
   return router;
 };

+ 77 - 68
src/server/routes/apiv3/user-group-relation.js

@@ -1,13 +1,22 @@
-/* eslint-disable no-use-before-define */
-module.exports = (crowi) => {
-  const logger = require('@alias/logger')('growi:routes:apiv3:user-group');
-  const ApiResponse = require('../../util/apiResponse');
+const loggerFactory = require('@alias/logger');
+
+const logger = loggerFactory('growi:routes:apiv3:user-group-relation'); // eslint-disable-line no-unused-vars
+
+const express = require('express');
+
+const router = express.Router();
+
+const middleware = require('../../util/middlewares');
 
-  const { UserGroupRelation, UserGroup } = crowi.models;
+const { loginRequired, adminRequired, formValid } = middleware;
 
-  const api = {};
+const ApiResponse = require('../../util/apiResponse');
 
-  api.find = async(req, res) => {
+module.exports = (crowi) => {
+  const { UserGroup, UserGroupRelation } = crowi.models;
+
+  router.get('/', loginRequired(crowi), adminRequired(), async(req, res) => {
+    // TODO: filter with querystring? or body
     try {
       const page = parseInt(req.query.page) || 1;
       const result = await UserGroup.findUserGroupsWithPagination({ page });
@@ -32,65 +41,65 @@ module.exports = (crowi) => {
       logger.error('Error', err);
       return res.json(ApiResponse.error('Error occurred in fetching user group relations'));
     }
-  };
-
-  // const MAX_PAGE_LIST = 50;
-
-  // function createPager(total, limit, page, pagesCount, maxPageList) {
-  //   const pager = {
-  //     page,
-  //     pagesCount,
-  //     pages: [],
-  //     total,
-  //     previous: null,
-  //     previousDots: false,
-  //     next: null,
-  //     nextDots: false,
-  //   };
-
-  //   if (page > 1) {
-  //     pager.previous = page - 1;
-  //   }
-
-  //   if (page < pagesCount) {
-  //     pager.next = page + 1;
-  //   }
-
-  //   let pagerMin = Math.max(1, Math.ceil(page - maxPageList / 2));
-  //   let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList / 2));
-  //   if (pagerMin === 1) {
-  //     if (MAX_PAGE_LIST < pagesCount) {
-  //       pagerMax = MAX_PAGE_LIST;
-  //     }
-  //     else {
-  //       pagerMax = pagesCount;
-  //     }
-  //   }
-  //   if (pagerMax === pagesCount) {
-  //     if ((pagerMax - MAX_PAGE_LIST) < 1) {
-  //       pagerMin = 1;
-  //     }
-  //     else {
-  //       pagerMin = pagerMax - MAX_PAGE_LIST;
-  //     }
-  //   }
-
-  //   pager.previousDots = null;
-  //   if (pagerMin > 1) {
-  //     pager.previousDots = true;
-  //   }
-
-  //   pager.nextDots = null;
-  //   if (pagerMax < pagesCount) {
-  //     pager.nextDots = true;
-  //   }
-
-  //   for (let i = pagerMin; i <= pagerMax; i++) {
-  //     pager.pages.push(i);
-  //   }
-
-  //   return pager;
-  // }
-
-  return api;
+  });
+
+  return router;
 };
+
+// const MAX_PAGE_LIST = 50;
+
+// function createPager(total, limit, page, pagesCount, maxPageList) {
+//   const pager = {
+//     page,
+//     pagesCount,
+//     pages: [],
+//     total,
+//     previous: null,
+//     previousDots: false,
+//     next: null,
+//     nextDots: false,
+//   };
+
+//   if (page > 1) {
+//     pager.previous = page - 1;
+//   }
+
+//   if (page < pagesCount) {
+//     pager.next = page + 1;
+//   }
+
+//   let pagerMin = Math.max(1, Math.ceil(page - maxPageList / 2));
+//   let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList / 2));
+//   if (pagerMin === 1) {
+//     if (MAX_PAGE_LIST < pagesCount) {
+//       pagerMax = MAX_PAGE_LIST;
+//     }
+//     else {
+//       pagerMax = pagesCount;
+//     }
+//   }
+//   if (pagerMax === pagesCount) {
+//     if ((pagerMax - MAX_PAGE_LIST) < 1) {
+//       pagerMin = 1;
+//     }
+//     else {
+//       pagerMin = pagerMax - MAX_PAGE_LIST;
+//     }
+//   }
+
+//   pager.previousDots = null;
+//   if (pagerMin > 1) {
+//     pager.previousDots = true;
+//   }
+
+//   pager.nextDots = null;
+//   if (pagerMax < pagesCount) {
+//     pager.nextDots = true;
+//   }
+
+//   for (let i = pagerMin; i <= pagerMax; i++) {
+//     pager.pages.push(i);
+//   }
+
+//   return pager;
+// }

+ 49 - 19
src/server/routes/apiv3/user-group.js

@@ -1,13 +1,21 @@
-/* eslint-disable no-use-before-define */
-module.exports = (crowi) => {
-  const logger = require('@alias/logger')('growi:routes:apiv3:user-group');
-  const ApiResponse = require('../../util/apiResponse');
+const loggerFactory = require('@alias/logger');
 
-  const { UserGroup, UserGroupRelation } = crowi.models;
+const logger = loggerFactory('growi:routes:apiv3:user-group'); // eslint-disable-line no-unused-vars
+
+const express = require('express');
+
+const router = express.Router();
+
+const middleware = require('../../util/middlewares');
+
+const { loginRequired, adminRequired, formValid } = middleware;
 
-  const api = {};
+const ApiResponse = require('../../util/apiResponse');
 
-  api.find = async(req, res) => {
+module.exports = (crowi) => {
+  const { UserGroup, UserGroupRelation } = crowi.models;
+
+  router.get('/', loginRequired(crowi), adminRequired(), async(req, res) => {
     // TODO: filter with querystring
     try {
       const userGroups = await UserGroup.find();
@@ -17,12 +25,9 @@ module.exports = (crowi) => {
       logger.error('Error', err);
       return res.json(ApiResponse.error('Error occurred in fetching user groups'));
     }
-  };
+  });
 
-  // api.findOne = async(req, res) => {
-  // };
-
-  api.create = async(req, res) => {
+  router.post('/create', loginRequired(crowi), adminRequired(), async(req, res) => {
     const { name } = req.body;
     try {
       const userGroupName = crowi.xss.process(name);
@@ -41,12 +46,9 @@ module.exports = (crowi) => {
       logger.error(msg, err);
       return res.json(ApiResponse.error(msg));
     }
-  };
-
-  // api.update = async(req, res) => {
-  // };
+  });
 
-  api.delete = async(req, res) => {
+  router.post('/:id/delete', loginRequired(crowi), adminRequired(), async(req, res) => {
     const { id: deleteGroupId } = req.params;
     const { actionName, transferToUserGroupId } = req.body;
     try {
@@ -59,7 +61,35 @@ module.exports = (crowi) => {
       logger.error(msg, err);
       return res.json(ApiResponse.error(msg));
     }
-  };
+  });
+
+  // return one group with the id
+  // router.get('/:id', loginRequired(crowi), adminRequired(), async(req, res) => {
+  // });
+
+  // update one group with the id
+  // router.post('/:id/update', loginRequired(crowi), adminRequired(), async(req, res) => {
+  // });
+
+  router.get('/:id/users', loginRequired(crowi), adminRequired(), async(req, res) => {
+    const { id } = req.params;
+
+    try {
+      const userGroup = await UserGroup.findById(id);
+      const userGroupRelations = await UserGroupRelation.findAllRelationForUserGroup(userGroup);
+
+      const users = userGroupRelations.map((userGroupRelation) => {
+        return userGroupRelation.relatedUser;
+      });
+
+      return res.json(ApiResponse.success({ users }));
+    }
+    catch (err) {
+      const msg = `Error occurred in fetching user group relations for group: ${id}`;
+      logger.error(msg, err);
+      return res.json(ApiResponse.error(msg));
+    }
+  });
 
-  return api;
+  return router;
 };