diff options
author | Matthew Hodgson <matthew@matrix.org> | 2018-06-25 17:56:10 +0100 |
---|---|---|
committer | Matthew Hodgson <matthew@matrix.org> | 2018-06-25 17:56:10 +0100 |
commit | 0269367f18267a3ff3c323a580c8c2b9e5c377b3 (patch) | |
tree | 5f3edcbffab0d21abd02dc3a29c5563104c30f3c /synapse | |
parent | typos (diff) | |
download | synapse-0269367f18267a3ff3c323a580c8c2b9e5c377b3.tar.xz |
allow non-consented users to still part rooms (to let us autopart them)
Diffstat (limited to '')
-rw-r--r-- | synapse/handlers/message.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index a812117dea..8467284758 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -491,7 +491,7 @@ class EventCreationHandler(object): target, e ) - is_exempt = yield self._is_exempt_from_privacy_policy(builder) + is_exempt = yield self._is_exempt_from_privacy_policy(builder, requester) if not is_exempt: yield self.assert_accepted_privacy_policy(requester) @@ -509,12 +509,13 @@ class EventCreationHandler(object): defer.returnValue((event, context)) - def _is_exempt_from_privacy_policy(self, builder): + def _is_exempt_from_privacy_policy(self, builder, requester): """"Determine if an event to be sent is exempt from having to consent to the privacy policy Args: builder (synapse.events.builder.EventBuilder): event being created + requester (Requster): user requesting this event Returns: Deferred[bool]: true if the event can be sent without the user @@ -525,6 +526,9 @@ class EventCreationHandler(object): membership = builder.content.get("membership", None) if membership == Membership.JOIN: return self._is_server_notices_room(builder.room_id) + elif membership == Membership.LEAVE: + # the user is always allowed to leave (but not kick people) + return builder.state_key == requester.user.to_string() return succeed(False) @defer.inlineCallbacks |