summary refs log tree commit diff
path: root/synapse/handlers/room_member.py
diff options
context:
space:
mode:
authorPatrick Cloke <clokep@users.noreply.github.com>2021-05-18 12:17:04 -0400
committerGitHub <noreply@github.com>2021-05-18 12:17:04 -0400
commitac6bfcd52f03e9574324978f83a281cf35f4ea89 (patch)
tree19429a2cff5389f0611f907b694be28228a61705 /synapse/handlers/room_member.py
parentUse a database table to hold the users that should have full presence sent to... (diff)
downloadsynapse-ac6bfcd52f03e9574324978f83a281cf35f4ea89.tar.xz
Refactor checking restricted join rules (#10007)
To be more consistent with similar code. The check now automatically
raises an AuthError instead of passing back a boolean. It also absorbs
some shared logic between callers.
Diffstat (limited to '')
-rw-r--r--synapse/handlers/room_member.py20
1 files changed, 5 insertions, 15 deletions
diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py

index 9a092da715..d6fc43e798 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py
@@ -260,25 +260,15 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): if event.membership == Membership.JOIN: 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 is not accepting an invite, - # 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 + ) # Only rate-limit if the user actually joined the room, otherwise we'll end # up blocking profile updates.