deepdata: core product code (backend, frontend, runtime, deepflow module)

This commit is contained in:
figmar
2026-08-30 19:23:38 +08:00
commit bd3db30be9
1405 changed files with 271727 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
"""
Application middleware.
Note: Exception handling has been moved to app.core.exception.ExceptionHandlingMiddleware
This file now only contains the UserContextMiddleware.
"""
import json
from typing import Optional
from fastapi import Request, Response
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.status import HTTP_401_UNAUTHORIZED
from app.core.config import settings
from app.core.logging import get_logger
from app.db.datascope import DataScopeHandle
logger = get_logger(__name__)
class UserContextMiddleware(BaseHTTPMiddleware):
"""
读取 `User` 请求头并设置 DataScopeHandle 的 FastAPI 中间件。
如果 `jwt_enable` 为 True,缺少请求头将返回 401。
"""
def __init__(self, app):
super().__init__(app)
self.jwt_enable = settings.deepdata_jwt_enable
async def dispatch(self, request: Request, call_next):
user: Optional[str] = request.headers.get("User")
logger.info(f"start filter, current user: {user}, need filter: {self.jwt_enable}")
if self.jwt_enable and (user is None or user.strip() == ""):
payload = {"code": "common.401", "message": "unauthorized", "data": None}
return Response(
content=json.dumps(payload),
status_code=HTTP_401_UNAUTHORIZED,
media_type="application/json"
)
DataScopeHandle.set_user_info(user)
try:
response = await call_next(request)
return response
finally:
DataScopeHandle.remove_user_info()
# Re-export ExceptionHandlingMiddleware for backward compatibility
__all__ = ['UserContextMiddleware']