fix: detect ghost LoginProfile from Volcengine (CreateDate=1970)

Users created without console password have a phantom LoginProfile
that GetLoginProfile returns but UpdateLoginProfile/DeleteLoginProfile
reject. Now checking CreateDate to detect this.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
seaislee1209 2026-03-28 21:40:06 +08:00
parent 92172c6ec8
commit 40655d63e0

View File

@ -198,9 +198,14 @@ class IAMService:
pass
def _has_login_profile(self, username: str) -> bool:
"""检查用户是否有 LoginProfile"""
"""检查用户是否有真实的 LoginProfile(火山可能返回空壳)"""
try:
self.get_login_profile(username)
resp = self.get_login_profile(username)
profile = resp.get("Result", {}).get("LoginProfile", {})
# Empty shell has CreateDate=19700101 and Password=""
create_date = profile.get("CreateDate", "")
if create_date.startswith("1970") or create_date.startswith("0001"):
return False
return True
except VolcengineAPIError as e:
if "LoginProfileNotExist" in str(e) or "RecordNotFound" in str(e):