if (_.isUndefined(RocketChat.models.Subscriptions)) { RocketChat.models.Subscriptions = {}; } Object.assign(RocketChat.models.Subscriptions, { isUserInRole(userId, roleName, roomId) { if (roomId == null) { return false; } const query = { rid: roomId, roles: roleName }; return !_.isUndefined(this.findOne(query)); }, findUsersInRoles(roles, scope, options) { roles = [].concat(roles); const query = { roles: { $in: roles } }; if (scope) { query.rid = scope; } const subscriptions = this.find(query).fetch(); const users = _.compact(_.map(subscriptions, function(subscription) { if ('undefined' !== typeof subscription.u && 'undefined' !== typeof subscription.u._id) { return subscription.u._id; } })); return RocketChat.models.Users.find({ _id: { $in: users } }, options); } });