diff --git a/infra/console.ts b/infra/console.ts index 1e584ca576..1368ef202a 100644 --- a/infra/console.ts +++ b/infra/console.ts @@ -163,6 +163,7 @@ new sst.cloudflare.x.SolidStart("Console", { AWS_SES_ACCESS_KEY_ID, AWS_SES_SECRET_ACCESS_KEY, ZEN_BLACK, + new sst.Secret("ZEN_SESSION_SECRET"), ...ZEN_MODELS, ...($dev ? [ diff --git a/packages/console/app/src/context/auth.session.ts b/packages/console/app/src/context/auth.session.ts index 726b6c8346..e69de29bb2 100644 --- a/packages/console/app/src/context/auth.session.ts +++ b/packages/console/app/src/context/auth.session.ts @@ -1,24 +0,0 @@ -import { useSession } from "@solidjs/start/http" - -export interface AuthSession { - account?: Record< - string, - { - id: string - email: string - } - > - current?: string -} - -export function useAuthSession() { - return useSession({ - password: "0".repeat(32), - name: "auth", - maxAge: 60 * 60 * 24 * 365, - cookie: { - secure: false, - httpOnly: true, - }, - }) -} diff --git a/packages/console/app/src/context/auth.ts b/packages/console/app/src/context/auth.ts index dbbd3c3b2f..aed07a630f 100644 --- a/packages/console/app/src/context/auth.ts +++ b/packages/console/app/src/context/auth.ts @@ -5,13 +5,38 @@ import { redirect } from "@solidjs/router" import { Actor } from "@opencode-ai/console-core/actor.js" import { createClient } from "@openauthjs/openauth/client" -import { useAuthSession } from "./auth.session" export const AuthClient = createClient({ clientID: "app", issuer: import.meta.env.VITE_AUTH_URL, }) +import { useSession } from "@solidjs/start/http" +import { Resource } from "@opencode-ai/console-resource" + +export interface AuthSession { + account?: Record< + string, + { + id: string + email: string + } + > + current?: string +} + +export function useAuthSession() { + return useSession({ + password: Resource.ZEN_SESSION_SECRET.value, + name: "auth", + maxAge: 60 * 60 * 24 * 365, + cookie: { + secure: false, + httpOnly: true, + }, + }) +} + export const getActor = async (workspace?: string): Promise => { "use server" const evt = getRequestEvent() diff --git a/packages/console/app/src/routes/auth/callback.ts b/packages/console/app/src/routes/auth/callback.ts index 2f8781e988..9b7296791d 100644 --- a/packages/console/app/src/routes/auth/callback.ts +++ b/packages/console/app/src/routes/auth/callback.ts @@ -1,7 +1,7 @@ import { redirect } from "@solidjs/router" import type { APIEvent } from "@solidjs/start/server" import { AuthClient } from "~/context/auth" -import { useAuthSession } from "~/context/auth.session" +import { useAuthSession } from "~/context/auth" export async function GET(input: APIEvent) { const url = new URL(input.request.url) diff --git a/packages/console/app/src/routes/auth/logout.ts b/packages/console/app/src/routes/auth/logout.ts index 7fbe5199a7..9aaac37e22 100644 --- a/packages/console/app/src/routes/auth/logout.ts +++ b/packages/console/app/src/routes/auth/logout.ts @@ -1,6 +1,6 @@ import { redirect } from "@solidjs/router" import { APIEvent } from "@solidjs/start" -import { useAuthSession } from "~/context/auth.session" +import { useAuthSession } from "~/context/auth" export async function GET(event: APIEvent) { const auth = await useAuthSession() diff --git a/packages/console/app/src/routes/auth/status.ts b/packages/console/app/src/routes/auth/status.ts index eaab9dbef2..215cae698f 100644 --- a/packages/console/app/src/routes/auth/status.ts +++ b/packages/console/app/src/routes/auth/status.ts @@ -1,5 +1,5 @@ import { APIEvent } from "@solidjs/start" -import { useAuthSession } from "~/context/auth.session" +import { useAuthSession } from "~/context/auth" export async function GET(input: APIEvent) { const session = await useAuthSession() diff --git a/packages/console/app/src/routes/user-menu.tsx b/packages/console/app/src/routes/user-menu.tsx index e0931efd95..a910c2efd1 100644 --- a/packages/console/app/src/routes/user-menu.tsx +++ b/packages/console/app/src/routes/user-menu.tsx @@ -1,6 +1,6 @@ import { action } from "@solidjs/router" import { getRequestEvent } from "solid-js/web" -import { useAuthSession } from "~/context/auth.session" +import { useAuthSession } from "~/context/auth" import { Dropdown } from "~/component/dropdown" import "./user-menu.css" diff --git a/packages/console/core/sst-env.d.ts b/packages/console/core/sst-env.d.ts index 4450c6cb69..96fada3e3c 100644 --- a/packages/console/core/sst-env.d.ts +++ b/packages/console/core/sst-env.d.ts @@ -130,6 +130,10 @@ declare module "sst" { "type": "sst.sst.Secret" "value": string } + "ZEN_SESSION_SECRET": { + "type": "sst.sst.Secret" + "value": string + } } } // cloudflare diff --git a/packages/console/function/sst-env.d.ts b/packages/console/function/sst-env.d.ts index 4450c6cb69..96fada3e3c 100644 --- a/packages/console/function/sst-env.d.ts +++ b/packages/console/function/sst-env.d.ts @@ -130,6 +130,10 @@ declare module "sst" { "type": "sst.sst.Secret" "value": string } + "ZEN_SESSION_SECRET": { + "type": "sst.sst.Secret" + "value": string + } } } // cloudflare diff --git a/packages/console/resource/sst-env.d.ts b/packages/console/resource/sst-env.d.ts index 4450c6cb69..96fada3e3c 100644 --- a/packages/console/resource/sst-env.d.ts +++ b/packages/console/resource/sst-env.d.ts @@ -130,6 +130,10 @@ declare module "sst" { "type": "sst.sst.Secret" "value": string } + "ZEN_SESSION_SECRET": { + "type": "sst.sst.Secret" + "value": string + } } } // cloudflare diff --git a/packages/enterprise/sst-env.d.ts b/packages/enterprise/sst-env.d.ts index 4450c6cb69..96fada3e3c 100644 --- a/packages/enterprise/sst-env.d.ts +++ b/packages/enterprise/sst-env.d.ts @@ -130,6 +130,10 @@ declare module "sst" { "type": "sst.sst.Secret" "value": string } + "ZEN_SESSION_SECRET": { + "type": "sst.sst.Secret" + "value": string + } } } // cloudflare diff --git a/packages/function/sst-env.d.ts b/packages/function/sst-env.d.ts index 4450c6cb69..96fada3e3c 100644 --- a/packages/function/sst-env.d.ts +++ b/packages/function/sst-env.d.ts @@ -130,6 +130,10 @@ declare module "sst" { "type": "sst.sst.Secret" "value": string } + "ZEN_SESSION_SECRET": { + "type": "sst.sst.Secret" + "value": string + } } } // cloudflare diff --git a/sst-env.d.ts b/sst-env.d.ts index 6e8b8e67e6..035a5fc21d 100644 --- a/sst-env.d.ts +++ b/sst-env.d.ts @@ -156,6 +156,10 @@ declare module "sst" { "type": "sst.sst.Secret" "value": string } + "ZEN_SESSION_SECRET": { + "type": "sst.sst.Secret" + "value": string + } "ZenData": { "name": string "type": "sst.cloudflare.Bucket"