summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2019-06-17 18:08:31 +0100
committerGitHub <noreply@github.com>2019-06-17 18:08:31 +0100
commitd6328e03fdf614c87552e5be2b815213c584bcee (patch)
treee55adcd48e1cc37d2d5d0ef5f55aa053cc8d3878 /synapse/handlers
parentMerge pull request #5479 from matrix-org/erikj/add_create_room_hook_develop (diff)
parentMake check_threepid_can_be_invited async (diff)
downloadsynapse-d6328e03fdf614c87552e5be2b815213c584bcee.tar.xz
Merge pull request #5477 from matrix-org/babolivier/third_party_rules_3pid
Add third party rules hook for 3PID invites
Diffstat (limited to 'synapse/handlers')
-rw-r--r--synapse/handlers/room_member.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py
index 93ac986c86..458902bb7e 100644
--- a/synapse/handlers/room_member.py
+++ b/synapse/handlers/room_member.py
@@ -72,6 +72,7 @@ class RoomMemberHandler(object):
 
         self.clock = hs.get_clock()
         self.spam_checker = hs.get_spam_checker()
+        self.third_party_event_rules = hs.get_third_party_event_rules()
         self._server_notices_mxid = self.config.server_notices_mxid
         self._enable_lookup = hs.config.enable_3pid_lookup
         self.allow_per_room_profiles = self.config.allow_per_room_profiles
@@ -723,6 +724,15 @@ class RoomMemberHandler(object):
         # can't just rely on the standard ratelimiting of events.
         yield self.base_handler.ratelimit(requester)
 
+        can_invite = yield self.third_party_event_rules.check_threepid_can_be_invited(
+            medium, address, room_id,
+        )
+        if not can_invite:
+            raise SynapseError(
+                403, "This third-party identifier can not be invited in this room",
+                Codes.FORBIDDEN,
+            )
+
         invitee = yield self._lookup_3pid(
             id_server, medium, address
         )