76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
import { check } from 'meteor/check';
|
|
import Logger from '/imports/startup/server/logger';
|
|
|
|
class BannedUsers {
|
|
constructor() {
|
|
Logger.debug('BannedUsers :: Initializing');
|
|
this.store = new Mongo.Collection('users-banned');
|
|
|
|
if (Meteor.isServer) {
|
|
// types of queries for the users:
|
|
// 1. meetingId
|
|
// 2. meetingId, userId
|
|
this.store._ensureIndex({ meetingId: 1, userId: 1 });
|
|
}
|
|
}
|
|
|
|
init(meetingId) {
|
|
Logger.debug('BannedUsers :: init', { meetingId });
|
|
|
|
// if (!this.store[meetingId]) this.store[meetingId] = new Set();
|
|
}
|
|
|
|
add(meetingId, externalId) {
|
|
check(meetingId, String);
|
|
check(externalId, String);
|
|
|
|
Logger.debug('BannedUsers :: add', { meetingId, externalId });
|
|
|
|
const selector = {
|
|
meetingId,
|
|
externalId,
|
|
};
|
|
|
|
const modifier = Object.assign( // TODO
|
|
{ meetingId },
|
|
{ externalId },
|
|
);
|
|
|
|
try {
|
|
const insertedId = this.store.upsert(selector, modifier);
|
|
|
|
if (insertedId) {
|
|
Logger.info('BannedUsers :: Added to BannedUsers collection', { meetingId, externalId });
|
|
}
|
|
} catch (err) {
|
|
Logger.error('BannedUsers :: Error on adding to BannedUsers collection', { meetingId, externalId, err });
|
|
}
|
|
}
|
|
|
|
delete(meetingId) {
|
|
check(meetingId, String);
|
|
|
|
const selector = {
|
|
meetingId,
|
|
};
|
|
|
|
try {
|
|
this.store.remove(selector);
|
|
Logger.info('BannedUsers :: Removed meeting', { meetingId });
|
|
} catch (err) {
|
|
Logger.error('BannedUsers :: Removing from collection', { err });
|
|
}
|
|
}
|
|
|
|
has(meetingId, externalId) {
|
|
check(meetingId, String);
|
|
check(externalId, String);
|
|
|
|
Logger.info('BannedUsers :: has', { meetingId, externalId });
|
|
|
|
return this.store.findOne({ meetingId, externalId });
|
|
}
|
|
}
|
|
|
|
export default new BannedUsers();
|