summary refs log tree commit diff
path: root/synapse/handlers/register.py
diff options
context:
space:
mode:
authorDavid Baker <dbkr@users.noreply.github.com>2016-03-17 14:34:08 +0000
committerDavid Baker <dbkr@users.noreply.github.com>2016-03-17 14:34:08 +0000
commit384ee6eafba3f6b76652e2ffb336c66a16aa849d (patch)
tree48b2efc3a703a21e66f449c37e4aaef36567b9f6 /synapse/handlers/register.py
parentMerge pull request #651 from matrix-org/markjh/unused_II (diff)
parentremove debug logging (diff)
downloadsynapse-384ee6eafba3f6b76652e2ffb336c66a16aa849d.tar.xz
Merge pull request #650 from matrix-org/dbkr/register_idempotent_with_username
Make registration idempotent, part 2
Diffstat (limited to '')
-rw-r--r--synapse/handlers/register.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py

index 6ffb8c0da6..f287ee247b 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py
@@ -47,7 +47,8 @@ class RegistrationHandler(BaseHandler): self._next_generated_user_id = None @defer.inlineCallbacks - def check_username(self, localpart, guest_access_token=None): + def check_username(self, localpart, guest_access_token=None, + assigned_user_id=None): yield run_on_reactor() if urllib.quote(localpart.encode('utf-8')) != localpart: @@ -60,6 +61,15 @@ class RegistrationHandler(BaseHandler): user = UserID(localpart, self.hs.hostname) user_id = user.to_string() + if assigned_user_id: + if user_id == assigned_user_id: + return + else: + raise SynapseError( + 400, + "A different user ID has already been registered for this session", + ) + yield self.check_user_id_not_appservice_exclusive(user_id) users = yield self.store.get_users_by_id_case_insensitive(user_id)