Quellcode durchsuchen

refac: granular onedrive integration types

Timothy Jaeryang Baek vor 3 Wochen
Ursprung
Commit
e1e3009a30

+ 7 - 0
backend/open_webui/config.py

@@ -730,6 +730,7 @@ def load_oauth_providers():
         }
 
     if FEISHU_CLIENT_ID.value and FEISHU_CLIENT_SECRET.value:
+
         def feishu_oauth_register(client: OAuth):
             client.register(
                 name="feishu",
@@ -2167,6 +2168,12 @@ ENABLE_ONEDRIVE_INTEGRATION = PersistentConfig(
     "onedrive.enable",
     os.getenv("ENABLE_ONEDRIVE_INTEGRATION", "False").lower() == "true",
 )
+ENABLE_ONEDRIVE_PERSONAL = (
+    os.environ.get("ENABLE_ONEDRIVE_PERSONAL", "True").lower() == "true"
+)
+ENABLE_ONEDRIVE_BUSINESS = (
+    os.environ.get("ENABLE_ONEDRIVE_BUSINESS", "True").lower() == "true"
+)
 
 ONEDRIVE_CLIENT_ID = PersistentConfig(
     "ONEDRIVE_CLIENT_ID",

+ 8 - 0
backend/open_webui/main.py

@@ -1730,6 +1730,14 @@ async def get_app_config(request: Request):
                     "enable_admin_chat_access": ENABLE_ADMIN_CHAT_ACCESS,
                     "enable_google_drive_integration": app.state.config.ENABLE_GOOGLE_DRIVE_INTEGRATION,
                     "enable_onedrive_integration": app.state.config.ENABLE_ONEDRIVE_INTEGRATION,
+                    **(
+                        {
+                            "enable_onedrive_personal": app.state.config.ENABLE_ONEDRIVE_PERSONAL,
+                            "enable_onedrive_business": app.state.config.ENABLE_ONEDRIVE_BUSINESS,
+                        }
+                        if app.state.config.ENABLE_ONEDRIVE_INTEGRATION
+                        else {}
+                    ),
                 }
                 if user is not None
                 else {}

+ 32 - 20
src/lib/components/chat/MessageInput/InputMenu.svelte

@@ -298,7 +298,7 @@
 							</DropdownMenu.Item>
 						{/if}
 
-						{#if $config?.features?.enable_onedrive_integration}
+						{#if $config?.features?.enable_onedrive_integration && ($config?.features?.enable_onedrive_personal || $config?.features?.enable_onedrive_business)}
 							<DropdownMenu.Sub>
 								<DropdownMenu.SubTrigger
 									class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl w-full"
@@ -396,25 +396,37 @@
 									sideOffset={$mobile ? 5 : 0}
 									alignOffset={$mobile ? 0 : -8}
 								>
-									<DropdownMenu.Item
-										class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
-										on:click={() => {
-											uploadOneDriveHandler('personal');
-										}}
-									>
-										<div class="line-clamp-1">{$i18n.t('Microsoft OneDrive (personal)')}</div>
-									</DropdownMenu.Item>
-									<DropdownMenu.Item
-										class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
-										on:click={() => {
-											uploadOneDriveHandler('organizations');
-										}}
-									>
-										<div class="flex flex-col">
-											<div class="line-clamp-1">{$i18n.t('Microsoft OneDrive (work/school)')}</div>
-											<div class="text-xs text-gray-500">{$i18n.t('Includes SharePoint')}</div>
-										</div>
-									</DropdownMenu.Item>
+									{#if $config?.features?.enable_onedrive_personal}
+										<DropdownMenu.Item
+											class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
+											on:click={() => {
+												uploadOneDriveHandler('personal');
+											}}
+										>
+											<div class="flex flex-col">
+												<div class="line-clamp-1">{$i18n.t('Microsoft OneDrive (personal)')}</div>
+												<div class="text-xs text-gray-500">
+													{$i18n.t('Includes OneDrive Consumer')}
+												</div>
+											</div>
+										</DropdownMenu.Item>
+									{/if}
+
+									{#if $config?.features?.enable_onedrive_business}
+										<DropdownMenu.Item
+											class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl"
+											on:click={() => {
+												uploadOneDriveHandler('organizations');
+											}}
+										>
+											<div class="flex flex-col">
+												<div class="line-clamp-1">
+													{$i18n.t('Microsoft OneDrive (work/school)')}
+												</div>
+												<div class="text-xs text-gray-500">{$i18n.t('Includes SharePoint')}</div>
+											</div>
+										</DropdownMenu.Item>
+									{/if}
 								</DropdownMenu.SubContent>
 							</DropdownMenu.Sub>
 						{/if}