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/lib/server/methods/getRoomRoles.js

43 lines
1.1 KiB

import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import _ from 'underscore';
import { settings } from '../../../settings';
import { Subscriptions, Users, Roles } from '../../../models';
Meteor.methods({
getRoomRoles(rid) {
check(rid, String);
if (!Meteor.userId() && settings.get('Accounts_AllowAnonymousRead') === false) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'getRoomRoles' });
}
check(rid, String);
const options = {
sort: {
'u.username': 1,
},
fields: {
rid: 1,
u: 1,
roles: 1,
},
};
const UI_Use_Real_Name = settings.get('UI_Use_Real_Name') === true;
const roles = Roles.find({ scope: 'Subscriptions', description: { $exists: 1, $ne: '' } }).fetch();
const subscriptions = Subscriptions.findByRoomIdAndRoles(rid, _.pluck(roles, '_id'), options).fetch();
if (!UI_Use_Real_Name) {
return subscriptions;
}
return subscriptions.map((subscription) => {
const user = Users.findOneById(subscription.u._id);
subscription.u.name = user && user.name;
return subscription;
});
},
});