diff --git a/server/mergin/auth/models.py b/server/mergin/auth/models.py index e9cfb61b..85741470 100644 --- a/server/mergin/auth/models.py +++ b/server/mergin/auth/models.py @@ -203,6 +203,8 @@ def generate_username(cls, email: str) -> Optional[str]: ).ljust(4, "0") # additional check for reserved words username = f"{username}0" if is_reserved_word(username) else username + # some value until 25 + space for suffix + username = username[:22] # check if we already do not have existing usernames query = db.session.execute( text( diff --git a/server/mergin/tests/test_auth.py b/server/mergin/tests/test_auth.py index 167fe5f3..f70dbd53 100644 --- a/server/mergin/tests/test_auth.py +++ b/server/mergin/tests/test_auth.py @@ -117,6 +117,7 @@ def test_logout(client): 400, ), # tests with upper case, but email already exists (" mergin@mergin.com ", "#pwd123", 400), # invalid password + ("verylonglonglonglonglonglonglongemail@example.com", "#pwd1234", 201), ] @@ -851,6 +852,10 @@ def test_username_generation(client): user = add_user("support1", "user") assert User.generate_username("support@example.com") == "support0" + assert ( + User.generate_username("verylonglonglonglonglong@example.com") + == "verylonglonglonglonglo" + ) def test_server_usage(client):