Skip to content

Commit c581cc0

Browse files
committed
add room invite check on canAccessResource validation
1 parent 90e1582 commit c581cc0

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

packages/federation-sdk/src/services/event-authorization.service.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,22 @@ export class EventAuthorizationService {
267267
return true;
268268
}
269269

270+
for (const [key, event] of state.entries()) {
271+
if (key.startsWith('m.room.member:') && event?.isMembershipEvent()) {
272+
const membership = event.getContent().membership;
273+
const stateKey = event.stateKey;
274+
if (membership === 'invite' && stateKey) {
275+
const invitedUserServer = stateKey.split(':').pop();
276+
if (invitedUserServer === serverName) {
277+
this.logger.debug(
278+
`Server ${serverName} has pending invites in room, allowing access`,
279+
);
280+
return true;
281+
}
282+
}
283+
}
284+
}
285+
270286
const historyVisibilityEvent = state.get('m.room.history_visibility:');
271287
if (
272288
historyVisibilityEvent?.isHistoryVisibilityEvent() &&

packages/homeserver/src/middlewares/canAccessResource.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,8 @@ import { errCodes } from '@rocket.chat/federation-sdk';
33
import Elysia from 'elysia';
44
import { isAuthenticatedMiddleware } from './isAuthenticated';
55

6-
type RoutesParams = {
7-
roomId?: string;
8-
mediaId?: string;
9-
eventId?: string;
10-
};
11-
126
function extractEntityId(
13-
params: RoutesParams,
7+
params: { roomId?: string; mediaId?: string; eventId?: string },
148
entityType: 'event' | 'media' | 'room',
159
): string {
1610
if (entityType === 'room') {

0 commit comments

Comments
 (0)