fix: 邀请校验管事无ClubID时以当前小程序为准,注册失败打日志
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
"""邀请码 / 邀请链俱乐部隔离。"""
|
"""邀请码 / 邀请链俱乐部隔离。"""
|
||||||
from jituan.constants import CLUB_ID_DEFAULT
|
import logging
|
||||||
|
|
||||||
from jituan.services.club_resolver import resolve_club_id_for_wechat_request
|
from jituan.services.club_resolver import resolve_club_id_for_wechat_request
|
||||||
from jituan.services.club_user import resolve_invite_party_club
|
from jituan.services.club_user import resolve_invite_party_club
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def assert_invite_same_club(request, inviter_user, invitee_user=None):
|
def assert_invite_same_club(request, inviter_user, invitee_user=None):
|
||||||
"""
|
"""
|
||||||
@@ -12,14 +15,23 @@ def assert_invite_same_club(request, inviter_user, invitee_user=None):
|
|||||||
"""
|
"""
|
||||||
club_id = resolve_club_id_for_wechat_request(request)
|
club_id = resolve_club_id_for_wechat_request(request)
|
||||||
inviter_club = resolve_invite_party_club(inviter_user, club_id)
|
inviter_club = resolve_invite_party_club(inviter_user, club_id)
|
||||||
if inviter_club is None and club_id == CLUB_ID_DEFAULT:
|
if inviter_club is None:
|
||||||
inviter_club = CLUB_ID_DEFAULT
|
# 管事未落库 ClubID/绑定时,以当前小程序为准(星之界扫码邀请常见)
|
||||||
|
inviter_club = club_id
|
||||||
if inviter_club != club_id:
|
if inviter_club != club_id:
|
||||||
|
logger.warning(
|
||||||
|
'invite_guard 管事俱乐部不符 inviter=%s inviter_club=%s req_club=%s',
|
||||||
|
getattr(inviter_user, 'UserUID', '?'), inviter_club, club_id,
|
||||||
|
)
|
||||||
return False, '邀请码不属于当前小程序俱乐部'
|
return False, '邀请码不属于当前小程序俱乐部'
|
||||||
|
|
||||||
if invitee_user is not None:
|
if invitee_user is not None:
|
||||||
invitee_club = resolve_invite_party_club(invitee_user, club_id)
|
invitee_club = resolve_invite_party_club(invitee_user, club_id)
|
||||||
if invitee_club is not None and invitee_club != club_id:
|
if invitee_club is not None and invitee_club != club_id:
|
||||||
|
logger.warning(
|
||||||
|
'invite_guard 被邀请人俱乐部不符 invitee=%s invitee_club=%s req_club=%s',
|
||||||
|
getattr(invitee_user, 'UserUID', '?'), invitee_club, club_id,
|
||||||
|
)
|
||||||
return False, '您的账号归属与当前小程序不一致,请使用对应俱乐部小程序'
|
return False, '您的账号归属与当前小程序不一致,请使用对应俱乐部小程序'
|
||||||
if invitee_club is not None and invitee_club != inviter_club:
|
if invitee_club is not None and invitee_club != inviter_club:
|
||||||
return False, '邀请码与您的俱乐部不匹配'
|
return False, '邀请码与您的俱乐部不匹配'
|
||||||
|
|||||||
@@ -555,9 +555,14 @@ class DashouZhuceView(APIView):
|
|||||||
|
|
||||||
ok, msg = assert_invite_same_club(request, guanshi_profile.user, current_user)
|
ok, msg = assert_invite_same_club(request, guanshi_profile.user, current_user)
|
||||||
if not ok:
|
if not ok:
|
||||||
|
logger.warning(
|
||||||
|
'dashouzhuce 俱乐部校验失败 uid=%s club=%s msg=%s',
|
||||||
|
current_user.UserUID, resolve_club_id_for_wechat_request(request), msg,
|
||||||
|
)
|
||||||
return Response({
|
return Response({
|
||||||
'code': 403,
|
'code': 403,
|
||||||
'message': msg,
|
'message': msg,
|
||||||
|
'msg': msg,
|
||||||
'data': None
|
'data': None
|
||||||
}, status=status.HTTP_403_FORBIDDEN)
|
}, status=status.HTTP_403_FORBIDDEN)
|
||||||
|
|
||||||
@@ -919,9 +924,14 @@ class WechatLoginAndDashouRegisterView(APIView):
|
|||||||
request, guanshi_profile.user, user_main,
|
request, guanshi_profile.user, user_main,
|
||||||
)
|
)
|
||||||
if not ok:
|
if not ok:
|
||||||
|
logger.warning(
|
||||||
|
'wdlyhdl 俱乐部校验失败 uid=%s club=%s msg=%s invite=%s',
|
||||||
|
user_main.UserUID, club_id, invite_msg, yaoqingma[:8],
|
||||||
|
)
|
||||||
return Response({
|
return Response({
|
||||||
'code': 403,
|
'code': 403,
|
||||||
'msg': invite_msg,
|
'msg': invite_msg,
|
||||||
|
'message': invite_msg,
|
||||||
'data': None
|
'data': None
|
||||||
}, status=status.HTTP_403_FORBIDDEN)
|
}, status=status.HTTP_403_FORBIDDEN)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user