diff options
Diffstat (limited to 'packages/cloud/app/src/context')
| -rw-r--r-- | packages/cloud/app/src/context/auth.session.ts | 23 | ||||
| -rw-r--r-- | packages/cloud/app/src/context/auth.ts | 83 | ||||
| -rw-r--r-- | packages/cloud/app/src/context/auth.withActor.ts | 7 |
3 files changed, 0 insertions, 113 deletions
diff --git a/packages/cloud/app/src/context/auth.session.ts b/packages/cloud/app/src/context/auth.session.ts deleted file mode 100644 index 609bc364b..000000000 --- a/packages/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/packages/cloud/app/src/context/auth.ts b/packages/cloud/app/src/context/auth.ts deleted file mode 100644 index e08d965b8..000000000 --- a/packages/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/packages/cloud/app/src/context/auth.withActor.ts b/packages/cloud/app/src/context/auth.withActor.ts deleted file mode 100644 index 4cfd5c3e0..000000000 --- a/packages/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) -} |
