diff --git a/backend/apps/web/routers/chats.py b/backend/apps/web/routers/chats.py index 678c9aea7..bbe3d84b9 100644 --- a/backend/apps/web/routers/chats.py +++ b/backend/apps/web/routers/chats.py @@ -28,7 +28,7 @@ from apps.web.models.tags import ( from constants import ERROR_MESSAGES -from config import SRC_LOG_LEVELS +from config import SRC_LOG_LEVELS, ENABLE_ADMIN_EXPORT log = logging.getLogger(__name__) log.setLevel(SRC_LOG_LEVELS["MODELS"]) @@ -79,6 +79,11 @@ async def get_all_user_chats(user=Depends(get_current_user)): @router.get("/all/db", response_model=List[ChatResponse]) async def get_all_user_chats_in_db(user=Depends(get_admin_user)): + if not ENABLE_ADMIN_EXPORT: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) return [ ChatResponse(**{**chat.model_dump(), "chat": json.loads(chat.chat)}) for chat in Chats.get_all_chats() diff --git a/backend/apps/web/routers/utils.py b/backend/apps/web/routers/utils.py index 0ee75cfe6..284f350a0 100644 --- a/backend/apps/web/routers/utils.py +++ b/backend/apps/web/routers/utils.py @@ -91,7 +91,11 @@ async def download_chat_as_pdf( @router.get("/db/download") async def download_db(user=Depends(get_admin_user)): - + if not ENABLE_ADMIN_EXPORT: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) return FileResponse( f"{DATA_DIR}/webui.db", media_type="application/octet-stream", diff --git a/backend/config.py b/backend/config.py index fb9063eb7..db226183e 100644 --- a/backend/config.py +++ b/backend/config.py @@ -382,6 +382,8 @@ MODEL_FILTER_LIST = [model.strip() for model in MODEL_FILTER_LIST.split(";")] WEBHOOK_URL = os.environ.get("WEBHOOK_URL", "") +ENABLE_ADMIN_EXPORT = os.environ.get("ENABLE_ADMIN_EXPORT", "True").lower() == "true" + #################################### # WEBUI_VERSION #################################### diff --git a/backend/main.py b/backend/main.py index 579ff2ee0..c7c78e18d 100644 --- a/backend/main.py +++ b/backend/main.py @@ -52,6 +52,7 @@ from config import ( GLOBAL_LOG_LEVEL, SRC_LOG_LEVELS, WEBHOOK_URL, + ENABLE_ADMIN_EXPORT, ) from constants import ERROR_MESSAGES @@ -207,6 +208,7 @@ async def get_app_config(): "default_models": webui_app.state.DEFAULT_MODELS, "default_prompt_suggestions": webui_app.state.DEFAULT_PROMPT_SUGGESTIONS, "trusted_header_auth": bool(webui_app.state.AUTH_TRUSTED_EMAIL_HEADER), + "admin_export_enabled": ENABLE_ADMIN_EXPORT, } diff --git a/src/lib/components/admin/Settings/Database.svelte b/src/lib/components/admin/Settings/Database.svelte index 7d3a34444..06a0d595c 100644 --- a/src/lib/components/admin/Settings/Database.svelte +++ b/src/lib/components/admin/Settings/Database.svelte @@ -1,6 +1,7 @@