Skip to content
Snippets Groups Projects
Commit 32ba6ad7 authored by Oswaldo Acauan's avatar Oswaldo Acauan
Browse files

Refactor method listenOnlyRequestToggle

parent 9c2b42e9
No related branches found
No related tags found
No related merge requests found
import { Meteor } from 'meteor/meteor';
import kickUser from './methods/kickUser';
import listenOnlyRequestToggle from './methods/listenOnlyRequestToggle';
Meteor.methods({
kickUser,
listenOnlyRequestToggle,
});
......@@ -8,16 +8,16 @@ export default function kickUser(credentials, userId) {
const CHANNEL = REDIS_CONFIG.channels.toBBBApps.users;
const EVENT_NAME = 'eject_user_from_meeting_request_message';
if (!isAllowedTo('kickUser', credentials)) {
throw new Meteor.Error('not-allowed', `You are not allowed to kickUser`);
}
const { meetingId, requesterUserId } = credentials;
check(meetingId, String);
check(requesterUserId, String);
check(userId, String);
if (!isAllowedTo('kickUser', credentials)) {
throw new Meteor.Error('not-allowed', `You are not allowed to kickUser`);
}
let payload = {
userid: userId,
ejected_by: requesterUserId,
......
import { check } from 'meteor/check';
import RedisPubSub from '/imports/startup/server/redis';
import Logger from '/imports/startup/server/logger';
import { isAllowedTo } from '/imports/startup/server/userPermissions';
import { appendMessageHeader, publish } from '/imports/api/common/server/helpers';
import Meetings from '/imports/api/meetings';
import Users from '/imports/api/users';
import { logger } from '/imports/startup/server/logger';
Meteor.methods({
// meetingId: the meetingId of the meeting the user is in
// toSetUserId: the userId of the user joining
// requesterUserId: the userId of the requester
// requesterToken: the authToken of the requester
listenOnlyRequestToggle(credentials, isJoining) {
const REDIS_CONFIG = Meteor.settings.redis;
let username;
let voiceConf;
const { meetingId, requesterUserId, requesterToken } = credentials;
const meetingObject = Meetings.findOne({
meetingId: meetingId,
});
const userObject = Users.findOne({
meetingId: meetingId,
userId: requesterUserId,
});
export default function listenOnlyRequestToggle(credentials, isJoining) {
const REDIS_CONFIG = Meteor.settings.redis;
const CHANNEL = REDIS_CONFIG.channels.toBBBApps.meeting;
if (meetingObject != null) {
voiceConf = meetingObject.voiceConf;
}
const { meetingId, requesterUserId } = credentials;
if (userObject != null) {
username = userObject.user.name;
}
check(meetingId, String);
check(requesterUserId, String);
check(isJoining, Boolean);
if (isJoining) {
if (isAllowedTo('joinListenOnly', credentials)) {
let message = {
payload: {
userid: requesterUserId,
meeting_id: meetingId,
voice_conf: voiceConf,
name: username,
},
};
message = appendMessageHeader('user_connected_to_global_audio', message);
logger.info(
`publishing a user listenOnly toggleRequest ${isJoining} ` +
`request for ${requesterUserId}`
);
publish(REDIS_CONFIG.channels.toBBBApps.meeting, message);
}
} else {
if (isAllowedTo('leaveListenOnly', credentials)) {
let message = {
payload: {
userid: requesterUserId,
meeting_id: meetingId,
voice_conf: voiceConf,
name: username,
},
};
message = appendMessageHeader('user_disconnected_from_global_audio', message);
logger.info(
`publishing a user listenOnly toggleRequest ${isJoining} ` +
`request for ${requesterUserId}`
);
publish(REDIS_CONFIG.channels.toBBBApps.meeting, message);
}
if (isJoining) {
let EVENT_NAME = 'user_connected_to_global_audio';
if (!isAllowedTo('joinListenOnly', credentials)) {
throw new Meteor.Error('not-allowed', `You are not allowed to joinListenOnly`);
}
} else {
let EVENT_NAME = 'user_disconnected_from_global_audio';
if (!isAllowedTo('leaveListenOnly', credentials)) {
throw new Meteor.Error('not-allowed', `You are not allowed to leaveListenOnly`);
}
},
}
const Metting = Meetings.findOne({ meetingId });
if (!Metting) {
throw new Meteor.Error(
'metting-not-found', `You need a valid meeting to be able to toggle audio`);
}
check(Metting.voiceConf, String);
const User = Users.findOne({
meetingId,
userId: requesterUserId,
});
if (!User) {
throw new Meteor.Error(
'user-not-found', `You need a valid user to be able to toggle audio`);
}
check(User.user.name, String);
let payload = {
userid: requesterUserId,
meeting_id: meetingId,
voice_conf: Metting.voiceConf,
name: User.user.name,
};
Logger.verbose(`User '${requesterUserId}' ${isJoining ? 'joined' : 'left'} global audio from meeting '${meetingId}'`);
});
return RedisPubSub.publish(CHANNEL, EVENT_NAME, payload);
};
......@@ -28,7 +28,6 @@ import '/imports/api/captions/server/modifiers/clearCaptionsCollection';
import '/imports/api/captions/server/modifiers/eventHandlers';
import '/imports/api/users/server';
import '/imports/api/users/server/methods/listenOnlyRequestToggle';
import '/imports/api/users/server/methods/muteUser';
import '/imports/api/users/server/methods/setUserPresenter';
import '/imports/api/users/server/methods/unmuteUser';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment