feat: add rbac-backed settings modules
This commit is contained in:
+20
-1
@@ -2,15 +2,18 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import mimetypes
|
||||
import sys
|
||||
from contextlib import asynccontextmanager
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi import FastAPI, HTTPException
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import Response
|
||||
|
||||
from fastapi_admin.config import APP_NAME, APP_CORS_ORIGINS
|
||||
from fastapi_admin.config._loader import _find_project_root
|
||||
from fastapi_common.fastapi_common_storage.oss_client import OssClient
|
||||
|
||||
# 确保项目根在 sys.path
|
||||
_PROJECT_ROOT = _find_project_root()
|
||||
@@ -62,6 +65,22 @@ def create_app() -> FastAPI:
|
||||
from fastapi_admin.bootstrap_parts.controllers import register_controllers
|
||||
register_controllers(app)
|
||||
|
||||
@app.get("/docauditai/{ObjectPath:path}")
|
||||
async def GetCompatObject(ObjectPath: str):
|
||||
"""兼容旧前端的对象访问路径,优先读取新桶对象。"""
|
||||
Client = OssClient()
|
||||
CandidateBuckets = [Client.bucket, "docauditai"]
|
||||
for BucketName in CandidateBuckets:
|
||||
try:
|
||||
if not Client.ObjectExists(ObjectPath, Bucket=BucketName):
|
||||
continue
|
||||
Content = Client.DownloadBytes(ObjectPath, Bucket=BucketName)
|
||||
MediaType = mimetypes.guess_type(ObjectPath)[0] or "application/octet-stream"
|
||||
return Response(content=Content, media_type=MediaType)
|
||||
except Exception:
|
||||
continue
|
||||
raise HTTPException(status_code=404, detail="Object not found")
|
||||
|
||||
return app
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user