diff --git a/biome.jsonc b/biome.jsonc index 582588fad..ef1a30f14 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -46,6 +46,7 @@ "**/node_modules", ".vscode", "dist", + "federation-bundle", "link", ".turbo", "tsconfig.*.json" diff --git a/packages/federation-sdk/src/container.ts b/packages/federation-sdk/src/container.ts index b2103f1bd..079325953 100644 --- a/packages/federation-sdk/src/container.ts +++ b/packages/federation-sdk/src/container.ts @@ -15,10 +15,6 @@ import { EventStagingRepository } from './repositories/event-staging.repository' import { EventRepository } from './repositories/event.repository'; import { Key, KeyRepository } from './repositories/key.repository'; import { Lock, LockRepository } from './repositories/lock.repository'; -import { - MatrixBridgedRoom, - MatrixBridgedRoomRepository, -} from './repositories/matrix-bridged-room.repository'; import { Room, RoomRepository } from './repositories/room.repository'; import { Server, ServerRepository } from './repositories/server.repository'; import { StateRepository, StateStore } from './repositories/state.repository'; @@ -98,15 +94,6 @@ export async function createFederationContainer( useValue: db.collection('rocketchat_uploads'), }); - container.register>( - 'MatrixBridgedRoomCollection', - { - useValue: db.collection( - 'rocketchat_matrix_bridged_rooms', - ), - }, - ); - container.registerSingleton(EventRepository); container.registerSingleton(EventStagingRepository); container.registerSingleton(KeyRepository); @@ -114,7 +101,6 @@ export async function createFederationContainer( container.registerSingleton(RoomRepository); container.registerSingleton(StateRepository); container.registerSingleton(ServerRepository); - container.registerSingleton(MatrixBridgedRoomRepository); container.registerSingleton(UploadRepository); container.registerSingleton(FederationRequestService); diff --git a/packages/federation-sdk/src/repositories/matrix-bridged-room.repository.ts b/packages/federation-sdk/src/repositories/matrix-bridged-room.repository.ts deleted file mode 100644 index 5d5a07b32..000000000 --- a/packages/federation-sdk/src/repositories/matrix-bridged-room.repository.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Collection } from 'mongodb'; -import { inject, singleton } from 'tsyringe'; - -export type MatrixBridgedRoom = { - rid: string; // Rocket.Chat room ID - mri: string; // Matrix room ID - fromServer: string; -}; - -@singleton() -export class MatrixBridgedRoomRepository { - constructor( - @inject('MatrixBridgedRoomCollection') - private readonly collection: Collection, - ) {} - - async findMatrixRoomId(rocketChatRoomId: string): Promise { - const bridgedRoom = await this.collection.findOne({ - rid: rocketChatRoomId, - }); - - return bridgedRoom?.mri || null; - } -} diff --git a/packages/federation-sdk/src/repositories/upload.repository.ts b/packages/federation-sdk/src/repositories/upload.repository.ts index f9b8e2c5d..9e84e90f5 100644 --- a/packages/federation-sdk/src/repositories/upload.repository.ts +++ b/packages/federation-sdk/src/repositories/upload.repository.ts @@ -5,6 +5,7 @@ export type Upload = { rid: string; federation: { mxcUri: string; + mrid: string; serverName: string; mediaId: string; }; @@ -16,11 +17,9 @@ export class UploadRepository { @inject('UploadCollection') private readonly collection: Collection, ) {} - async findRocketChatRoomIdByMediaId(mediaId: string): Promise { - const upload = await this.collection.findOne({ + async findByMediaId(mediaId: string): Promise { + return this.collection.findOne({ 'federation.mediaId': mediaId, }); - - return upload?.rid || null; } } diff --git a/packages/federation-sdk/src/services/event-authorization.service.ts b/packages/federation-sdk/src/services/event-authorization.service.ts index 89da1cf9d..b08deb24c 100644 --- a/packages/federation-sdk/src/services/event-authorization.service.ts +++ b/packages/federation-sdk/src/services/event-authorization.service.ts @@ -13,7 +13,6 @@ import type { } from '@rocket.chat/federation-room'; import { singleton } from 'tsyringe'; import { KeyRepository } from '../repositories/key.repository'; -import { MatrixBridgedRoomRepository } from '../repositories/matrix-bridged-room.repository'; import { UploadRepository } from '../repositories/upload.repository'; import { ConfigService } from './config.service'; import { EventService } from './event.service'; @@ -28,7 +27,6 @@ export class EventAuthorizationService { private readonly eventService: EventService, private readonly configService: ConfigService, private readonly uploadRepository: UploadRepository, - private readonly matrixBridgedRoomRepository: MatrixBridgedRoomRepository, private readonly keyRepository: KeyRepository, ) {} @@ -367,19 +365,13 @@ export class EventAuthorizationService { // TODO duplicated from canAccessEvent. need to refactor into a common method async canAccessMedia(mediaId: string, serverName: string): Promise { try { - const rcRoomId = - await this.uploadRepository.findRocketChatRoomIdByMediaId(mediaId); - if (!rcRoomId) { + const rcUpload = await this.uploadRepository.findByMediaId(mediaId); + if (!rcUpload) { this.logger.debug(`Media ${mediaId} not found in any room`); return false; } - const matrixRoomId = - await this.matrixBridgedRoomRepository.findMatrixRoomId(rcRoomId); - if (!matrixRoomId) { - this.logger.debug(`Media ${mediaId} not found in any room`); - return false; - } + const matrixRoomId = rcUpload.federation.mrid; const state = await this.stateService.getFullRoomState(matrixRoomId);