diff options
author | Brendan Abolivier <contact@brendanabolivier.com> | 2019-04-17 14:37:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-17 14:37:42 +0100 |
commit | 49ff74da9b8c3a3591662c72626a3f58ee2c260a (patch) | |
tree | 216f7e4575aa13582c26722889212d0f845afcc7 /synapse/rest/client/v2_alpha | |
parent | Merge pull request #5070 from matrix-org/erikj/postpath (diff) | |
parent | Make sure we're not registering the same 3pid twice (diff) | |
download | synapse-49ff74da9b8c3a3591662c72626a3f58ee2c260a.tar.xz |
Merge pull request #5071 from matrix-org/babolivier/3pid-check
Make sure we're not registering the same 3pid twice
Diffstat (limited to 'synapse/rest/client/v2_alpha')
-rw-r--r-- | synapse/rest/client/v2_alpha/register.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/synapse/rest/client/v2_alpha/register.py b/synapse/rest/client/v2_alpha/register.py index 6d235262c8..dc3e265bcd 100644 --- a/synapse/rest/client/v2_alpha/register.py +++ b/synapse/rest/client/v2_alpha/register.py @@ -391,6 +391,13 @@ class RegisterRestServlet(RestServlet): # the user-facing checks will probably already have happened in # /register/email/requestToken when we requested a 3pid, but that's not # guaranteed. + # + # Also check that we're not trying to register a 3pid that's already + # been registered. + # + # This has probably happened in /register/email/requestToken as well, + # but if a user hits this endpoint twice then clicks on each link from + # the two activation emails, they would register the same 3pid twice. if auth_result: for login_type in [LoginType.EMAIL_IDENTITY, LoginType.MSISDN]: @@ -406,6 +413,17 @@ class RegisterRestServlet(RestServlet): Codes.THREEPID_DENIED, ) + existingUid = yield self.store.get_user_id_by_threepid( + medium, address, + ) + + if existingUid is not None: + raise SynapseError( + 400, + "%s is already in use" % medium, + Codes.THREEPID_IN_USE, + ) + if registered_user_id is not None: logger.info( "Already registered user ID %r for this session", |