summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-03-23 17:09:45 +0000
committerAndrew Morgan <andrew@amorgan.xyz>2020-03-23 17:09:45 +0000
commit693425b4ea403eb046408d73fd697227e5f7de28 (patch)
tree6eda83a27007ddfa2ac4fd8109c2f073d691a65d
parentReduce amount of logging at INFO level. (#6862) (diff)
parentThird party event rules Update (#6781) (diff)
downloadsynapse-693425b4ea403eb046408d73fd697227e5f7de28.tar.xz
Third party event rules Update (#6781)
* commit '99fcc9628':
  Third party event rules Update (#6781)
-rw-r--r--changelog.d/6781.bugfix1
-rw-r--r--synapse/events/third_party_rules.py7
-rw-r--r--synapse/handlers/room.py6
3 files changed, 10 insertions, 4 deletions
diff --git a/changelog.d/6781.bugfix b/changelog.d/6781.bugfix
new file mode 100644

index 0000000000..47cd671bff --- /dev/null +++ b/changelog.d/6781.bugfix
@@ -0,0 +1 @@ +Fixed third party event rules function `on_create_room`'s return value being ignored. diff --git a/synapse/events/third_party_rules.py b/synapse/events/third_party_rules.py
index 86f7e5f8aa..459132d388 100644 --- a/synapse/events/third_party_rules.py +++ b/synapse/events/third_party_rules.py
@@ -74,15 +74,16 @@ class ThirdPartyEventRules(object): is_requester_admin (bool): If the requester is an admin Returns: - defer.Deferred + defer.Deferred[bool]: Whether room creation is allowed or denied. """ if self.third_party_rules is None: - return + return True - yield self.third_party_rules.on_create_room( + ret = yield self.third_party_rules.on_create_room( requester, config, is_requester_admin ) + return ret @defer.inlineCallbacks def check_threepid_can_be_invited(self, medium, address, room_id): diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index b3b8fe7b82..ccf0e962f6 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py
@@ -593,9 +593,13 @@ class RoomCreationHandler(BaseHandler): # Check whether the third party rules allows/changes the room create # request. - yield self.third_party_event_rules.on_create_room( + event_allowed = yield self.third_party_event_rules.on_create_room( requester, config, is_requester_admin=is_requester_admin ) + if not event_allowed: + raise SynapseError( + 403, "You are not permitted to create rooms", Codes.FORBIDDEN + ) invite_list = config.get("invite", []) invite_3pid_list = config.get("invite_3pid", [])