fix: 邀请校验管事无ClubID时以当前小程序为准,注册失败打日志

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-08 18:06:22 +08:00
parent aeaa54583a
commit 2225722ab5
2 changed files with 25 additions and 3 deletions

View File

@@ -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_user import resolve_invite_party_club
logger = logging.getLogger(__name__)
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)
inviter_club = resolve_invite_party_club(inviter_user, club_id)
if inviter_club is None and club_id == CLUB_ID_DEFAULT:
inviter_club = CLUB_ID_DEFAULT
if inviter_club is None:
# 管事未落库 ClubID/绑定时,以当前小程序为准(星之界扫码邀请常见)
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, '邀请码不属于当前小程序俱乐部'
if invitee_user is not None:
invitee_club = resolve_invite_party_club(invitee_user, 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, '您的账号归属与当前小程序不一致,请使用对应俱乐部小程序'
if invitee_club is not None and invitee_club != inviter_club:
return False, '邀请码与您的俱乐部不匹配'

View File

@@ -555,9 +555,14 @@ class DashouZhuceView(APIView):
ok, msg = assert_invite_same_club(request, guanshi_profile.user, current_user)
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({
'code': 403,
'message': msg,
'msg': msg,
'data': None
}, status=status.HTTP_403_FORBIDDEN)
@@ -919,9 +924,14 @@ class WechatLoginAndDashouRegisterView(APIView):
request, guanshi_profile.user, user_main,
)
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({
'code': 403,
'msg': invite_msg,
'message': invite_msg,
'data': None
}, status=status.HTTP_403_FORBIDDEN)