Yuki Takei пре 6 година
родитељ
комит
6b563b2b49

+ 0 - 1
src/client/js/app.jsx

@@ -47,7 +47,6 @@ import Importer from './components/Admin/Importer';
 import FullTextSearchManagement from './components/Admin/FullTextSearchManagement/FullTextSearchPage';
 import ExportPage from './components/Admin/Export/ExportPage';
 import GrowiZipImportSection from './components/Admin/Import/GrowiZipImportSection';
-import GroupDeleteModal from './components/GroupDeleteModal/GroupDeleteModal';
 
 import AppContainer from './services/AppContainer';
 import PageContainer from './services/PageContainer';

+ 4 - 6
src/server/routes/apiv3/user-group-relation.js

@@ -13,12 +13,10 @@ const router = express.Router();
  */
 
 module.exports = (crowi) => {
-  const { ErrorV3, UserGroup, UserGroupRelation } = crowi.models;
+  const loginRequiredStrictly = require('../../middleware/login-required')(crowi);
+  const adminRequired = require('../../middleware/admin-required')(crowi);
 
-  const {
-    loginRequired,
-    adminRequired,
-  } = require('../../util/middlewares')(crowi);
+  const { ErrorV3, UserGroup, UserGroupRelation } = crowi.models;
 
   /**
    * @swagger
@@ -40,7 +38,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: contains arrays user objects related
    */
-  router.get('/', loginRequired(), adminRequired, async(req, res) => {
+  router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => {
     // TODO: filter with querystring? or body
     try {
       const page = parseInt(req.query.page) || 1;

+ 14 - 16
src/server/routes/apiv3/user-group.js

@@ -22,6 +22,10 @@ const { toPagingLimit, toPagingOffset } = require('../../util/express-validator/
  */
 
 module.exports = (crowi) => {
+  const loginRequiredStrictly = require('../../middleware/login-required')(crowi);
+  const adminRequired = require('../../middleware/admin-required')(crowi);
+  const csrf = require('../../middleware/csrf')(crowi);
+
   const {
     ErrorV3,
     UserGroup,
@@ -31,12 +35,6 @@ module.exports = (crowi) => {
   } = crowi.models;
   const { ApiV3FormValidator } = crowi.middlewares;
 
-  const {
-    loginRequired,
-    adminRequired,
-    csrfVerify: csrf,
-  } = require('../../util/middlewares')(crowi);
-
   /**
    * @swagger
    *
@@ -58,7 +56,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: a result of `UserGroup.find`
    */
-  router.get('/', loginRequired(), adminRequired, async(req, res) => {
+  router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => {
     // TODO: filter with querystring
     try {
       const page = parseInt(req.query.page) || 1;
@@ -107,7 +105,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: A result of `UserGroup.createGroupByName`
    */
-  router.post('/', loginRequired(), adminRequired, csrf, validator.create, ApiV3FormValidator, async(req, res) => {
+  router.post('/', loginRequiredStrictly, adminRequired, csrf, validator.create, ApiV3FormValidator, async(req, res) => {
     const { name } = req.body;
 
     try {
@@ -166,7 +164,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: A result of `UserGroup.removeCompletelyById`
    */
-  router.delete('/:id', loginRequired(), adminRequired, csrf, validator.delete, ApiV3FormValidator, async(req, res) => {
+  router.delete('/:id', loginRequiredStrictly, adminRequired, csrf, validator.delete, ApiV3FormValidator, async(req, res) => {
     const { id: deleteGroupId } = req.params;
     const { actionName, transferToUserGroupId } = req.query;
 
@@ -218,7 +216,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: A result of `UserGroup.updateName`
    */
-  router.put('/:id', loginRequired(), adminRequired, csrf, validator.update, ApiV3FormValidator, async(req, res) => {
+  router.put('/:id', loginRequiredStrictly, adminRequired, csrf, validator.update, ApiV3FormValidator, async(req, res) => {
     const { id } = req.params;
     const { name } = req.body;
 
@@ -276,7 +274,7 @@ module.exports = (crowi) => {
    *                        type: object
    *                      description: user objects
    */
-  router.get('/:id/users', loginRequired(), adminRequired, async(req, res) => {
+  router.get('/:id/users', loginRequiredStrictly, adminRequired, async(req, res) => {
     const { id } = req.params;
 
     try {
@@ -325,7 +323,7 @@ module.exports = (crowi) => {
    *                        type: object
    *                      description: user objects
    */
-  router.get('/:id/unrelated-users', loginRequired(), adminRequired, async(req, res) => {
+  router.get('/:id/unrelated-users', loginRequiredStrictly, adminRequired, async(req, res) => {
     const { id } = req.params;
 
     try {
@@ -385,7 +383,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: the associative entity between user and userGroup
    */
-  router.post('/:id/users/:username', loginRequired(), adminRequired, validator.users.post, ApiV3FormValidator, async(req, res) => {
+  router.post('/:id/users/:username', loginRequiredStrictly, adminRequired, validator.users.post, ApiV3FormValidator, async(req, res) => {
     const { id, username } = req.params;
 
     try {
@@ -450,7 +448,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      description: the associative entity between user and userGroup
    */
-  router.delete('/:id/users/:username', loginRequired(), adminRequired, validator.users.delete, ApiV3FormValidator, async(req, res) => {
+  router.delete('/:id/users/:username', loginRequiredStrictly, adminRequired, validator.users.delete, ApiV3FormValidator, async(req, res) => {
     const { id, username } = req.params;
 
     try {
@@ -506,7 +504,7 @@ module.exports = (crowi) => {
    *                        type: object
    *                      description: userGroupRelation objects
    */
-  router.get('/:id/user-group-relations', loginRequired(), adminRequired, async(req, res) => {
+  router.get('/:id/user-group-relations', loginRequiredStrictly, adminRequired, async(req, res) => {
     const { id } = req.params;
 
     try {
@@ -559,7 +557,7 @@ module.exports = (crowi) => {
    *                        type: object
    *                      description: page objects
    */
-  router.get('/:id/pages', loginRequired(), adminRequired, validator.pages.get, ApiV3FormValidator, async(req, res) => {
+  router.get('/:id/pages', loginRequiredStrictly, adminRequired, validator.pages.get, ApiV3FormValidator, async(req, res) => {
     const { id } = req.params;
     const { limit, offset } = req.query;
 

+ 5 - 8
src/server/routes/apiv3/users.js

@@ -7,12 +7,15 @@ const express = require('express');
 const router = express.Router();
 
 const { body } = require('express-validator/check');
-
 const { isEmail } = require('validator');
 
 const validator = {};
 
 module.exports = (crowi) => {
+  const loginRequiredStrictly = require('../../middleware/login-required')(crowi);
+  const adminRequired = require('../../middleware/admin-required')(crowi);
+  const csrf = require('../../middleware/csrf')(crowi);
+
   const {
     ErrorV3,
     User,
@@ -20,12 +23,6 @@ module.exports = (crowi) => {
 
   const { ApiV3FormValidator } = crowi.middlewares;
 
-  const {
-    loginRequired,
-    adminRequired,
-    csrfVerify: csrf,
-  } = require('../../util/middlewares')(crowi);
-
   validator.inviteEmail = [
     // isEmail prevents line breaks, so use isString
     body('shapedEmailList').custom((value) => {
@@ -78,7 +75,7 @@ module.exports = (crowi) => {
    *                        type: string
    *                      description: Users email that already exists
    */
-  router.post('/invite', loginRequired(), adminRequired, csrf, validator.inviteEmail, ApiV3FormValidator, async(req, res) => {
+  router.post('/invite', loginRequiredStrictly, adminRequired, csrf, validator.inviteEmail, ApiV3FormValidator, async(req, res) => {
     try {
       const emailList = await User.createUsersByInvitation(req.body.shapedEmailList, req.body.sendEmail);
       return res.apiv3({ emailList });

+ 3 - 1
src/server/service/growi-bridge.js

@@ -27,7 +27,9 @@ class GrowiBridgeService {
    */
   initCollectionMap(models) {
     for (const model of Object.values(models)) {
-      this.collectionMap[model.collection.collectionName] = model;
+      if (model.collection != null) {
+        this.collectionMap[model.collection.name] = model;
+      }
     }
   }
 

+ 7 - 3
src/server/service/import.js

@@ -30,7 +30,11 @@ class ImportService {
   initConvertMap(models) {
     // by default, original value is used for imported documents
     for (const model of Object.values(models)) {
-      const { collectionName } = model.collection;
+      if (model.collection == null) {
+        continue;
+      }
+
+      const collectionName = model.collection.name;
       this.convertMap[collectionName] = {};
 
       for (const key of Object.keys(model.schema.paths)) {
@@ -72,7 +76,7 @@ class ImportService {
   async import(Model, jsonFile, overwriteParams = {}) {
     // streamToPromise(jsonStream) throws an error, use new Promise instead
     return new Promise((resolve, reject) => {
-      const { collectionName } = Model.collection;
+      const collectionName = Model.collection.name;
 
       let counter = 0;
       let insertedIds = [];
@@ -211,7 +215,7 @@ class ImportService {
    * @return {object} document to be persisted
    */
   convertDocuments(Model, _document, overwriteParams) {
-    const collectionName = Model.collection.collectionName;
+    const collectionName = Model.collection.name;
     const schema = Model.schema.paths;
     const convertMap = this.convertMap[collectionName];
 

+ 1 - 1
yarn.lock

@@ -12886,7 +12886,7 @@ validator@>=11.0.0:
   resolved "https://registry.yarnpkg.com/validator/-/validator-11.0.0.tgz#fb10128bfb1fd14ce4ed36b79fc94289eae70667"
   integrity sha512-+wnGLYqaKV2++nUv60uGzUJyJQwYVOin6pn1tgEiFCeCQO60yeu3Og9/yPccbBX574kxIcEJicogkzx6s6eyag==
 
-validator@^11.0.0:
+validator@^11.0.0, validator@^11.1.0:
   version "11.1.0"
   resolved "https://registry.yarnpkg.com/validator/-/validator-11.1.0.tgz#ac18cac42e0aa5902b603d7a5d9b7827e2346ac4"
   integrity sha512-qiQ5ktdO7CD6C/5/mYV4jku/7qnqzjrxb3C/Q5wR3vGGinHTgJZN/TdFT3ZX4vXhX2R1PXx42fB1cn5W+uJ4lg==