From 9f219dd88f186a7c0af1c701a77a0f941633ed64 Mon Sep 17 00:00:00 2001 From: Nathan Marcos Date: Mon, 27 Mar 2017 23:58:20 -0300 Subject: [PATCH 1/2] Create groups.addAll endpoint and add activeUsersOnly param. --- packages/rocketchat-api/server/v1/channels.js | 2 +- packages/rocketchat-api/server/v1/groups.js | 14 ++++++++++++++ server/methods/addAllUserToRoom.js | 10 ++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js index 4e7ae8cca47..e145a84f0e1 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 0e12ecdd19e..f05538c4d6d 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 c52a76268f1..5f122121f3b 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); From d296513203a40c7c629466064b1f2edce1a8e19a Mon Sep 17 00:00:00 2001 From: Nathan Marcos Date: Tue, 28 Mar 2017 13:34:38 -0300 Subject: [PATCH 2/2] Change activeUsersOnly default value to false --- server/methods/addAllUserToRoom.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/methods/addAllUserToRoom.js b/server/methods/addAllUserToRoom.js index 5f122121f3b..5239c90e081 100644 --- a/server/methods/addAllUserToRoom.js +++ b/server/methods/addAllUserToRoom.js @@ -1,8 +1,8 @@ Meteor.methods({ - addAllUserToRoom(rid, activeUsersOnly) { + addAllUserToRoom(rid, activeUsersOnly = false) { check (rid, String); - check (activeUsersOnly, Match.Maybe(Boolean)); + check (activeUsersOnly, Boolean); if (RocketChat.authz.hasRole(this.userId, 'admin') === true) { const userCount = RocketChat.models.Users.find().count();