@@ -57,35 +57,36 @@ async def create_with_login(
5757 sid = user .get ('id' )
5858 nickname = user .get ('name' )
5959
60- sys_user = None
6160 user_social = await user_social_dao .get_by_sid (db , str (sid ), str (social .value ))
62- if not user_social :
61+ if user_social :
62+ sys_user = await user_dao .get (db , user_social .user_id )
63+ # 更新用户头像
64+ if not sys_user .avatar and avatar is not None :
65+ await user_dao .update_avatar (db , sys_user .id , avatar )
66+ else :
67+ sys_user = None
68+ # 检测系统用户是否已存在
6369 if email :
64- sys_user = await user_dao .check_email (db , email )
65-
66- # 创建系统用户
67- if not sys_user :
68- while await user_dao .get_by_username (db , username ):
69- username = f'{ username } _{ text_captcha (5 )} '
70- new_sys_user = AddOAuth2UserParam (
71- username = username ,
72- password = '123456' , # 默认密码,可修改系统用户表进行默认密码检测并配合前端进行修改密码提示
73- nickname = nickname ,
74- email = email ,
75- avatar = avatar ,
76- )
77- await user_dao .add_by_oauth2 (db , new_sys_user )
78- await db .flush ()
79- sys_user = await user_dao .get_by_username (db , username )
70+ sys_user = await user_dao .check_email (db , email ) # 通过邮箱验证绑定保证邮箱真实性
8071
81- # 绑定社交用户
82- new_user_social = CreateUserSocialParam (sid = str (sid ), source = social .value , user_id = sys_user .id )
83- await user_social_dao .create (db , new_user_social )
72+ # 创建系统用户
73+ if not sys_user :
74+ while await user_dao .get_by_username (db , username ):
75+ username = f'{ username } _{ text_captcha (5 )} '
76+ new_sys_user = AddOAuth2UserParam (
77+ username = username ,
78+ password = None ,
79+ nickname = nickname ,
80+ email = email ,
81+ avatar = avatar ,
82+ )
83+ await user_dao .add_by_oauth2 (db , new_sys_user )
84+ await db .flush ()
85+ sys_user = await user_dao .get_by_username (db , username )
8486
85- if not sys_user :
86- sys_user = await user_dao .get (db , user_social .user_id )
87- if avatar :
88- await user_dao .update_avatar (db , sys_user .id , avatar )
87+ # 绑定社交账号
88+ new_user_social = CreateUserSocialParam (sid = str (sid ), source = social .value , user_id = sys_user .id )
89+ await user_social_dao .create (db , new_user_social )
8990
9091 # 创建 token
9192 access_token = await jwt .create_access_token (
0 commit comments