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/apps/meteor/app/channel-settings/server/functions/saveRoomEncrypted.ts

29 lines
1022 B

import { Meteor } from 'meteor/meteor';
import { Match } from 'meteor/check';
import type { UpdateResult } from 'mongodb';
import type { IUser } from '@rocket.chat/core-typings';
import { isRegisterUser } from '@rocket.chat/core-typings';
import { Rooms } from '@rocket.chat/models';
import { Message } from '@rocket.chat/core-services';
export const saveRoomEncrypted = async function (rid: string, encrypted: boolean, user: IUser, sendMessage = true): Promise<UpdateResult> {
if (!Match.test(rid, String)) {
throw new Meteor.Error('invalid-room', 'Invalid room', {
function: 'RocketChat.saveRoomEncrypted',
});
}
if (!isRegisterUser(user)) {
throw new Meteor.Error('invalid-user', 'Invalid user', {
function: 'RocketChat.saveRoomEncrypted',
});
}
const update = await Rooms.saveEncryptedById(rid, encrypted);
if (update && sendMessage) {
const type = encrypted ? 'room_e2e_enabled' : 'room_e2e_disabled';
await Message.saveSystemMessage(type, rid, user.username, user);
}
return update;
};