From 7319977527045aaea5d7a57ceda9345988f6f2a0 Mon Sep 17 00:00:00 2001 From: missytake Date: Fri, 12 Sep 2025 01:27:28 +0200 Subject: [PATCH] doveauth: allow more than one invite token --- chatmaild/src/chatmaild/doveauth.py | 18 +++++++++++------- chatmaild/src/chatmaild/tests/test_doveauth.py | 3 +++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/chatmaild/src/chatmaild/doveauth.py b/chatmaild/src/chatmaild/doveauth.py index b6217e87..4d143aad 100644 --- a/chatmaild/src/chatmaild/doveauth.py +++ b/chatmaild/src/chatmaild/doveauth.py @@ -28,13 +28,17 @@ def is_allowed_to_create(config: Config, user, cleartext_password) -> bool: f"blocked account creation because {NOCREATE_FILE!r} exists." ) return False - if cleartext_password.startswith(config.invite_token): - password_length = len(cleartext_password) - len(config.invite_token) - else: - logging.warning( - f"blocked account creation because password didn't contain invite token(s)." - ) - return False + password_length = len(cleartext_password) + if config.invite_token: + for inv_token in config.invite_token.split(): + if cleartext_password.startswith(inv_token): + password_length = len(cleartext_password) - len(inv_token) + break + else: + logging.warning( + f"blocked account creation because password didn't contain invite token(s)." + ) + return False if password_length < config.password_min_length: logging.warning( diff --git a/chatmaild/src/chatmaild/tests/test_doveauth.py b/chatmaild/src/chatmaild/tests/test_doveauth.py index 6d8052ec..3f689e5d 100644 --- a/chatmaild/src/chatmaild/tests/test_doveauth.py +++ b/chatmaild/src/chatmaild/tests/test_doveauth.py @@ -71,6 +71,9 @@ def test_dont_overwrite_password_on_wrong_login(dictproxy): (False, False, "asdf", "z9873240187420913798"), (False, True, "", "dsaiujfw9fjiwf9w"), (False, False, "asdf", "z987324018742asdf0913798"), + (False, True, "as df", "asj0wiefkj0ofkeefok"), + (False, True, "as df", "dfj0wiefkj0ofkeefok"), + (False, False, "as df", "j0wiefkj0ofas dfkeefok"), (True, False, "asdf", "asdfmosadkdkfwdofkw"), (True, False, "asdf", "z9873240187420913798"), (True, False, "", "dsaiujfw9fjiwf9w"),