diff --git a/changelog.d/7625.misc b/changelog.d/7625.misc new file mode 100644 index 000000000000..4c61d8d99f15 --- /dev/null +++ b/changelog.d/7625.misc @@ -0,0 +1 @@ +Check if the localpart of a Matrix ID is reserved for guest users earlier in the registration flow, as well as when responding to requests to `/register/available`. diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index a6178e74a19b..55a03e53ead4 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -128,6 +128,15 @@ def check_username(self, localpart, guest_access_token=None, assigned_user_id=No errcode=Codes.FORBIDDEN, ) + if guest_access_token is None: + try: + int(localpart) + raise SynapseError( + 400, "Numeric user IDs are reserved for guest users." + ) + except ValueError: + pass + @defer.inlineCallbacks def register_user( self, @@ -170,15 +179,6 @@ def register_user( was_guest = guest_access_token is not None - if not was_guest: - try: - int(localpart) - raise SynapseError( - 400, "Numeric user IDs are reserved for guest users." - ) - except ValueError: - pass - user = UserID(localpart, self.hs.hostname) user_id = user.to_string()