Merge pull request #14690 from gustavotrott/fix-user-ejected-reconnecting
fix: Rejected user keep trying to reconnect
This commit is contained in:
commit
2c90124869
@ -8,12 +8,16 @@ import ClientConnections from '/imports/startup/server/ClientConnections';
|
|||||||
import UsersPersistentData from '/imports/api/users-persistent-data';
|
import UsersPersistentData from '/imports/api/users-persistent-data';
|
||||||
import VoiceUsers from '/imports/api/voice-users/';
|
import VoiceUsers from '/imports/api/voice-users/';
|
||||||
|
|
||||||
const clearAllSessions = (sessionUserId) => {
|
const disconnectUser = (meetingId, userId) => {
|
||||||
|
const sessionUserId = `${meetingId}--${userId}`;
|
||||||
|
ClientConnections.removeClientConnection(sessionUserId);
|
||||||
|
|
||||||
const serverSessions = Meteor.server.sessions;
|
const serverSessions = Meteor.server.sessions;
|
||||||
const interable = serverSessions.values();
|
const interable = serverSessions.values();
|
||||||
|
|
||||||
for (const session of interable) {
|
for (const session of interable) {
|
||||||
if (session.userId === sessionUserId) {
|
if (session.userId === sessionUserId) {
|
||||||
|
Logger.info(`Removed session id=${userId} meeting=${meetingId}`);
|
||||||
session.close();
|
session.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -24,14 +28,14 @@ export default function removeUser(meetingId, userId) {
|
|||||||
check(userId, String);
|
check(userId, String);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const selector = {
|
||||||
|
meetingId,
|
||||||
|
userId,
|
||||||
|
};
|
||||||
|
|
||||||
// we don't want to fully process the redis message in frontend
|
// we don't want to fully process the redis message in frontend
|
||||||
// since the backend is supposed to update Mongo
|
// since the backend is supposed to update Mongo
|
||||||
if ((process.env.BBB_HTML5_ROLE !== 'frontend')) {
|
if ((process.env.BBB_HTML5_ROLE !== 'frontend')) {
|
||||||
const selector = {
|
|
||||||
meetingId,
|
|
||||||
userId,
|
|
||||||
};
|
|
||||||
|
|
||||||
setloggedOutStatus(userId, meetingId, true);
|
setloggedOutStatus(userId, meetingId, true);
|
||||||
VideoStreams.remove({ meetingId, userId });
|
VideoStreams.remove({ meetingId, userId });
|
||||||
|
|
||||||
@ -49,9 +53,19 @@ export default function removeUser(meetingId, userId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!process.env.BBB_HTML5_ROLE || process.env.BBB_HTML5_ROLE === 'frontend') {
|
if (!process.env.BBB_HTML5_ROLE || process.env.BBB_HTML5_ROLE === 'frontend') {
|
||||||
const sessionUserId = `${meetingId}--${userId}`;
|
|
||||||
ClientConnections.removeClientConnection(sessionUserId);
|
//Wait for user removal and then kill user connections and sessions
|
||||||
clearAllSessions(sessionUserId);
|
const queryCurrentUser = Users.find(selector);
|
||||||
|
if (queryCurrentUser.count() === 0) {
|
||||||
|
disconnectUser(meetingId, userId);
|
||||||
|
} else {
|
||||||
|
let queryUserObserver = queryCurrentUser.observeChanges({
|
||||||
|
removed() {
|
||||||
|
disconnectUser(meetingId, userId);
|
||||||
|
queryUserObserver.stop();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.info(`Removed user id=${userId} meeting=${meetingId}`);
|
Logger.info(`Removed user id=${userId} meeting=${meetingId}`);
|
||||||
|
Loading…
Reference in New Issue
Block a user