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)