diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js index 4e7ae8cca47ced1bc6ba47458e410fd31ce6f1ea..e145a84f0e1499cafd3da47ffaf589e867d87e61 100644 --- a/packages/rocketchat-api/server/v1/channels.js +++ b/packages/rocketchat-api/server/v1/channels.js @@ -22,7 +22,7 @@ RocketChat.API.v1.addRoute('channels.addAll', { authRequired: true }, { const findResult = findChannelById({ roomId: this.bodyParams.roomId }); Meteor.runAsUser(this.userId, () => { - Meteor.call('addAllUserToRoom', findResult._id); + Meteor.call('addAllUserToRoom', findResult._id, this.bodyParams.activeUsersOnly); }); return RocketChat.API.v1.success({ diff --git a/packages/rocketchat-api/server/v1/groups.js b/packages/rocketchat-api/server/v1/groups.js index 0e12ecdd19eb5e7aa06cba4aed5ed546fb8fcfe8..f05538c4d6d93ab4cf61f38587b270570dbc0733 100644 --- a/packages/rocketchat-api/server/v1/groups.js +++ b/packages/rocketchat-api/server/v1/groups.js @@ -22,6 +22,20 @@ function findPrivateGroupByIdOrName({ roomId, roomName, userId, checkedArchived return roomSub; } +RocketChat.API.v1.addRoute('groups.addAll', { authRequired: true }, { + post() { + const findResult = findPrivateGroupByIdOrName({ roomId: this.bodyParams.roomId, userId: this.userId }); + + Meteor.runAsUser(this.userId, () => { + Meteor.call('addAllUserToRoom', findResult.rid, this.bodyParams.activeUsersOnly); + }); + + return RocketChat.API.v1.success({ + group: RocketChat.models.Rooms.findOneById(findResult.rid, { fields: RocketChat.API.v1.defaultFieldsToExclude }) + }); + } +}); + RocketChat.API.v1.addRoute('groups.addModerator', { authRequired: true }, { post() { const findResult = findPrivateGroupByIdOrName({ roomId: this.bodyParams.roomId, userId: this.userId }); diff --git a/server/methods/addAllUserToRoom.js b/server/methods/addAllUserToRoom.js index c52a76268f14ac42dffdfe48d8693210d72394d4..5f122121f3bd3b054a3cd3c1c8ce8c3c12cb4c89 100644 --- a/server/methods/addAllUserToRoom.js +++ b/server/methods/addAllUserToRoom.js @@ -1,7 +1,8 @@ Meteor.methods({ - addAllUserToRoom(rid) { + addAllUserToRoom(rid, activeUsersOnly) { check (rid, String); + check (activeUsersOnly, Match.Maybe(Boolean)); if (RocketChat.authz.hasRole(this.userId, 'admin') === true) { const userCount = RocketChat.models.Users.find().count(); @@ -18,7 +19,12 @@ Meteor.methods({ }); } - const users = RocketChat.models.Users.find().fetch(); + const userFilter = {}; + if (activeUsersOnly === true) { + userFilter.active = true; + } + + const users = RocketChat.models.Users.find(userFilter).fetch(); const now = new Date(); users.forEach(function(user) { const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, user._id);