import logging from typing import Optional from fastapi import Header from dbgpt._private.pydantic import BaseModel, ConfigDict logger = logging.getLogger(__name__) class UserRequest(BaseModel): user_id: Optional[str] = None user_no: Optional[str] = None real_name: Optional[str] = None # same with user_id user_name: Optional[str] = None user_channel: Optional[str] = None role: Optional[str] = "normal" nick_name: Optional[str] = None email: Optional[str] = None avatar_url: Optional[str] = None nick_name_like: Optional[str] = None def get_user_from_headers(user_id: Optional[str] = Header(None)): try: # Mock User Info if user_id: return UserRequest( user_id=user_id, role="admin", nick_name=user_id, real_name=user_id ) else: return UserRequest( user_id="001", role="admin", nick_name="dbgpt", real_name="dbgpt" ) except Exception as e: logging.exception("Authentication failed!") raise Exception(f"Authentication failed. {str(e)}")