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/packages/rocketchat-authorization/server/functions/canAccessRoom.js

31 lines
862 B

import { RocketChat } from 'meteor/rocketchat:lib';
RocketChat.authz.roomAccessValidators = [
function(room, user = {}) {
if (room && room.t === 'c') {
if (!user._id && RocketChat.settings.get('Accounts_AllowAnonymousRead') === true) {
return true;
}
return RocketChat.authz.hasPermission(user._id, 'view-c-room');
}
},
function(room, user) {
if (!room || !user) {
return;
}
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(room._id, user._id);
if (subscription) {
return true;
}
},
];
RocketChat.authz.canAccessRoom = function(room, user, extraData) {
return RocketChat.authz.roomAccessValidators.some((validator) => validator(room, user, extraData));
};
RocketChat.authz.addRoomAccessValidator = function(validator) {
RocketChat.authz.roomAccessValidators.push(validator.bind(this));
};