The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/app/livechat/server/publications/visitorHistory.js

46 lines
1.4 KiB

import { Meteor } from 'meteor/meteor';
import { hasPermission } from '../../../authorization';
import { LivechatRooms, Subscriptions } from '../../../models';
Meteor.publish('livechat:visitorHistory', function({ rid: roomId }) {
console.warn('The publication "livechat:visitorHistory" is deprecated and will be removed after version v3.0.0');
if (!this.userId) {
return this.error(new Meteor.Error('error-not-authorized', 'Not authorized', { publish: 'livechat:visitorHistory' }));
}
if (!hasPermission(this.userId, 'view-l-room')) {
return this.error(new Meteor.Error('error-not-authorized', 'Not authorized', { publish: 'livechat:visitorHistory' }));
}
const room = LivechatRooms.findOneById(roomId);
const subscription = Subscriptions.findOneByRoomIdAndUserId(room._id, this.userId, { fields: { _id: 1 } });
if (!subscription) {
return this.error(new Meteor.Error('error-not-authorized', 'Not authorized', { publish: 'livechat:visitorHistory' }));
}
const self = this;
if (room && room.v && room.v._id) {
const handle = LivechatRooms.findByVisitorId(room.v._id).observeChanges({
added(id, fields) {
self.added('visitor_history', id, fields);
},
changed(id, fields) {
self.changed('visitor_history', id, fields);
},
removed(id) {
self.removed('visitor_history', id);
},
});
self.ready();
self.onStop(function() {
handle.stop();
});
} else {
self.ready();
}
});