summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2019-07-25 10:03:36 +0200
committerBrendan Abolivier <babolivier@matrix.org>2019-07-25 10:03:36 +0200
commitdd92685179655ac555d40390dcab8970261d19da (patch)
tree6f791c44bcd7e0ac905fa0d75627e6cc66a0c34c /synapse
parentTurns out the default preset is public_chat (diff)
downloadsynapse-dd92685179655ac555d40390dcab8970261d19da.tar.xz
Only check the join rule on room creation if an access rule is also provided
Diffstat (limited to 'synapse')
-rw-r--r--synapse/third_party_rules/access_rules.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/synapse/third_party_rules/access_rules.py b/synapse/third_party_rules/access_rules.py

index a7fd9eab2e..786f3d9ad3 100644 --- a/synapse/third_party_rules/access_rules.py +++ b/synapse/third_party_rules/access_rules.py
@@ -122,18 +122,18 @@ class RoomAccessRules(object): if event["type"] == EventTypes.JoinRules: join_rule = event["content"].get("join_rule") - if join_rule == JoinRules.PUBLIC and access_rule != ACCESS_RULE_RESTRICTED: - raise SynapseError(400, "Invalid access rule") - - if ( - preset == RoomCreationPreset.PUBLIC_CHAT - and access_rule != ACCESS_RULE_RESTRICTED - ): - raise SynapseError(400, "Invalid access rule") - - # If there's no rules event in the initial state, create one with the default - # setting. - if not access_rule: + if access_rule: + if join_rule == JoinRules.PUBLIC and access_rule != ACCESS_RULE_RESTRICTED: + raise SynapseError(400, "Invalid access rule") + + if ( + preset == RoomCreationPreset.PUBLIC_CHAT + and access_rule != ACCESS_RULE_RESTRICTED + ): + raise SynapseError(400, "Invalid access rule") + else: + # If there's no rules event in the initial state, create one with the default + # setting. if is_direct: default_rule = ACCESS_RULE_DIRECT else: