From a0b8bf023f52bbfc4d4f2abe7a029c37ec14c644 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 19 Sep 2019 23:09:50 +0100 Subject: Add 'dotreplace_email_localpart' saml attr mapping --- synapse/config/saml2_config.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'synapse/config/saml2_config.py') 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, } -- cgit 1.5.1