diff --git a/bigbluebutton-html5/imports/api/breakouts/server/publishers.js b/bigbluebutton-html5/imports/api/breakouts/server/publishers.js index d0040bd87ecc475f1a1475dc82ef96ba822ff568..405414e284aaad2526bae26c2ef4ab49568c3740 100755 --- a/bigbluebutton-html5/imports/api/breakouts/server/publishers.js +++ b/bigbluebutton-html5/imports/api/breakouts/server/publishers.js @@ -6,7 +6,7 @@ import { extractCredentials } from '/imports/api/common/server/helpers'; const ROLE_MODERATOR = Meteor.settings.public.user.role_moderator; -function breakouts(moderator = false) { +function breakouts() { if (!this.userId) { return Breakouts.find({ meetingId: '' }); } @@ -14,18 +14,16 @@ function breakouts(moderator = false) { const { meetingId, requesterUserId } = extractCredentials(this.userId); Logger.debug(`Publishing Breakouts for ${meetingId} ${requesterUserId}`); - if (moderator) { - const User = Users.findOne({ userId: requesterUserId, meetingId }); - if (!!User && User.role === ROLE_MODERATOR) { - const presenterSelector = { - $or: [ - { parentMeetingId: meetingId }, - { breakoutId: meetingId }, - ], - }; - - return Breakouts.find(presenterSelector); - } + const User = Users.findOne({ userId: requesterUserId, meetingId }, { fields: { role: 1 } }); + if (!!User && User.role === ROLE_MODERATOR) { + const presenterSelector = { + $or: [ + { parentMeetingId: meetingId }, + { breakoutId: meetingId }, + ], + }; + + return Breakouts.find(presenterSelector); } const selector = { diff --git a/bigbluebutton-html5/imports/api/meetings/server/publishers.js b/bigbluebutton-html5/imports/api/meetings/server/publishers.js index 997c79b66b4b158e2c50b38c7a09401c42934fa1..6062acd3390ae55fb380d43188641f872b678773 100755 --- a/bigbluebutton-html5/imports/api/meetings/server/publishers.js +++ b/bigbluebutton-html5/imports/api/meetings/server/publishers.js @@ -6,7 +6,7 @@ import { extractCredentials } from '/imports/api/common/server/helpers'; const ROLE_MODERATOR = Meteor.settings.public.user.role_moderator; -function meetings(isModerator = false) { +function meetings() { if (!this.userId) { return Meetings.find({ meetingId: '' }); } @@ -20,14 +20,12 @@ function meetings(isModerator = false) { ], }; - if (isModerator) { - const User = Users.findOne({ userId: requesterUserId, meetingId }); - if (!!User && User.role === ROLE_MODERATOR) { - selector.$or.push({ - 'meetingProp.isBreakout': true, - 'breakoutProps.parentId': meetingId, - }); - } + const User = Users.findOne({ userId: requesterUserId, meetingId }, { fields: { role: 1 } }); + if (!!User && User.role === ROLE_MODERATOR) { + selector.$or.push({ + 'meetingProp.isBreakout': true, + 'breakoutProps.parentId': meetingId, + }); } const options = { diff --git a/bigbluebutton-html5/imports/api/users/server/publishers.js b/bigbluebutton-html5/imports/api/users/server/publishers.js index 861fb357e16daebcc17417ef6f1efc2eb8d69c5b..d7c029716013c023591fa8272995421a250dfc15 100644 --- a/bigbluebutton-html5/imports/api/users/server/publishers.js +++ b/bigbluebutton-html5/imports/api/users/server/publishers.js @@ -51,7 +51,7 @@ function publishCurrentUser(...args) { Meteor.publish('current-user', publishCurrentUser); -function users(isModerator = false) { +function users() { if (!this.userId) { return Users.find({ meetingId: '' }); } @@ -63,15 +63,13 @@ function users(isModerator = false) { ], }; - if (isModerator) { - const User = Users.findOne({ userId: requesterUserId, meetingId }); - if (!!User && User.role === ROLE_MODERATOR) { - selector.$or.push({ - 'breakoutProps.isBreakoutUser': true, - 'breakoutProps.parentId': meetingId, - connectionStatus: 'online', - }); - } + const User = Users.findOne({ userId: requesterUserId, meetingId }, { fields: { role: 1 } }); + if (!!User && User.role === ROLE_MODERATOR) { + selector.$or.push({ + 'breakoutProps.isBreakoutUser': true, + 'breakoutProps.parentId': meetingId, + connectionStatus: 'online', + }); } const options = { diff --git a/bigbluebutton-html5/imports/ui/components/subscriptions/component.jsx b/bigbluebutton-html5/imports/ui/components/subscriptions/component.jsx index 62fd2f003acd7edd452908d623280cdd640a9be7..cf94c7714115001eb6b42c6f6135c08183aa8105 100755 --- a/bigbluebutton-html5/imports/ui/components/subscriptions/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/subscriptions/component.jsx @@ -3,14 +3,12 @@ import { withTracker } from 'meteor/react-meteor-data'; import Auth from '/imports/ui/services/auth'; import logger from '/imports/startup/client/logger'; import GroupChat from '/imports/api/group-chat'; -import Users from '/imports/api/users'; import Annotations from '/imports/api/annotations'; import AnnotationsTextService from '/imports/ui/components/whiteboard/annotations/text/service'; import AnnotationsLocal from '/imports/ui/components/whiteboard/service'; const CHAT_CONFIG = Meteor.settings.public.chat; -const ROLE_MODERATOR = Meteor.settings.public.user.role_moderator; const CHAT_ENABLED = CHAT_CONFIG.enabled; const PUBLIC_GROUP_CHAT_ID = CHAT_CONFIG.public_group_id; const PUBLIC_CHAT_TYPE = CHAT_CONFIG.type_public; @@ -20,7 +18,7 @@ const SUBSCRIPTIONS = [ 'voiceUsers', 'whiteboard-multi-user', 'screenshare', 'group-chat', 'presentation-pods', 'users-settings', 'guestUser', 'users-infos', 'note', 'meeting-time-remaining', 'network-information', 'ping-pong', 'local-settings', 'users-typing', 'record-meetings', 'video-streams', - 'voice-call-states', + 'voice-call-states', 'breakouts', ]; class Subscriptions extends Component { @@ -62,7 +60,6 @@ export default withTracker(() => { return Meteor.subscribe( name, - credentials, subscriptionErrorHandler, ); }); @@ -88,15 +85,6 @@ export default withTracker(() => { subscriptionsHandlers.push(groupChatMessageHandler); } - const User = Users.findOne({ intId: requesterUserId }, { fields: { role: 1 } }); - - if (User) { - const userIsModerator = User.role === ROLE_MODERATOR; - Meteor.subscribe('users', userIsModerator, subscriptionErrorHandler); - Meteor.subscribe('breakouts', userIsModerator, subscriptionErrorHandler); - Meteor.subscribe('meetings', userIsModerator, subscriptionErrorHandler); - } - const annotationsHandler = Meteor.subscribe('annotations', { onReady: () => { const activeTextShapeId = AnnotationsTextService.activeTextShapeId();