feat(auth): 调整登录接口入参、手机号接口的响应格式

This commit is contained in:
xingc
2025-04-21 20:52:18 +08:00
parent 9fff9cdf39
commit f4c2412932
2 changed files with 9 additions and 17 deletions

View File

@@ -43,7 +43,7 @@ async def get_wechat_phone(
result = await wechat_api.get_phone_number(code)
except WechatApiError:
raise HTTPException(status.HTTP_401_UNAUTHORIZED, detail='Invalid code')
return {'data': {'phone': jsonpath(result, '$.phone_info.phoneNumber')}}
return {'data': {'phone': jsonpath(result, '$.phone_info.phoneNumber', first=True)}}
@auth_router.post(
@@ -81,30 +81,22 @@ async def wechat_login(
return {'status': 4001, 'message': '首次登录需要用户授权信息'}
if all([
# payload.phone,
payload.encrypted_data,
payload.iv,
payload.phone,
payload.nickname,
payload.avatar_url,
]) is False:
raise HTTPException(status.HTTP_400_BAD_REQUEST, detail='请重试登录操作')
# 注册用户
session_key = wechat_session.get('session_key')
union_id = wechat_session.get('union_id')
try:
profile = decrypt_sensitive_data(session_key, payload.encrypted_data, payload.iv)
except (ValueError, TypeError) as e:
logger.exception(f"[wechat_login] Exception, User information decryption failed, detail: {e}")
raise HTTPException(status.HTTP_400_BAD_REQUEST, detail='请重试登录操作')
logger.info(f"decrypt plaintext: {wechat_session}")
user: User | bool = await db_crud.create(
data={
'nickname': profile.get('nickName'),
'gender': profile.get('gender'),
'nickname': payload.nickname,
'gender': None,
'wechat_openid': openid,
'wechat_union_id': union_id,
'phone': payload.phone,
'avatar_url': profile.get('avatarUrl')
'avatar_url': payload.avatar_url
},
filters={'wechat_openid': openid}
)

View File

@@ -12,8 +12,8 @@ from pydantic import BaseModel, constr
class WechatLoginIn(BaseModel):
code: str
phone: Optional[constr(pattern='^1[0-9]{10}$')] = None
encrypted_data: Optional[str] = None
iv: Optional[str] = None
nickname: Optional[constr(max_length=20)] = None
avatar_url: Optional[constr(pattern='^http[a-zA-Z0-9:/\.]+')] = None
class Token(BaseModel):