diff options
author | Richard van der Hoff <richard@matrix.org> | 2019-09-19 23:09:50 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2019-09-19 23:12:21 +0100 |
commit | a0b8bf023f52bbfc4d4f2abe7a029c37ec14c644 (patch) | |
tree | 64d0c3f6fbb9075e335a09ba4e83ad5afefe7e71 /synapse/config/saml2_config.py | |
parent | better logging (diff) | |
download | synapse-a0b8bf023f52bbfc4d4f2abe7a029c37ec14c644.tar.xz |
Add 'dotreplace_email_localpart' saml attr mapping
Diffstat (limited to '')
-rw-r--r-- | synapse/config/saml2_config.py | 14 |
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, } |