summary refs log tree commit diff
path: root/synapse/third_party_rules/access_rules.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/third_party_rules/access_rules.py')
-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: