bigbluebutton-Github/bigbluebutton-html5/imports/api/pads/server/publishers.js
2023-03-20 16:38:31 -03:00

80 lines
2.4 KiB
JavaScript

import { Meteor } from 'meteor/meteor';
import Logger from '/imports/startup/server/logger';
import Pads, { PadsSessions, PadsUpdates } from '/imports/api/pads';
import AuthTokenValidation, { ValidationStates } from '/imports/api/auth-token-validation';
async function pads() {
const tokenValidation = await AuthTokenValidation
.findOneAsync({ connectionId: this.connection.id });
if (!tokenValidation || tokenValidation.validationStatus !== ValidationStates.VALIDATED) {
Logger.warn(`Publishing Pads was requested by unauth connection ${this.connection.id}`);
return Pads.find({ meetingId: '' });
}
const { meetingId, userId } = tokenValidation;
Logger.info(`Publishing Pads for ${meetingId} ${userId}`);
const options = {
fields: {
padId: 0,
},
};
return Pads.find({ meetingId }, options);
}
async function padsSessions() {
const tokenValidation = await AuthTokenValidation
.findOneAsync({ connectionId: this.connection.id });
if (!tokenValidation || tokenValidation.validationStatus !== ValidationStates.VALIDATED) {
Logger.warn(`Publishing PadsSessions was requested by unauth connection ${this.connection.id}`);
return PadsSessions.find({ meetingId: '' });
}
const { meetingId, userId } = tokenValidation;
Logger.info(`Publishing PadsSessions for ${meetingId} ${userId}`);
return PadsSessions.find({ meetingId, userId });
}
async function padsUpdates() {
const tokenValidation = await AuthTokenValidation
.findOneAsync({ connectionId: this.connection.id });
if (!tokenValidation || tokenValidation.validationStatus !== ValidationStates.VALIDATED) {
Logger.warn(`Publishing PadsUpdates was requested by unauth connection ${this.connection.id}`);
return PadsUpdates.find({ meetingId: '' });
}
const { meetingId, userId } = tokenValidation;
Logger.info(`Publishing PadsUpdates for ${meetingId} ${userId}`);
return PadsUpdates.find({ meetingId });
}
function publishPads(...args) {
const boundPads = pads.bind(this);
return boundPads(...args);
}
function publishPadsSessions(...args) {
const boundPadsSessions = padsSessions.bind(this);
return boundPadsSessions(...args);
}
function publishPadsUpdates(...args) {
const boundPadsUpdates = padsUpdates.bind(this);
return boundPadsUpdates(...args);
}
Meteor.publish('pads', publishPads);
Meteor.publish('pads-sessions', publishPadsSessions);
Meteor.publish('pads-updates', publishPadsUpdates);