Explorar o código

enh: remove token cookie on signout

Timothy J. Baek hai 6 meses
pai
achega
e9e49babf8

+ 6 - 0
backend/open_webui/apps/webui/routers/auths.py

@@ -323,6 +323,12 @@ async def signup(request: Request, response: Response, form_data: SignupForm):
         raise HTTPException(500, detail=ERROR_MESSAGES.DEFAULT(err))
 
 
+@router.get("/signout")
+async def signout(response: Response):
+    response.delete_cookie("token")
+    return {"status": True}
+
+
 ############################
 # AddUser
 ############################

+ 25 - 0
src/lib/apis/auths/index.ts

@@ -180,6 +180,31 @@ export const userSignUp = async (
 	return res;
 };
 
+export const userSignOut = async () => {
+	let error = null;
+
+	const res = await fetch(`${WEBUI_API_BASE_URL}/auths/signout`, {
+		method: 'GET',
+		headers: {
+			'Content-Type': 'application/json'
+		},
+		credentials: 'include'
+	})
+		.then(async (res) => {
+			if (!res.ok) throw await res.json();
+			return res;
+		})
+		.catch((err) => {
+			console.log(err);
+			error = err.detail;
+			return null;
+		});
+
+	if (error) {
+		throw error;
+	}
+};
+
 export const addUser = async (
 	token: string,
 	name: string,

+ 3 - 1
src/lib/components/layout/Sidebar/UserMenu.svelte

@@ -8,6 +8,7 @@
 	import { showSettings, activeUserCount, USAGE_POOL, mobile, showSidebar } from '$lib/stores';
 	import { fade, slide } from 'svelte/transition';
 	import Tooltip from '$lib/components/common/Tooltip.svelte';
+	import { userSignOut } from '$lib/apis/auths';
 
 	const i18n = getContext('i18n');
 
@@ -154,7 +155,8 @@
 
 			<button
 				class="flex rounded-md py-2 px-3 w-full hover:bg-gray-50 dark:hover:bg-gray-800 transition"
-				on:click={() => {
+				on:click={async () => {
+					await userSignOut();
 					localStorage.removeItem('token');
 					location.href = '/auth';
 					show = false;