From 96210c7ad4c8fac9fe2acf5f8c7442a1613056a7 Mon Sep 17 00:00:00 2001 From: beabigegg Date: Sat, 10 Jan 2026 10:12:35 +0800 Subject: [PATCH] fix: sync user name from external auth API and fix audit log schema - Auth router: Extract user name from nested data.userInfo.name structure - Auth router: Sync user name on every login (not just on user creation) - Audit schema: Change changes field type to Optional[Any] to support both list and dict formats (fixes 500 error on audit page) Co-Authored-By: Claude Opus 4.5 --- backend/app/api/auth/router.py | 12 +++++++++++- backend/app/schemas/audit.py | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/app/api/auth/router.py b/backend/app/api/auth/router.py index 1306e24..f3fdb37 100644 --- a/backend/app/api/auth/router.py +++ b/backend/app/api/auth/router.py @@ -76,16 +76,26 @@ async def login( # Find or create user in local database user = db.query(User).filter(User.email == login_request.email).first() + # Get name from auth API response (nested in data.userInfo.name) + user_info = auth_result.get("data", {}).get("userInfo", {}) + auth_name = user_info.get("name", login_request.email.split("@")[0]) + if not user: # Create new user based on auth API response user = User( email=login_request.email, - name=auth_result.get("name", login_request.email.split("@")[0]), + name=auth_name, is_active=True, ) db.add(user) db.commit() db.refresh(user) + else: + # Sync user name from external auth system on each login + if user.name != auth_name: + user.name = auth_name + db.commit() + db.refresh(user) if not user.is_active: raise HTTPException( diff --git a/backend/app/schemas/audit.py b/backend/app/schemas/audit.py index 3cd4f16..02fbdcf 100644 --- a/backend/app/schemas/audit.py +++ b/backend/app/schemas/audit.py @@ -10,7 +10,7 @@ class AuditLogResponse(BaseModel): resource_id: Optional[str] user_id: Optional[str] action: str - changes: Optional[List[dict]] + changes: Optional[Any] # Can be List[dict] or dict depending on event type request_metadata: Optional[dict] sensitivity_level: str checksum: str