summary refs log tree commit diff
path: root/synapse/handlers/room_member.py
diff options
context:
space:
mode:
authorDavid Baker <dbkr@users.noreply.github.com>2017-10-03 18:10:23 +0100
committerGitHub <noreply@github.com>2017-10-03 18:10:23 +0100
commit5f20a91fa1e74794c34ba47415e47d3b07be37af (patch)
tree1ac5c80af280727951f6385d88890623a2be2c26 /synapse/handlers/room_member.py
parentMerge pull request #2491 from matrix-org/rav/port_db_fixes (diff)
parents/roomid/room_id/ (diff)
downloadsynapse-5f20a91fa1e74794c34ba47415e47d3b07be37af.tar.xz
Merge pull request #2492 from matrix-org/dbkr/spam_check_invites
Allow spam checker to reject invites too
Diffstat (limited to 'synapse/handlers/room_member.py')
-rw-r--r--synapse/handlers/room_member.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py

index 9a498c2d3e..37985fa1f9 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py
@@ -48,6 +48,7 @@ class RoomMemberHandler(BaseHandler): self.member_linearizer = Linearizer(name="member") self.clock = hs.get_clock() + self.spam_checker = hs.get_spam_checker() self.distributor = hs.get_distributor() self.distributor.declare("user_joined_room") @@ -210,12 +211,26 @@ class RoomMemberHandler(BaseHandler): if is_blocked: raise SynapseError(403, "This room has been blocked on this server") - if (effective_membership_state == "invite" and - self.hs.config.block_non_admin_invites): + if effective_membership_state == "invite": + block_invite = False is_requester_admin = yield self.auth.is_server_admin( requester.user, ) if not is_requester_admin: + if self.hs.config.block_non_admin_invites: + logger.info( + "Blocking invite: user is not admin and non-admin " + "invites disabled" + ) + block_invite = True + + if not self.spam_checker.user_may_invite( + requester.user.to_string(), room_id, + ): + logger.info("Blocking invite due to spam checker") + block_invite = True + + if block_invite: raise SynapseError( 403, "Invites have been disabled on this server", )