summary refs log tree commit diff
path: root/synapse/handlers/federation.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2021-05-25 10:23:00 +0100
committerErik Johnston <erik@matrix.org>2021-05-25 10:23:00 +0100
commit2d83d1906161ab7794ee41265ff49f3b3ff1c591 (patch)
tree8b7718387857071ed8c93bd75562eb76ca9b41c0 /synapse/handlers/federation.py
parentMerge remote-tracking branch 'origin/develop' into matrix-org-hotfixes (diff)
parentRun complement with Synapse workers manually. (#10039) (diff)
downloadsynapse-2d83d1906161ab7794ee41265ff49f3b3ff1c591.tar.xz
Merge remote-tracking branch 'origin/develop' into matrix-org-hotfixes
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r--synapse/handlers/federation.py29
1 files changed, 9 insertions, 20 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py

index 798ed75b30..678f6b7707 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py
@@ -1668,28 +1668,17 @@ class FederationHandler(BaseHandler): # Check if the user is already in the room or invited to the room. user_id = event.state_key prev_member_event_id = prev_state_ids.get((EventTypes.Member, user_id), None) - newly_joined = True - user_is_invited = False + prev_member_event = None if prev_member_event_id: prev_member_event = await self.store.get_event(prev_member_event_id) - newly_joined = prev_member_event.membership != Membership.JOIN - user_is_invited = prev_member_event.membership == Membership.INVITE - - # If the member is not already in the room, and not invited, check if - # they should be allowed access via membership in a space. - if ( - newly_joined - and not user_is_invited - and not await self._event_auth_handler.can_join_without_invite( - prev_state_ids, - event.room_version, - user_id, - ) - ): - raise AuthError( - 403, - "You do not belong to any of the required spaces to join this room.", - ) + + # Check if the member should be allowed access via membership in a space. + await self._event_auth_handler.check_restricted_join_rules( + prev_state_ids, + event.room_version, + user_id, + prev_member_event, + ) # Persist the event. await self._auth_and_persist_event(origin, event, context)