diff --git a/apps/meteor/app/federation-v2/server/matrix-client/user.ts b/apps/meteor/app/federation-v2/server/matrix-client/user.ts index 21b705db044b..9e6ba092e9b4 100644 --- a/apps/meteor/app/federation-v2/server/matrix-client/user.ts +++ b/apps/meteor/app/federation-v2/server/matrix-client/user.ts @@ -1,5 +1,6 @@ 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'; @@ -7,6 +8,7 @@ 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; @@ -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 @@ -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 diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index c5b69b50c118..8de95b3caae6 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -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",