summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorDirk Klimpel <5740567+dklimpel@users.noreply.github.com>2020-06-05 14:08:49 +0200
committerGitHub <noreply@github.com>2020-06-05 13:08:49 +0100
commit908f9e2d24617a62f5e2fe52aa68941c64b0fde3 (patch)
tree6ded245dad2dc2457968ea173b88ad3a13bcbc4e /synapse
parentAdd device management to admin API (#7481) (diff)
downloadsynapse-908f9e2d24617a62f5e2fe52aa68941c64b0fde3.tar.xz
Allow new users to be registered via the admin API even if the monthly active user limit has been reached (#7263)
Diffstat (limited to 'synapse')
-rw-r--r--synapse/handlers/register.py7
-rw-r--r--synapse/rest/admin/users.py2
2 files changed, 8 insertions, 1 deletions
diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py
index cd746be7c8..ffda09226c 100644
--- a/synapse/handlers/register.py
+++ b/synapse/handlers/register.py
@@ -150,6 +150,7 @@ class RegistrationHandler(BaseHandler):
         default_display_name=None,
         address=None,
         bind_emails=[],
+        by_admin=False,
     ):
         """Registers a new client on the server.
 
@@ -165,6 +166,8 @@ class RegistrationHandler(BaseHandler):
               will be set to this. Defaults to 'localpart'.
             address (str|None): the IP address used to perform the registration.
             bind_emails (List[str]): list of emails to bind to this account.
+            by_admin (bool): True if this registration is being made via the
+              admin api, otherwise False.
         Returns:
             Deferred[str]: user_id
         Raises:
@@ -172,7 +175,9 @@ class RegistrationHandler(BaseHandler):
         """
         yield self.check_registration_ratelimit(address)
 
-        yield self.auth.check_auth_blocking(threepid=threepid)
+        # do not check_auth_blocking if the call is coming through the Admin API
+        if not by_admin:
+            yield self.auth.check_auth_blocking(threepid=threepid)
 
         if localpart is not None:
             yield self.check_username(localpart, guest_access_token=guest_access_token)
diff --git a/synapse/rest/admin/users.py b/synapse/rest/admin/users.py
index 82251dbe5f..fefc8f71fa 100644
--- a/synapse/rest/admin/users.py
+++ b/synapse/rest/admin/users.py
@@ -270,6 +270,7 @@ class UserRestServletV2(RestServlet):
                 admin=bool(admin),
                 default_display_name=displayname,
                 user_type=user_type,
+                by_admin=True,
             )
 
             if "threepids" in body:
@@ -432,6 +433,7 @@ class UserRegisterServlet(RestServlet):
             password_hash=password_hash,
             admin=bool(admin),
             user_type=user_type,
+            by_admin=True,
         )
 
         result = await register._create_registration_details(user_id, body)