forked from open-webui/open-webui
		
	feat: add ALLOW_ADMIN_EXPORT to disable exporting of chats and the db
This commit is contained in:
		
							parent
							
								
									1e76dbc9a0
								
							
						
					
					
						commit
						190b934ab5
					
				
					 6 changed files with 44 additions and 25 deletions
				
			
		|  | @ -28,7 +28,10 @@ from apps.web.models.tags import ( | |||
| 
 | ||||
| from constants import ERROR_MESSAGES | ||||
| 
 | ||||
| from config import SRC_LOG_LEVELS | ||||
| from config import ( | ||||
|     SRC_LOG_LEVELS, | ||||
|     ALLOW_ADMIN_EXPORT | ||||
| ) | ||||
| 
 | ||||
| log = logging.getLogger(__name__) | ||||
| log.setLevel(SRC_LOG_LEVELS["MODELS"]) | ||||
|  | @ -79,6 +82,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 ALLOW_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() | ||||
|  |  | |||
|  | @ -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 ALLOW_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", | ||||
|  |  | |||
|  | @ -382,6 +382,8 @@ MODEL_FILTER_LIST = [model.strip() for model in MODEL_FILTER_LIST.split(";")] | |||
| 
 | ||||
| WEBHOOK_URL = os.environ.get("WEBHOOK_URL", "") | ||||
| 
 | ||||
| ALLOW_ADMIN_EXPORT = os.environ.get("ALLOW_ADMIN_EXPORT", "True").lower() == "true" | ||||
| 
 | ||||
| #################################### | ||||
| # WEBUI_VERSION | ||||
| #################################### | ||||
|  |  | |||
|  | @ -52,6 +52,7 @@ from config import ( | |||
|     GLOBAL_LOG_LEVEL, | ||||
|     SRC_LOG_LEVELS, | ||||
|     WEBHOOK_URL, | ||||
|     ALLOW_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), | ||||
|         "allow_admin_export": ALLOW_ADMIN_EXPORT, | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| <script lang="ts"> | ||||
| 	import { downloadDatabase } from '$lib/apis/utils'; | ||||
| 	import { onMount, getContext } from 'svelte'; | ||||
| 	import { config } from '$lib/stores'; | ||||
| 
 | ||||
| 	const i18n = getContext('i18n'); | ||||
| 
 | ||||
|  | @ -24,6 +25,7 @@ | |||
| 			<div class="  flex w-full justify-between"> | ||||
| 				<!-- <div class=" self-center text-xs font-medium">{$i18n.t('Allow Chat Deletion')}</div> --> | ||||
| 
 | ||||
| 				{#if $config?.allow_admin_export ?? true} | ||||
| 					<button | ||||
| 						class=" flex rounded-md py-1.5 px-3 w-full hover:bg-gray-200 dark:hover:bg-gray-800 transition" | ||||
| 						type="button" | ||||
|  | @ -50,6 +52,7 @@ | |||
| 						</div> | ||||
| 						<div class=" self-center text-sm font-medium">{$i18n.t('Download Database')}</div> | ||||
| 					</button> | ||||
| 				{/if} | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
|  |  | |||
|  | @ -301,7 +301,7 @@ | |||
| 			</button> | ||||
| 		{/if} | ||||
| 
 | ||||
| 		{#if $user?.role === 'admin'} | ||||
| 		{#if $user?.role === 'admin' && ($config?.allow_admin_export ?? true)} | ||||
| 			<hr class=" dark:border-gray-700" /> | ||||
| 
 | ||||
| 			<button | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jun Siang Cheah
						Jun Siang Cheah