summary refs log tree commit diff
path: root/synapse/config/saml2_config.py
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2019-09-19 23:09:50 +0100
committerRichard van der Hoff <richard@matrix.org>2019-09-19 23:12:21 +0100
commita0b8bf023f52bbfc4d4f2abe7a029c37ec14c644 (patch)
tree64d0c3f6fbb9075e335a09ba4e83ad5afefe7e71 /synapse/config/saml2_config.py
parentbetter logging (diff)
downloadsynapse-a0b8bf023f52bbfc4d4f2abe7a029c37ec14c644.tar.xz
Add 'dotreplace_email_localpart' saml attr mapping
Diffstat (limited to '')
-rw-r--r--synapse/config/saml2_config.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/synapse/config/saml2_config.py b/synapse/config/saml2_config.py
index a022470702..d69ffea38f 100644
--- a/synapse/config/saml2_config.py
+++ b/synapse/config/saml2_config.py
@@ -184,6 +184,8 @@ class SAML2Config(Config):
           # Options include:
           #  * 'hexencode' (which maps unpermitted characters to '=xx')
           #  * 'dotreplace' (which replaces unpermitted characters with '.').
+          #  * 'dotreplace_email_localpart' (truncates at the first '@' and replaces
+          #         unpermitted characters with '.')
           # The default is 'hexencode'.
           #
           #mxid_mapping: dotreplace
@@ -210,7 +212,7 @@ DOT_REPLACE_PATTERN = re.compile(
 )
 
 
-def dot_replace_for_mxid(username: str) -> str:
+def dotreplace_for_mxid(username: str) -> str:
     username = username.lower()
     username = DOT_REPLACE_PATTERN.sub(".", username)
 
@@ -219,7 +221,15 @@ def dot_replace_for_mxid(username: str) -> str:
     return username
 
 
+def dotreplace_email_localpart_for_mxid(username: str) -> str:
+    pos = username.find("@")
+    if pos >= 0:
+        username = username[:pos]
+    return dotreplace_for_mxid(username)
+
+
 MXID_MAPPER_MAP = {
     "hexencode": map_username_to_mxid_localpart,
-    "dotreplace": dot_replace_for_mxid,
+    "dotreplace": dotreplace_for_mxid,
+    "dotreplace_email_localpart": dotreplace_email_localpart_for_mxid,
 }