From 519872cf97dd574106c5a0a24822776429c96280 Mon Sep 17 00:00:00 2001 From: Joao Siebel <joaos_desenv@imdt.com.br> Date: Wed, 5 May 2021 13:47:43 -0300 Subject: [PATCH] Add try/catch on users methods --- .../users/server/methods/assignPresenter.js | 59 +++++++------- .../api/users/server/methods/changeRole.js | 38 +++++---- .../api/users/server/methods/removeUser.js | 32 +++++--- .../users/server/methods/setEmojiStatus.js | 35 ++++---- .../api/users/server/methods/setMobileUser.js | 14 ++-- .../api/users/server/methods/setRandomUser.js | 25 +++--- .../methods/setUserEffectiveConnectionType.js | 34 ++++---- .../users/server/methods/toggleUserLock.js | 39 ++++----- .../users/server/methods/userActivitySign.js | 44 +++++----- .../api/users/server/methods/userLeaving.js | 80 ++++++++++--------- .../users/server/methods/userLeftMeeting.js | 20 ++--- .../users/server/methods/validateAuthToken.js | 32 ++++---- 12 files changed, 249 insertions(+), 203 deletions(-) diff --git a/bigbluebutton-html5/imports/api/users/server/methods/assignPresenter.js b/bigbluebutton-html5/imports/api/users/server/methods/assignPresenter.js index 6cf198ec48..f17e93c1f6 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/assignPresenter.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/assignPresenter.js @@ -6,33 +6,36 @@ import Users from '/imports/api/users'; import { extractCredentials } from '/imports/api/common/server/helpers'; export default function assignPresenter(userId) { // TODO-- send username from client side - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'AssignPresenterReqMsg'; - - const { meetingId, requesterUserId } = extractCredentials(this.userId); - - check(meetingId, String); - check(requesterUserId, String); - check(userId, String); - - const User = Users.findOne({ - meetingId, - userId, - }); - - if (!User) { - throw new Meteor.Error('user-not-found', 'You need a valid user to be able to set presenter'); + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'AssignPresenterReqMsg'; + const { meetingId, requesterUserId } = extractCredentials(this.userId); + + check(meetingId, String); + check(requesterUserId, String); + check(userId, String); + + const User = Users.findOne({ + meetingId, + userId, + }); + + if (!User) { + throw new Meteor.Error('user-not-found', 'You need a valid user to be able to set presenter'); + } + + const payload = { + newPresenterId: userId, + newPresenterName: User.name, + assignedBy: requesterUserId, + requesterId: requesterUserId, + }; + + Logger.verbose('User set as presenter', { userId, meetingId, setBy: requesterUserId }); + + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + } catch (err) { + Logger.error(`Exception while invoking method assignPresenter ${err.stack}`); } - - const payload = { - newPresenterId: userId, - newPresenterName: User.name, - assignedBy: requesterUserId, - requesterId: requesterUserId, - }; - - Logger.verbose('User set as presenter', { userId, meetingId, setBy: requesterUserId }); - - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/changeRole.js b/bigbluebutton-html5/imports/api/users/server/methods/changeRole.js index 78705e80d7..65cd2fbc5c 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/changeRole.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/changeRole.js @@ -5,26 +5,30 @@ import Logger from '/imports/startup/server/logger'; import { extractCredentials } from '/imports/api/common/server/helpers'; export default function changeRole(userId, role) { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'ChangeUserRoleCmdMsg'; + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'ChangeUserRoleCmdMsg'; - const { meetingId, requesterUserId } = extractCredentials(this.userId); + const { meetingId, requesterUserId } = extractCredentials(this.userId); - check(meetingId, String); - check(requesterUserId, String); - check(userId, String); - check(role, String); + check(meetingId, String); + check(requesterUserId, String); + check(userId, String); + check(role, String); - const payload = { - userId, - role, - changedBy: requesterUserId, - }; + const payload = { + userId, + role, + changedBy: requesterUserId, + }; - Logger.verbose('Changed user role', { - userId, role, changedBy: requesterUserId, meetingId, - }); + Logger.verbose('Changed user role', { + userId, role, changedBy: requesterUserId, meetingId, + }); - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + } catch (err) { + Logger.error(`Exception while invoking method changeRole ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js b/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js index 21e5427f5e..7a8c222b0c 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/removeUser.js @@ -2,23 +2,29 @@ import { Meteor } from 'meteor/meteor'; import { check } from 'meteor/check'; import RedisPubSub from '/imports/startup/server/redis'; import { extractCredentials } from '/imports/api/common/server/helpers'; +import Logger from '/imports/startup/server/logger'; export default function removeUser(userId, banUser) { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'EjectUserFromMeetingCmdMsg'; + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'EjectUserFromMeetingCmdMsg'; - const { meetingId, requesterUserId: ejectedBy } = extractCredentials(this.userId); + const { meetingId, requesterUserId: ejectedBy } = extractCredentials(this.userId); - check(meetingId, String); - check(ejectedBy, String); - check(userId, String); + check(meetingId, String); + check(ejectedBy, String); + check(userId, String); + check(banUser, Boolean); - const payload = { - userId, - ejectedBy, - banUser, - }; + const payload = { + userId, + ejectedBy, + banUser, + }; - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, ejectedBy, payload); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, ejectedBy, payload); + } catch (err) { + Logger.error(`Exception while invoking method removeUser ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/setEmojiStatus.js b/bigbluebutton-html5/imports/api/users/server/methods/setEmojiStatus.js index d96cd78d96..dd799886ce 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/setEmojiStatus.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/setEmojiStatus.js @@ -5,24 +5,29 @@ import Logger from '/imports/startup/server/logger'; import { extractCredentials } from '/imports/api/common/server/helpers'; export default function setEmojiStatus(userId, status) { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'ChangeUserEmojiCmdMsg'; + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'ChangeUserEmojiCmdMsg'; - const { meetingId, requesterUserId } = extractCredentials(this.userId); + const { meetingId, requesterUserId } = extractCredentials(this.userId); - check(meetingId, String); - check(requesterUserId, String); - check(userId, String); + check(meetingId, String); + check(requesterUserId, String); + check(userId, String); + check(status, String); - const payload = { - emoji: status, - userId, - }; + const payload = { + emoji: status, + userId, + }; - Logger.verbose('User emoji status updated', { - userId, status, requesterUserId, meetingId, - }); + Logger.verbose('User emoji status updated', { + userId, status, requesterUserId, meetingId, + }); - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + } catch (err) { + Logger.error(`Exception while invoking method setEmojiStatus ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/setMobileUser.js b/bigbluebutton-html5/imports/api/users/server/methods/setMobileUser.js index 7bd73e7b50..fa6dd68dc1 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/setMobileUser.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/setMobileUser.js @@ -4,12 +4,16 @@ import setMobile from '../modifiers/setMobile'; import { extractCredentials } from '/imports/api/common/server/helpers'; export default function setMobileUser() { - const { meetingId, requesterUserId } = extractCredentials(this.userId); + try { + const { meetingId, requesterUserId } = extractCredentials(this.userId); - check(meetingId, String); - check(requesterUserId, String); + check(meetingId, String); + check(requesterUserId, String); - Logger.verbose(`Mobile user ${requesterUserId} from meeting ${meetingId}`); + Logger.verbose(`Mobile user ${requesterUserId} from meeting ${meetingId}`); - setMobile(meetingId, requesterUserId); + setMobile(meetingId, requesterUserId); + } catch (err) { + Logger.error(`Exception while invoking method setMobileUser ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/setRandomUser.js b/bigbluebutton-html5/imports/api/users/server/methods/setRandomUser.js index 34ed860118..aa751daa0d 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/setRandomUser.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/setRandomUser.js @@ -2,20 +2,25 @@ import { Meteor } from 'meteor/meteor'; import RedisPubSub from '/imports/startup/server/redis'; import { extractCredentials } from '/imports/api/common/server/helpers'; import { check } from 'meteor/check'; +import Logger from '/imports/startup/server/logger'; export default function setRandomUser() { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'SelectRandomViewerReqMsg'; + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'SelectRandomViewerReqMsg'; - const { meetingId, requesterUserId } = extractCredentials(this.userId); + const { meetingId, requesterUserId } = extractCredentials(this.userId); - check(meetingId, String); - check(requesterUserId, String); + check(meetingId, String); + check(requesterUserId, String); - const payload = { - requestedBy: requesterUserId, - }; + const payload = { + requestedBy: requesterUserId, + }; - RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + } catch (err) { + Logger.error(`Exception while invoking method setRandomUser ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/setUserEffectiveConnectionType.js b/bigbluebutton-html5/imports/api/users/server/methods/setUserEffectiveConnectionType.js index f2bfaa949e..c6e9218f16 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/setUserEffectiveConnectionType.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/setUserEffectiveConnectionType.js @@ -6,24 +6,28 @@ import { extractCredentials } from '/imports/api/common/server/helpers'; import setEffectiveConnectionType from '../modifiers/setUserEffectiveConnectionType'; export default function setUserEffectiveConnectionType(effectiveConnectionType) { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'ChangeUserEffectiveConnectionMsg'; - const { meetingId, requesterUserId } = extractCredentials(this.userId); + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'ChangeUserEffectiveConnectionMsg'; + const { meetingId, requesterUserId } = extractCredentials(this.userId); - check(meetingId, String); - check(requesterUserId, String); - check(effectiveConnectionType, String); + check(meetingId, String); + check(requesterUserId, String); + check(effectiveConnectionType, String); - const payload = { - meetingId, - userId: requesterUserId, - effectiveConnectionType, - }; + const payload = { + meetingId, + userId: requesterUserId, + effectiveConnectionType, + }; - setEffectiveConnectionType(meetingId, requesterUserId, effectiveConnectionType); + setEffectiveConnectionType(meetingId, requesterUserId, effectiveConnectionType); - Logger.verbose('Updated user effective connection', { requesterUserId, effectiveConnectionType }); + Logger.verbose('Updated user effective connection', { requesterUserId, effectiveConnectionType }); - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + } catch (err) { + Logger.error(`Exception while invoking method setUserEffectiveConnectionType ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/toggleUserLock.js b/bigbluebutton-html5/imports/api/users/server/methods/toggleUserLock.js index 5e34f4dc61..ccb9efc233 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/toggleUserLock.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/toggleUserLock.js @@ -5,27 +5,30 @@ import Logger from '/imports/startup/server/logger'; import { extractCredentials } from '/imports/api/common/server/helpers'; export default function toggleUserLock(userId, lock) { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'LockUserInMeetingCmdMsg'; + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'LockUserInMeetingCmdMsg'; - const { meetingId, requesterUserId: lockedBy } = extractCredentials(this.userId); + const { meetingId, requesterUserId: lockedBy } = extractCredentials(this.userId); - check(meetingId, String); - check(lockedBy, String); - check(userId, String); - check(lock, Boolean); + check(meetingId, String); + check(lockedBy, String); + check(userId, String); + check(lock, Boolean); - const payload = { - lockedBy, - userId, - lock, - }; + const payload = { + lockedBy, + userId, + lock, + }; - Logger.verbose('Updated lock status for user', { - meetingId, userId, lock, lockedBy, - }); + Logger.verbose('Updated lock status for user', { + meetingId, userId, lock, lockedBy, + }); - - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, lockedBy, payload); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, lockedBy, payload); + } catch (err) { + Logger.error(`Exception while invoking method toggleUserLock ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/userActivitySign.js b/bigbluebutton-html5/imports/api/users/server/methods/userActivitySign.js index 7bf68cd519..6d6b6f0b91 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/userActivitySign.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/userActivitySign.js @@ -6,31 +6,35 @@ import { extractCredentials } from '/imports/api/common/server/helpers'; import { check } from 'meteor/check'; export default function userActivitySign() { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'UserActivitySignCmdMsg'; - const { meetingId, requesterUserId: userId } = extractCredentials(this.userId); + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'UserActivitySignCmdMsg'; + const { meetingId, requesterUserId: userId } = extractCredentials(this.userId); - check(meetingId, String); - check(userId, String); + check(meetingId, String); + check(userId, String); - const payload = { - userId, - }; + const payload = { + userId, + }; - const selector = { - userId, - }; + const selector = { + userId, + }; - const modifier = { - $set: { - inactivityCheck: false, - }, - }; + const modifier = { + $set: { + inactivityCheck: false, + }, + }; - Users.update(selector, modifier); // TODO-- we should move this to a modifier + Users.update(selector, modifier); // TODO-- we should move this to a modifier - Logger.info(`User ${userId} sent a activity sign for meeting ${meetingId}`); + Logger.info(`User ${userId} sent a activity sign for meeting ${meetingId}`); - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, userId, payload); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, userId, payload); + } catch (err) { + Logger.error(`Exception while invoking method userActivitySign ${err.stack}`); + } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js b/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js index 5f67ed8185..92133df8fb 100755 --- a/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/userLeaving.js @@ -7,43 +7,47 @@ import Users from '/imports/api/users'; import ClientConnections from '/imports/startup/server/ClientConnections'; export default function userLeaving(meetingId, userId, connectionId) { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'UserLeaveReqMsg'; - - check(userId, String); - - const selector = { - meetingId, - userId, - }; - - const user = Users.findOne(selector); - - if (!user) { - Logger.info(`Skipping userLeaving. Could not find ${userId} in ${meetingId}`); - return; - } - - const auth = AuthTokenValidation.findOne({ - meetingId, - userId, - }, { sort: { updatedAt: -1 } }); - - // If the current user connection is not the same that triggered the leave we skip - if (auth?.connectionId !== connectionId) { - Logger.info(`Skipping userLeaving. User connectionId=${user.connectionId} is different from requester connectionId=${connectionId}`); - return false; + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'UserLeaveReqMsg'; + + check(userId, String); + + const selector = { + meetingId, + userId, + }; + + const user = Users.findOne(selector); + + if (!user) { + Logger.info(`Skipping userLeaving. Could not find ${userId} in ${meetingId}`); + return; + } + + const auth = AuthTokenValidation.findOne({ + meetingId, + userId, + }, { sort: { updatedAt: -1 } }); + + // If the current user connection is not the same that triggered the leave we skip + if (auth?.connectionId !== connectionId) { + Logger.info(`Skipping userLeaving. User connectionId=${user.connectionId} is different from requester connectionId=${connectionId}`); + return false; + } + + const payload = { + userId, + sessionId: meetingId, + loggedOut: user.loggedOut, + }; + + ClientConnections.removeClientConnection(`${meetingId}--${userId}`, connectionId); + + Logger.info(`User '${userId}' is leaving meeting '${meetingId}'`); + RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, userId, payload); + } catch (err) { + Logger.error(`Exception while invoking method userLeaving ${err.stack}`); } - - const payload = { - userId, - sessionId: meetingId, - loggedOut: user.loggedOut, - }; - - ClientConnections.removeClientConnection(`${meetingId}--${userId}`, connectionId); - - Logger.info(`User '${userId}' is leaving meeting '${meetingId}'`); - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, userId, payload); } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js b/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js index dabec39187..6d83b5c48e 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/userLeftMeeting.js @@ -5,18 +5,18 @@ import ClientConnections from '/imports/startup/server/ClientConnections'; import { check } from 'meteor/check'; export default function userLeftMeeting() { // TODO-- spread the code to method/modifier/handler - // so we don't update the db in a method - const { meetingId, requesterUserId } = extractCredentials(this.userId); + try { + // so we don't update the db in a method + const { meetingId, requesterUserId } = extractCredentials(this.userId); - check(meetingId, String); - check(requesterUserId, String); + check(meetingId, String); + check(requesterUserId, String); - const selector = { - meetingId, - userId: requesterUserId, - }; + const selector = { + meetingId, + userId: requesterUserId, + }; - try { const numberAffected = Users.update(selector, { $set: { loggedOut: true } }); if (numberAffected) { @@ -24,6 +24,6 @@ export default function userLeftMeeting() { // TODO-- spread the code to method/ ClientConnections.removeClientConnection(this.userId, this.connection.id); } } catch (err) { - Logger.error(`Error on user left: ${err}`); + Logger.error(`Exception while invoking method userLeftMeeting ${err.stack}`); } } diff --git a/bigbluebutton-html5/imports/api/users/server/methods/validateAuthToken.js b/bigbluebutton-html5/imports/api/users/server/methods/validateAuthToken.js index 251724aef8..914382cde4 100644 --- a/bigbluebutton-html5/imports/api/users/server/methods/validateAuthToken.js +++ b/bigbluebutton-html5/imports/api/users/server/methods/validateAuthToken.js @@ -6,24 +6,28 @@ import { ValidationStates } from '/imports/api/auth-token-validation'; import pendingAuthenticationsStore from '../store/pendingAuthentications'; export default function validateAuthToken(meetingId, requesterUserId, requesterToken, externalId) { - const REDIS_CONFIG = Meteor.settings.private.redis; - const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; - const EVENT_NAME = 'ValidateAuthTokenReqMsg'; + try { + const REDIS_CONFIG = Meteor.settings.private.redis; + const CHANNEL = REDIS_CONFIG.channels.toAkkaApps; + const EVENT_NAME = 'ValidateAuthTokenReqMsg'; - Logger.debug('ValidateAuthToken method called', { meetingId, requesterUserId, requesterToken, externalId }); + Logger.debug('ValidateAuthToken method called', { meetingId, requesterUserId, requesterToken, externalId }); - if (!meetingId) return false; + if (!meetingId) return false; - // Store reference of methodInvocationObject ( to postpone the connection userId definition ) - pendingAuthenticationsStore.add(meetingId, requesterUserId, requesterToken, this); - upsertValidationState(meetingId, requesterUserId, ValidationStates.VALIDATING, this.connection.id); + // Store reference of methodInvocationObject ( to postpone the connection userId definition ) + pendingAuthenticationsStore.add(meetingId, requesterUserId, requesterToken, this); + upsertValidationState(meetingId, requesterUserId, ValidationStates.VALIDATING, this.connection.id); - const payload = { - userId: requesterUserId, - authToken: requesterToken, - }; + const payload = { + userId: requesterUserId, + authToken: requesterToken, + }; - Logger.info(`User '${requesterUserId}' is trying to validate auth token for meeting '${meetingId}' from connection '${this.connection.id}'`); + Logger.info(`User '${requesterUserId}' is trying to validate auth token for meeting '${meetingId}' from connection '${this.connection.id}'`); - return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + return RedisPubSub.publishUserMessage(CHANNEL, EVENT_NAME, meetingId, requesterUserId, payload); + } catch (err) { + Logger.error(`Exception while invoking method validateAuthToken ${err.stack}`); + } } -- GitLab