summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2015-04-21 20:56:08 +0100
committerPaul "LeoNerd" Evans <paul@matrix.org>2015-04-21 20:56:08 +0100
commitbc41f0398f081177ebc8036280f935d8bcb7bca0 (patch)
tree4b8e619788cbc384d04451e38423f8eff6f173bd /synapse
parentMuch neater fetching of defined powerlevels from m.room.power_levels state event (diff)
downloadsynapse-bc41f0398f081177ebc8036280f935d8bcb7bca0.tar.xz
Initial implementation of an 'invite' power_level
Diffstat (limited to 'synapse')
-rw-r--r--synapse/api/auth.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py
index 9a5058a364..84a46385bb 100644
--- a/synapse/api/auth.py
+++ b/synapse/api/auth.py
@@ -232,6 +232,13 @@ class Auth(object):
             elif target_in_room:  # the target is already in the room.
                 raise AuthError(403, "%s is already in the room." %
                                      target_user_id)
+            else:
+                invite_level = self._get_named_level(auth_events, "invite", 0)
+
+                if user_level < invite_level:
+                    raise AuthError(
+                        403, "You cannot invite user %s." % target_user_id
+                    )
         elif Membership.JOIN == membership:
             # Joins are valid iff caller == target and they were:
             # invited: They are accepting the invitation