fix: 统一 OAuth 重复账号检查逻辑,活跃账号一律拒绝覆盖

移除 Kiro 活跃重复账号的特殊放行,所有 Provider 类型行为一致:
失效账号允许覆盖,活跃重复账号拒绝并提示已存在。
This commit is contained in:
fawney19
2026-02-21 03:58:26 +08:00
parent a1d972419d
commit 54988916e3

View File

@@ -431,7 +431,7 @@ def _check_duplicate_oauth_account(
is_duplicate = True is_duplicate = True
if is_duplicate: if is_duplicate:
# 如果已有账号已失效is_active=False允许覆盖 # 失效账号允许覆盖
if not existing_key.is_active: if not existing_key.is_active:
logger.info( logger.info(
"重复 OAuth 账号已失效将覆盖更新key_id={}, name={}", "重复 OAuth 账号已失效将覆盖更新key_id={}, name={}",
@@ -440,26 +440,12 @@ def _check_duplicate_oauth_account(
) )
return existing_key return existing_key
# Kiro 类型:活跃的重复账号也允许覆盖(用户可能重新导入同一账号) # 活跃的重复账号,拒绝添加
is_kiro = new_provider_type == "kiro" or existing_provider_type == "kiro" identifier = new_email or new_user_id or ""
if is_kiro: raise InvalidRequestException(
logger.info( f"该 OAuth 账号 ({identifier}) 已存在于当前 Provider 中"
"Kiro 重复账号将覆盖更新key_id={}, name={}", f"(名称: {existing_key.name}"
existing_key.id, )
existing_key.name,
)
return existing_key
# 非 Kiro 的活跃重复账号,拒绝添加
if new_email:
raise InvalidRequestException(
f"该 OAuth 账号 ({new_email}) 已存在于当前 Provider 中"
f"(名称: {existing_key.name}"
)
else:
raise InvalidRequestException(
f"该 OAuth 账号已存在于当前 Provider 中(名称: {existing_key.name}"
)
except InvalidRequestException: except InvalidRequestException:
raise raise
except Exception: except Exception: