diff options
author | Dirk Klimpel <5740567+dklimpel@users.noreply.github.com> | 2020-07-03 15:03:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-03 14:03:13 +0100 |
commit | 21a212f8e50343e9b55944fa75ece7911fd2cb70 (patch) | |
tree | 01fa808e274bea9593cff5784a577f8e0f313430 /synapse/rest/client/v1/login.py | |
parent | Allow YAML config file to contain None (#7779) (diff) | |
download | synapse-21a212f8e50343e9b55944fa75ece7911fd2cb70.tar.xz |
Fix inconsistent handling of upper and lower cases of email addresses. (#7021)
fixes #7016
Diffstat (limited to 'synapse/rest/client/v1/login.py')
-rw-r--r-- | synapse/rest/client/v1/login.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/synapse/rest/client/v1/login.py b/synapse/rest/client/v1/login.py index bf0f9bd077..f6eef7afee 100644 --- a/synapse/rest/client/v1/login.py +++ b/synapse/rest/client/v1/login.py @@ -28,6 +28,7 @@ from synapse.rest.client.v2_alpha._base import client_patterns from synapse.rest.well_known import WellKnownBuilder from synapse.types import UserID from synapse.util.msisdn import phone_number_to_msisdn +from synapse.util.threepids import canonicalise_email logger = logging.getLogger(__name__) @@ -206,11 +207,14 @@ class LoginRestServlet(RestServlet): if medium is None or address is None: raise SynapseError(400, "Invalid thirdparty identifier") + # For emails, canonicalise the address. + # We store all email addresses canonicalised in the DB. + # (See add_threepid in synapse/handlers/auth.py) if medium == "email": - # For emails, transform the address to lowercase. - # We store all email addreses as lowercase in the DB. - # (See add_threepid in synapse/handlers/auth.py) - address = address.lower() + try: + address = canonicalise_email(address) + except ValueError as e: + raise SynapseError(400, str(e)) # We also apply account rate limiting using the 3PID as a key, as # otherwise using 3PID bypasses the ratelimiting based on user ID. |