summary refs log tree commit diff
path: root/synapse/handlers/message.py
diff options
context:
space:
mode:
authorDaniel Wagner-Hall <daniel@matrix.org>2015-11-12 15:02:00 +0000
committerDaniel Wagner-Hall <daniel@matrix.org>2015-11-12 15:02:00 +0000
commitfb7e260a20847ac2a253a0e7868ecb2284c9a766 (patch)
treef0a458b75db7d7ec5e9a66569f14cbb006e5ecb7 /synapse/handlers/message.py
parentMerge pull request #364 from matrix-org/daniel/guestdisplaynames (diff)
downloadsynapse-fb7e260a20847ac2a253a0e7868ecb2284c9a766.tar.xz
Tweak guest access permissions
 * Allow world_readable rooms to be read by guests who have joined and
   left
 * Allow regular users to access world_readable rooms
Diffstat (limited to 'synapse/handlers/message.py')
-rw-r--r--synapse/handlers/message.py21
1 files changed, 11 insertions, 10 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py

index 92e1180262..5f56f90590 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py
@@ -267,17 +267,18 @@ class MessageHandler(BaseHandler): member_event = yield self.auth.check_user_was_in_room(room_id, user_id) defer.returnValue((member_event.membership, member_event.event_id)) return - except AuthError: + except AuthError, auth_error: + visibility = yield self.state_handler.get_current_state( + room_id, EventTypes.RoomHistoryVisibility, "" + ) + if ( + visibility and + visibility.content["history_visibility"] == "world_readable" + ): + defer.returnValue((Membership.JOIN, None)) + return if not is_guest: - raise - - visibility = yield self.state_handler.get_current_state( - room_id, EventTypes.RoomHistoryVisibility, "" - ) - if visibility.content["history_visibility"] == "world_readable": - defer.returnValue((Membership.JOIN, None)) - return - else: + raise auth_error raise AuthError( 403, "Guest access not allowed", errcode=Codes.GUEST_ACCESS_FORBIDDEN )