Skip to content

Commit

Permalink
[FIX] Prevent federation crash on invite users as a non-owner user (#…
Browse files Browse the repository at this point in the history
…25683)

* fix: prevent crashing when inviting someone as non-owner

* chore: fix lint
  • Loading branch information
MarcosSpessatto committed May 30, 2022
1 parent d364be4 commit 62405c6
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
16 changes: 14 additions & 2 deletions apps/meteor/app/federation-v2/server/matrix-client/user.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import type { MatrixProfileInfo } from '@rocket.chat/forked-matrix-bot-sdk';
import { IUser } from '@rocket.chat/core-typings';
import { TAPi18n } from 'meteor/rocketchat:tap-i18n';

import { matrixBridge } from '../bridge';
import { MatrixBridgedUser, MatrixBridgedRoom, Users } from '../../../models/server';
import { addUserToRoom } from '../../../lib/server/functions';
import { matrixClient } from '.';
import { dataInterface } from '../data-interface';
import { settings } from '../../../settings/server';
import { api } from '../../../../server/sdk/api';

interface ICreateUserResult {
uid: string;
Expand Down Expand Up @@ -86,7 +88,6 @@ export const invite = async (inviterId: string, roomId: string, invitedId: strin
}

console.log(`[${inviterId}-${invitedId}-${roomId}] Inviting the user to the room...`);

// Invite && Auto-join if the user is Rocket.Chat controlled
if (!invitedUserIsRemote) {
// Invite the user to the room
Expand All @@ -97,7 +98,18 @@ export const invite = async (inviterId: string, roomId: string, invitedId: strin
await matrixBridge.getInstance().getIntent(invitedUserMatrixId).join(matrixRoomId);
} else if (room.t !== 'd') {
// Invite the user to the room but don't wait as this is dependent on the user accepting the invite because we don't control this user
matrixBridge.getInstance().getIntent(bridgedInviterUser.mui).invite(matrixRoomId, invitedUserMatrixId);
matrixBridge
.getInstance()
.getIntent(bridgedInviterUser.mui)
.invite(matrixRoomId, invitedUserMatrixId)
.catch(() => {
api.broadcast('notify.ephemeralMessage', inviterId, roomId, {
msg: TAPi18n.__('Federation_Matrix_only_owners_can_invite_users', {
postProcess: 'sprintf',
lng: settings.get('Language') || 'en',
}),
});
});
}

// Add the matrix user to the invited room
Expand Down
1 change: 1 addition & 0 deletions apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1990,6 +1990,7 @@
"Federation_Matrix_as_token": "AppService Token",
"Federation_Matrix_homeserver_url": "Homeserver URL",
"Federation_Matrix_homeserver_domain": "Homeserver Domain",
"Federation_Matrix_only_owners_can_invite_users": "Only owners can invite users",
"Federation_Matrix_bridge_url": "Bridge URL",
"Federation_Matrix_bridge_localpart": "AppService User Localpart",
"Federation_Matrix_registration_file": "Registration File",
Expand Down

0 comments on commit 62405c6

Please sign in to comment.