From 448b72d046c131677ccd65a8099560f26f9d5018 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 23 Nov 2025 00:12:58 -0500 Subject: [PATCH] fix logout --- .../console/app/src/routes/auth/logout.ts | 21 +++++++++++++++++++ packages/console/app/src/routes/user-menu.css | 1 + packages/console/app/src/routes/user-menu.tsx | 17 +++++---------- 3 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 packages/console/app/src/routes/auth/logout.ts diff --git a/packages/console/app/src/routes/auth/logout.ts b/packages/console/app/src/routes/auth/logout.ts new file mode 100644 index 000000000..00a63f0c6 --- /dev/null +++ b/packages/console/app/src/routes/auth/logout.ts @@ -0,0 +1,21 @@ +import { redirect } from "@solidjs/router" +import { APIEvent } from "@solidjs/start" +import { getResponseHeaders } from "@solidjs/start/http" +import { useAuthSession } from "~/context/auth.session" + +export async function GET(event: APIEvent) { + const auth = await useAuthSession() + const current = auth.data.current + if (current) + await auth.update((val) => { + delete val.account?.[current] + const first = Object.keys(val.account ?? {})[0] + val.current = first + event!.locals.actor = undefined + return val + }) + return redirect("/zen", { + status: 302, + headers: getResponseHeaders(), + }) +} diff --git a/packages/console/app/src/routes/user-menu.css b/packages/console/app/src/routes/user-menu.css index 21008e98d..0afc26980 100644 --- a/packages/console/app/src/routes/user-menu.css +++ b/packages/console/app/src/routes/user-menu.css @@ -12,6 +12,7 @@ [data-slot="item"] { color: var(--color-danger); + text-decoration: none; } } } diff --git a/packages/console/app/src/routes/user-menu.tsx b/packages/console/app/src/routes/user-menu.tsx index 7efdbf4d7..e0931efd9 100644 --- a/packages/console/app/src/routes/user-menu.tsx +++ b/packages/console/app/src/routes/user-menu.tsx @@ -1,9 +1,8 @@ -import { action, redirect } from "@solidjs/router" +import { action } from "@solidjs/router" import { getRequestEvent } from "solid-js/web" import { useAuthSession } from "~/context/auth.session" import { Dropdown } from "~/component/dropdown" import "./user-menu.css" -import { getResponseHeaders } from "@solidjs/start/http" const logout = action(async () => { "use server" @@ -18,21 +17,15 @@ const logout = action(async () => { event!.locals.actor = undefined return val }) - throw redirect("/zen", { - status: 302, - headers: getResponseHeaders(), - }) -}) +}, "auth.logout") export function UserMenu(props: { email: string | null | undefined }) { return (
-
- -
+ + Logout +
)