summaryrefslogtreecommitdiffhomepage
path: root/cloud/app/src/context
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-09-18 01:32:40 -0400
committerFrank <[email protected]>2025-09-18 01:32:40 -0400
commitfc4f281408c56ab12db571a470456212a479edf5 (patch)
tree309d23b0c497bc61af6f8e650a6036fa41d7cbdb /cloud/app/src/context
parentf8c4f713a5b48892899d0ac195c3470ab7ef764c (diff)
downloadopencode-fc4f281408c56ab12db571a470456212a479edf5.tar.gz
opencode-fc4f281408c56ab12db571a470456212a479edf5.zip
wip: zen
Diffstat (limited to 'cloud/app/src/context')
-rw-r--r--cloud/app/src/context/auth.session.ts23
-rw-r--r--cloud/app/src/context/auth.ts83
-rw-r--r--cloud/app/src/context/auth.withActor.ts7
3 files changed, 0 insertions, 113 deletions
diff --git a/cloud/app/src/context/auth.session.ts b/cloud/app/src/context/auth.session.ts
deleted file mode 100644
index 609bc364b..000000000
--- a/cloud/app/src/context/auth.session.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { useSession } from "vinxi/http"
-
-export interface AuthSession {
- account?: Record<
- string,
- {
- id: string
- email: string
- }
- >
- current?: string
-}
-
-export function useAuthSession() {
- return useSession<AuthSession>({
- password: "0".repeat(32),
- name: "auth",
- cookie: {
- secure: false,
- httpOnly: true,
- },
- })
-}
diff --git a/cloud/app/src/context/auth.ts b/cloud/app/src/context/auth.ts
deleted file mode 100644
index e08d965b8..000000000
--- a/cloud/app/src/context/auth.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-import { getRequestEvent } from "solid-js/web"
-import { and, Database, eq, inArray } from "@opencode/cloud-core/drizzle/index.js"
-import { WorkspaceTable } from "@opencode/cloud-core/schema/workspace.sql.js"
-import { UserTable } from "@opencode/cloud-core/schema/user.sql.js"
-import { redirect } from "@solidjs/router"
-import { AccountTable } from "@opencode/cloud-core/schema/account.sql.js"
-import { Actor } from "@opencode/cloud-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,
-})
-
-export const getActor = async (workspace?: string): Promise<Actor.Info> => {
- "use server"
- const evt = getRequestEvent()
- if (!evt) throw new Error("No request event")
- if (evt.locals.actor) return evt.locals.actor
- evt.locals.actor = (async () => {
- const auth = await useAuthSession()
- if (!workspace) {
- const account = auth.data.account ?? {}
- const current = account[auth.data.current ?? ""]
- if (current) {
- return {
- type: "account",
- properties: {
- email: current.email,
- accountID: current.id,
- },
- }
- }
- if (Object.keys(account).length > 0) {
- const current = Object.values(account)[0]
- await auth.update((val) => ({
- ...val,
- current: current.id,
- }))
- return {
- type: "account",
- properties: {
- email: current.email,
- accountID: current.id,
- },
- }
- }
- return {
- type: "public",
- properties: {},
- }
- }
- const accounts = Object.keys(auth.data.account ?? {})
- if (accounts.length) {
- const result = await Database.transaction(async (tx) => {
- return await tx
- .select({
- user: UserTable,
- })
- .from(AccountTable)
- .innerJoin(UserTable, and(eq(UserTable.email, AccountTable.email)))
- .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, UserTable.workspaceID))
- .where(and(inArray(AccountTable.id, accounts), eq(WorkspaceTable.id, workspace)))
- .limit(1)
- .execute()
- .then((x) => x[0])
- })
- if (result) {
- return {
- type: "user",
- properties: {
- userID: result.user.id,
- workspaceID: result.user.workspaceID,
- },
- }
- }
- }
- throw redirect("/auth/authorize")
- })()
- return evt.locals.actor
-}
diff --git a/cloud/app/src/context/auth.withActor.ts b/cloud/app/src/context/auth.withActor.ts
deleted file mode 100644
index 4cfd5c3e0..000000000
--- a/cloud/app/src/context/auth.withActor.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Actor } from "@opencode/cloud-core/actor.js"
-import { getActor } from "./auth"
-
-export async function withActor<T>(fn: () => T, workspace?: string) {
- const actor = await getActor(workspace)
- return Actor.provide(actor.type, actor.properties, fn)
-}