diff options
| author | Dax Raad <[email protected]> | 2025-11-23 00:12:58 -0500 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-11-23 00:12:58 -0500 |
| commit | 448b72d046c131677ccd65a8099560f26f9d5018 (patch) | |
| tree | fac1b1380779dec2c5531643c93007765c2e8b53 | |
| parent | d96d89bcb8fa146db7c14343423dad4e16ca0970 (diff) | |
| download | opencode-448b72d046c131677ccd65a8099560f26f9d5018.tar.gz opencode-448b72d046c131677ccd65a8099560f26f9d5018.zip | |
fix logout
| -rw-r--r-- | packages/console/app/src/routes/auth/logout.ts | 21 | ||||
| -rw-r--r-- | packages/console/app/src/routes/user-menu.css | 1 | ||||
| -rw-r--r-- | packages/console/app/src/routes/user-menu.tsx | 17 |
3 files changed, 27 insertions, 12 deletions
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 ( <div data-component="user-menu"> <Dropdown trigger={props.email ?? ""} align="right"> - <form action={logout} method="post"> - <button type="submit" formaction={logout} data-slot="item"> - Logout - </button> - </form> + <a href="/auth/logout" data-slot="item"> + Logout + </a> </Dropdown> </div> ) |
