mirror of
https://github.com/element-hq/synapse
synced 2024-08-20 15:30:21 +00:00
allow non-consented users to still part rooms (to let us autopart them)
This commit is contained in:
parent
784189b1f4
commit
0269367f18
1 changed files with 6 additions and 2 deletions
|
@ -491,7 +491,7 @@ class EventCreationHandler(object):
|
||||||
target, e
|
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:
|
if not is_exempt:
|
||||||
yield self.assert_accepted_privacy_policy(requester)
|
yield self.assert_accepted_privacy_policy(requester)
|
||||||
|
|
||||||
|
@ -509,12 +509,13 @@ class EventCreationHandler(object):
|
||||||
|
|
||||||
defer.returnValue((event, context))
|
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
|
""""Determine if an event to be sent is exempt from having to consent
|
||||||
to the privacy policy
|
to the privacy policy
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
builder (synapse.events.builder.EventBuilder): event being created
|
builder (synapse.events.builder.EventBuilder): event being created
|
||||||
|
requester (Requster): user requesting this event
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Deferred[bool]: true if the event can be sent without the user
|
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)
|
membership = builder.content.get("membership", None)
|
||||||
if membership == Membership.JOIN:
|
if membership == Membership.JOIN:
|
||||||
return self._is_server_notices_room(builder.room_id)
|
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)
|
return succeed(False)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
|
|
Loading…
Reference in a new issue