mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-18 20:09:25 +00:00
fix: google sign in issue
This commit is contained in:
parent
082f661ccb
commit
71cc8ef105
1 changed files with 39 additions and 10 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue