Commit c0fa6788 authored by Your Name's avatar Your Name

feat: update GitHub OAuth to use display_name for username generation

parent 6cf44e43
...@@ -3096,8 +3096,8 @@ async def oauth2_github_callback(request: Request, code: str = Query(...), state ...@@ -3096,8 +3096,8 @@ async def oauth2_github_callback(request: Request, code: str = Query(...), state
) )
email = user_info.get('email') email = user_info.get('email')
# Use GitHub username or name for the username field # Get display name from GitHub (name or login)
github_username = user_info.get('login') or user_info.get('name') or email.split('@')[0] display_name = user_info.get('name', '') or user_info.get('login', '')
db = DatabaseRegistry.get_config_database() db = DatabaseRegistry.get_config_database()
...@@ -3119,15 +3119,12 @@ async def oauth2_github_callback(request: Request, code: str = Query(...), state ...@@ -3119,15 +3119,12 @@ async def oauth2_github_callback(request: Request, code: str = Query(...), state
random_password = secrets.token_urlsafe(32) random_password = secrets.token_urlsafe(32)
password_hash = hashlib.sha256(random_password.encode()).hexdigest() password_hash = hashlib.sha256(random_password.encode()).hexdigest()
# Handle duplicate username by appending a number # Generate clean username from display_name with email fallback
final_username = github_username github_username = db.generate_username_from_display_name(display_name, email)
counter = 1 final_username = db.find_unique_username(github_username)
while db.get_user_by_username(final_username):
final_username = f"{github_username}{counter}"
counter += 1
# Create user with verified email (no verification required) # Create user with verified email (no verification required)
user_id = db.create_user(final_username, password_hash, 'user', None, email, True) user_id = db.create_user(final_username, password_hash, 'user', None, email, True, display_name)
# Login the new user # Login the new user
request.session['logged_in'] = True request.session['logged_in'] = True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment