summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-11-23 00:12:58 -0500
committerDax Raad <[email protected]>2025-11-23 00:12:58 -0500
commit448b72d046c131677ccd65a8099560f26f9d5018 (patch)
treefac1b1380779dec2c5531643c93007765c2e8b53
parentd96d89bcb8fa146db7c14343423dad4e16ca0970 (diff)
downloadopencode-448b72d046c131677ccd65a8099560f26f9d5018.tar.gz
opencode-448b72d046c131677ccd65a8099560f26f9d5018.zip
fix logout
-rw-r--r--packages/console/app/src/routes/auth/logout.ts21
-rw-r--r--packages/console/app/src/routes/user-menu.css1
-rw-r--r--packages/console/app/src/routes/user-menu.tsx17
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>
)