From 0c3157ea3a81a5f0a8420c604cf3c3e3055a8c18 Mon Sep 17 00:00:00 2001 From: Johan Lundberg Date: Wed, 18 Feb 2026 10:29:44 +0100 Subject: [PATCH] feat: handle pre-existing users in register_magic_link route --- src/porchlight/authn/routes.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/porchlight/authn/routes.py b/src/porchlight/authn/routes.py index 1ded1d2..08233d8 100644 --- a/src/porchlight/authn/routes.py +++ b/src/porchlight/authn/routes.py @@ -78,9 +78,13 @@ async def register_magic_link(request: Request, token: str) -> Response: if link is None: return HTMLResponse("

Invalid or expired registration link.

", status_code=400) - userid = await generate_unique_userid(user_repo) - user = User(userid=userid, username=link.username, groups=["users"]) - await user_repo.create(user) + existing_user = await user_repo.get_by_username(link.username) + if existing_user is not None: + user = existing_user + else: + userid = await generate_unique_userid(user_repo) + user = User(userid=userid, username=link.username, groups=["users"]) + await user_repo.create(user) await magic_link_service.mark_used(token)