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
google_user = await get_google_user_info(access_token) 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( user = db_session.exec(
select(User).where(User.email == google_user["email"]) select(User).where(User.email == user_email)
).first() ).first()
if not user: if not user:
username = ( # Extract user data with safe defaults
google_user["given_name"] given_name = google_user.get("given_name", "")
+ google_user["family_name"] family_name = google_user.get("family_name", "")
+ str(random.randint(10, 99)) 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( user_object = UserCreate(
email=google_user["email"], email=user_email,
username=username, username=username,
password="", password="",
first_name=google_user["given_name"], first_name=given_name,
last_name=google_user["family_name"], last_name=family_name,
avatar_image=google_user["picture"], avatar_image=picture,
) )
if org_id is not None: if org_id is not None: