mizozobu пре 6 година
родитељ
комит
0117011142

+ 6 - 6
src/server/models/page.js

@@ -1311,7 +1311,7 @@ module.exports = function(crowi) {
     return pageData;
   };
 
-  pageSchema.statics.handlePrivatePagesForDeletedGroup = async function(deletedGroup, action, selectedGroupId) {
+  pageSchema.statics.handlePrivatePagesForDeletedGroup = async function(deletedGroup, action, transferToUserGroupId) {
     const Page = mongoose.model('Page');
 
     const pages = await this.find({ grantedGroup: deletedGroup });
@@ -1329,7 +1329,7 @@ module.exports = function(crowi) {
         break;
       case 'transfer':
         await Promise.all(pages.map((page) => {
-          return Page.transferPageToGroup(page, selectedGroupId);
+          return Page.transferPageToGroup(page, transferToUserGroupId);
         }));
         break;
       default:
@@ -1343,17 +1343,17 @@ module.exports = function(crowi) {
     await page.save();
   };
 
-  pageSchema.statics.transferPageToGroup = async function(page, selectedGroupId) {
+  pageSchema.statics.transferPageToGroup = async function(page, transferToUserGroupId) {
     const UserGroup = mongoose.model('UserGroup');
 
     // check page existence
-    const isExist = await UserGroup.count({ _id: selectedGroupId }) > 0;
+    const isExist = await UserGroup.count({ _id: transferToUserGroupId }) > 0;
     if (isExist) {
-      page.grantedGroup = selectedGroupId;
+      page.grantedGroup = transferToUserGroupId;
       await page.save();
     }
     else {
-      throw new Error('Cannot find the group to which private pages belong to. _id: ', selectedGroupId);
+      throw new Error('Cannot find the group to which private pages belong to. _id: ', transferToUserGroupId);
     }
   };
 

+ 2 - 2
src/server/models/user-group.js

@@ -90,7 +90,7 @@ class UserGroup {
   }
 
   // グループの完全削除
-  static async removeCompletelyById(deleteGroupId, action, selectedGroupId) {
+  static async removeCompletelyById(deleteGroupId, action, transferToUserGroupId) {
     const PageGroupRelation = mongoose.model('PageGroupRelation');
     const UserGroupRelation = mongoose.model('UserGroupRelation');
     const Page = mongoose.model('Page');
@@ -104,7 +104,7 @@ class UserGroup {
     await Promise.all([
       UserGroupRelation.removeAllByUserGroup(deletedGroup),
       PageGroupRelation.removeAllByUserGroup(deletedGroup),
-      Page.handlePrivatePagesForDeletedGroup(deletedGroup, action, selectedGroupId),
+      Page.handlePrivatePagesForDeletedGroup(deletedGroup, action, transferToUserGroupId),
     ]);
 
     return deletedGroup;

+ 2 - 13
src/server/routes/admin.js

@@ -788,10 +788,10 @@ module.exports = function(crowi, app) {
 
   // app.post('/_api/admin/user-group/delete' , admin.userGroup.removeCompletely);
   actions.userGroup.removeCompletely = async(req, res) => {
-    const { deleteGroupId, actionName, selectedGroupId } = req.body;
+    const { deleteGroupId, actionName, transferToUserGroupId } = req.body;
 
     try {
-      await UserGroup.removeCompletelyById(deleteGroupId, actionName, selectedGroupId);
+      await UserGroup.removeCompletelyById(deleteGroupId, actionName, transferToUserGroupId);
       req.flash('successMessage', '削除しました');
     }
     catch (err) {
@@ -1334,17 +1334,6 @@ module.exports = function(crowi, app) {
     return res.json(ApiResponse.success());
   };
 
-  actions.api.userGroups = async(req, res) => {
-    try {
-      const userGroups = await UserGroup.find();
-      return res.json(ApiResponse.success({ userGroups }));
-    }
-    catch (err) {
-      logger.error('Error', err);
-      return res.json(ApiResponse.error('Error'));
-    }
-  };
-
   /**
    * save settings, update config cache, and response json
    *

+ 5 - 0
src/server/routes/apiv3/admin/index.js

@@ -0,0 +1,5 @@
+module.exports = (crowi) => {
+  return {
+    userGroup: require('./user-group')(crowi),
+  };
+};

+ 35 - 0
src/server/routes/apiv3/admin/user-group.js

@@ -0,0 +1,35 @@
+/* eslint-disable no-use-before-define */
+module.exports = (crowi) => {
+  const logger = require('@alias/logger')('growi:routes:apiv3:admin:user-group');
+  const ApiResponse = require('../../../util/apiResponse');
+
+  const { UserGroup } = crowi.models;
+
+  const api = {};
+
+  api.find = async(req, res) => {
+    // TODO: filter with querystring
+    try {
+      const userGroups = await UserGroup.find();
+      return res.json(ApiResponse.success({ userGroups }));
+    }
+    catch (err) {
+      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) => {
+  };
+
+  // api.update = async(req, res) => {
+  // };
+
+  api.delete = async(req, res) => {
+  };
+
+  return api;
+};

+ 8 - 0
src/server/routes/apiv3/index.js

@@ -6,7 +6,15 @@ const express = require('express');
 
 const router = express.Router();
 
+
 module.exports = (crowi) => {
+  const middleware = require('../../util/middlewares');
+  const { loginRequired, adminRequired } = middleware;
+  const { userGroup: adminUserGroup } = require('./admin')(crowi);
+
   router.use('/healthcheck', require('./healthcheck')(crowi));
+
+  router.get('/user-groups', loginRequired(crowi), adminRequired(), adminUserGroup.find);
+
   return router;
 };

+ 0 - 1
src/server/routes/index.js

@@ -143,7 +143,6 @@ module.exports = function(crowi, app) {
   app.post('/admin/user-group/create'      , form.admin.userGroupCreate, loginRequired(crowi, app), middleware.adminRequired(), csrf, admin.userGroup.create);
   app.post('/admin/user-group/:userGroupId/update', loginRequired(crowi, app), middleware.adminRequired(), csrf, admin.userGroup.update);
   app.post('/admin/user-group.remove' , loginRequired(crowi, app), middleware.adminRequired(), csrf, admin.userGroup.removeCompletely);
-  app.get('/_api/admin/user-groups', loginRequired(crowi, app), middleware.adminRequired(), admin.api.userGroups);
 
   // user-group-relations admin
   app.post('/admin/user-group-relation/create', loginRequired(crowi, app), middleware.adminRequired(), csrf, admin.userGroupRelation.create);