fix: google sign in issue

This commit is contained in:
swve 2025-07-03 19:59:36 +02:00
parent 082f661ccb
commit 71cc8ef105

View file

@ -35,23 +35,52 @@ async def signWithGoogle(
# Google
google_user = await get_google_user_info(access_token)
# Use Google email with fallback to parameter email
user_email = google_user.get("email", email)
# Validate we have a valid email
if not user_email:
raise HTTPException(
status_code=400,
detail="No email address available from Google or request"
)
user = db_session.exec(
select(User).where(User.email == google_user["email"])
select(User).where(User.email == user_email)
).first()
if not user:
username = (
google_user["given_name"]
+ google_user["family_name"]
+ str(random.randint(10, 99))
)
# Extract user data with safe defaults
given_name = google_user.get("given_name", "")
family_name = google_user.get("family_name", "")
picture = google_user.get("picture", "")
# Generate username more robustly
username_parts = []
if given_name:
username_parts.append(given_name)
if family_name:
username_parts.append(family_name)
# If no name parts available, use part of email
if not username_parts and user_email and "@" in user_email:
email_prefix = user_email.split("@")[0]
if email_prefix: # Make sure it's not empty
username_parts.append(email_prefix)
# If still no parts, use a default
if not username_parts:
username_parts.append("user")
username = "".join(username_parts) + str(random.randint(10, 99))
user_object = UserCreate(
email=google_user["email"],
email=user_email,
username=username,
password="",
first_name=google_user["given_name"],
last_name=google_user["family_name"],
avatar_image=google_user["picture"],
first_name=given_name,
last_name=family_name,
avatar_image=picture,
)
if org_id is not None: