summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2019-06-17 16:27:47 +0100
committerBrendan Abolivier <babolivier@matrix.org>2019-06-17 17:39:09 +0100
commit112cf5a73a12c1618414f0e2ef4153bf6d4a89f9 (patch)
tree99cdfee274b350ead01fc8ca44e9fd89bd0c15c3 /synapse/handlers
parentAdd third party rules hook into create room (diff)
downloadsynapse-112cf5a73a12c1618414f0e2ef4153bf6d4a89f9.tar.xz
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
         )