Taichi Masuyama 4 lat temu
rodzic
commit
a9f426692c

+ 12 - 2
packages/app/src/server/models/user-group.js

@@ -110,8 +110,18 @@ class UserGroup {
     return this.estimatedDocumentCount();
   }
 
-  static createGroupByName(name) {
-    return this.create({ name });
+  static createGroup(name, description, parentId) {
+    // create without parent
+    if (parentId == null) {
+      return this.create({ name, description });
+    }
+
+    // create with parent
+    const parent = await this.find({ parent: parentId });
+    if (parent == null) {
+      throw Error('Parent does not exist.');
+    }
+    return this.create({ name, description, parent });
   }
 
   async updateName(name) {

+ 3 - 2
packages/app/src/server/routes/apiv3/user-group.js

@@ -119,11 +119,12 @@ module.exports = (crowi) => {
    *                      description: A result of `UserGroup.createGroupByName`
    */
   router.post('/', loginRequiredStrictly, adminRequired, csrf, validator.create, apiV3FormValidator, async(req, res) => {
-    const { name } = req.body;
+    const { name, description, parentId } = req.body;
 
     try {
       const userGroupName = crowi.xss.process(name);
-      const userGroup = await UserGroup.createGroupByName(userGroupName);
+      const userGroupDescription = crowi.xss.process(description);
+      const userGroup = await UserGroup.createGroup(userGroupName, userGroupDescription, parentId);
 
       return res.apiv3({ userGroup }, 201);
     }