From 0d1b06d87c57e61faf1cc439e5b37a61e28ef1cc Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 20 Jul 2025 10:52:47 +0200 Subject: [PATCH 1/4] Update Database.svelte --- .../components/admin/Settings/Database.svelte | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/src/lib/components/admin/Settings/Database.svelte b/src/lib/components/admin/Settings/Database.svelte index de411b866e..92c3c71066 100644 --- a/src/lib/components/admin/Settings/Database.svelte +++ b/src/lib/components/admin/Settings/Database.svelte @@ -7,6 +7,7 @@ import { config, user } from '$lib/stores'; import { toast } from 'svelte-sonner'; import { getAllUserChats } from '$lib/apis/chats'; + import { getAllUsers } from '$lib/apis/users'; import { exportConfig, importConfig } from '$lib/apis/configs'; const i18n = getContext('i18n'); @@ -20,6 +21,41 @@ saveAs(blob, `all-chats-export-${Date.now()}.json`); }; + const exportUsers = async () => { + const users = await getAllUsers(localStorage.token); + + const headers = [ + 'id', + 'name', + 'email', + 'role', + 'profile_image_url', + 'last_active_at', + 'updated_at', + 'created_at', + 'api_key', + 'settings', + 'info' + ]; + + const csv = [ + headers.join(','), + ...users.users.map((user) => { + return headers + .map((header) => { + if (header === 'settings' || header === 'info') { + return JSON.stringify(user[header]); + } + return user[header]; + }) + .join(','); + }) + ].join('\n'); + + const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); + saveAs(blob, 'users.csv'); + }; + onMount(async () => { // permissions = await getUserPermissions(localStorage.token); }); @@ -180,6 +216,32 @@ {$i18n.t('Export All Chats (All Users)')} + + {/if} From 84f7a557533b057592e126b8b19cd0ff3a944bad Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 20 Jul 2025 11:04:40 +0200 Subject: [PATCH 2/4] remove slash --- backend/dev.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/dev.sh b/backend/dev.sh index 0164c1940e..66b40e5050 100755 --- a/backend/dev.sh +++ b/backend/dev.sh @@ -1,3 +1,3 @@ -export CORS_ALLOW_ORIGIN=http://localhost:5173/ +export CORS_ALLOW_ORIGIN=http://localhost:5173 PORT="${PORT:-8080}" uvicorn open_webui.main:app --port $PORT --host 0.0.0.0 --forwarded-allow-ips '*' --reload From 74140ea25170697427474eb205bb5aab70a7f4ea Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 20 Jul 2025 11:12:38 +0200 Subject: [PATCH 3/4] Update Database.svelte --- .../components/admin/Settings/Database.svelte | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib/components/admin/Settings/Database.svelte b/src/lib/components/admin/Settings/Database.svelte index 92c3c71066..78d8bfa555 100644 --- a/src/lib/components/admin/Settings/Database.svelte +++ b/src/lib/components/admin/Settings/Database.svelte @@ -43,10 +43,23 @@ ...users.users.map((user) => { return headers .map((header) => { - if (header === 'settings' || header === 'info') { - return JSON.stringify(user[header]); + if (user[header] === null || user[header] === undefined) { + return ''; } - return user[header]; + + if (header === 'settings' || header === 'info') { + return `"${JSON.stringify(user[header]).replace(/"/g, '""')}"`; + } + + if ( + header === 'last_active_at' || + header === 'updated_at' || + header === 'created_at' + ) { + return new Date(user[header] * 1000).toISOString(); + } + + return `"${String(user[header]).replace(/"/g, '""')}"`; }) .join(','); }) From a2aa68c84a142977c3437a730c62275d8a766b34 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 20 Jul 2025 11:16:08 +0200 Subject: [PATCH 4/4] Update Database.svelte --- .../components/admin/Settings/Database.svelte | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/src/lib/components/admin/Settings/Database.svelte b/src/lib/components/admin/Settings/Database.svelte index 78d8bfa555..b2ac5553de 100644 --- a/src/lib/components/admin/Settings/Database.svelte +++ b/src/lib/components/admin/Settings/Database.svelte @@ -24,19 +24,7 @@ const exportUsers = async () => { const users = await getAllUsers(localStorage.token); - const headers = [ - 'id', - 'name', - 'email', - 'role', - 'profile_image_url', - 'last_active_at', - 'updated_at', - 'created_at', - 'api_key', - 'settings', - 'info' - ]; + const headers = ['id', 'name', 'email', 'role']; const csv = [ headers.join(','), @@ -46,19 +34,6 @@ if (user[header] === null || user[header] === undefined) { return ''; } - - if (header === 'settings' || header === 'info') { - return `"${JSON.stringify(user[header]).replace(/"/g, '""')}"`; - } - - if ( - header === 'last_active_at' || - header === 'updated_at' || - header === 'created_at' - ) { - return new Date(user[header] * 1000).toISOString(); - } - return `"${String(user[header]).replace(/"/g, '""')}"`; }) .join(',');