kaori před 3 roky
rodič
revize
821ac11fcb

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

@@ -697,12 +697,13 @@ module.exports = (crowi) => {
    *                      description: the associative entity between user and userGroup
    */
   router.delete('/:id/users/:username', loginRequiredStrictly, adminRequired, validator.users.delete, apiV3FormValidator, async(req, res) => {
-    const { id, username } = req.params;
+    const { id: userGroupId, username } = req.params;
 
     try {
-      const result = await crowi.userGroupService.removeUserByUsername(id, username);
+      const result = await crowi.userGroupService.removeUserByUsername(userGroupId, username);
+      const serializedUser = serializeUserSecurely(result.user);
 
-      return res.apiv3(result);
+      return res.apiv3({ user: serializedUser, deletedGroupsCount: result.deletedGroupsCount });
     }
     catch (err) {
       const msg = 'Error occurred while removing the user from groups.';

+ 7 - 7
packages/app/src/server/service/user-group.ts

@@ -1,11 +1,12 @@
-import mongoose, { Types } from 'mongoose';
+import mongoose from 'mongoose';
 
+
+import { IUser } from '~/interfaces/user';
+import { ObjectIdLike } from '~/server/interfaces/mongoose-utils';
 import UserGroup from '~/server/models/user-group';
 import { excludeTestIdsFromTargetIds, isIncludesObjectId } from '~/server/util/compare-objectId';
 import loggerFactory from '~/utils/logger';
 
-const { serializeUserSecurely } = require('../models/serializers/user-serializer');
-
 const logger = loggerFactory('growi:service:UserGroupService'); // eslint-disable-line no-unused-vars
 
 
@@ -131,11 +132,11 @@ class UserGroupService {
     return deletedGroups;
   }
 
-  async removeUserByUsername(id: Types.ObjectId, username: string) {
+  async removeUserByUsername(userGroupId: ObjectIdLike, username: string): Promise<{user: IUser, deletedGroupsCount: number}> {
     const User = this.crowi.model('User');
 
     const [userGroup, user] = await Promise.all([
-      UserGroup.findById(id),
+      UserGroup.findById(userGroupId),
       User.findUserByUsername(username),
     ]);
 
@@ -143,9 +144,8 @@ class UserGroupService {
     const relatedGroupIdsToDelete = groupsOfRelationsToDelete.map(g => g._id);
 
     const deleteManyRes = await UserGroupRelation.deleteMany({ relatedUser: user._id, relatedGroup: { $in: relatedGroupIdsToDelete } });
-    const serializedUser = serializeUserSecurely(user);
 
-    return { user: serializedUser, deletedGroupsCount: deleteManyRes.deletedCount };
+    return { user, deletedGroupsCount: deleteManyRes.deletedCount };
   }
 
 }