feat(core): pass auth data to workspace (#22897)
This commit is contained in:
@@ -56,6 +56,12 @@ export const layer = Layer.effect(
|
|||||||
const decode = Schema.decodeUnknownOption(Info)
|
const decode = Schema.decodeUnknownOption(Info)
|
||||||
|
|
||||||
const all = Effect.fn("Auth.all")(function* () {
|
const all = Effect.fn("Auth.all")(function* () {
|
||||||
|
if (process.env.OPENCODE_AUTH_CONTENT) {
|
||||||
|
try {
|
||||||
|
return JSON.parse(process.env.OPENCODE_AUTH_CONTENT)
|
||||||
|
} catch (err) {}
|
||||||
|
}
|
||||||
|
|
||||||
const data = (yield* fsys.readJson(file).pipe(Effect.orElseSucceed(() => ({})))) as Record<string, unknown>
|
const data = (yield* fsys.readJson(file).pipe(Effect.orElseSucceed(() => ({})))) as Record<string, unknown>
|
||||||
return Record.filterMap(data, (value) => Result.fromOption(decode(value), () => undefined))
|
return Record.filterMap(data, (value) => Result.fromOption(decode(value), () => undefined))
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export type WorkspaceAdaptor = {
|
|||||||
name: string
|
name: string
|
||||||
description: string
|
description: string
|
||||||
configure(info: WorkspaceInfo): WorkspaceInfo | Promise<WorkspaceInfo>
|
configure(info: WorkspaceInfo): WorkspaceInfo | Promise<WorkspaceInfo>
|
||||||
create(info: WorkspaceInfo, from?: WorkspaceInfo): Promise<void>
|
create(info: WorkspaceInfo, env: Record<string, string>, from?: WorkspaceInfo): Promise<void>
|
||||||
remove(info: WorkspaceInfo): Promise<void>
|
remove(info: WorkspaceInfo): Promise<void>
|
||||||
target(info: WorkspaceInfo): Target | Promise<Target>
|
target(info: WorkspaceInfo): Target | Promise<Target>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { Database, asc, eq, inArray } from "@/storage"
|
|||||||
import { Project } from "@/project"
|
import { Project } from "@/project"
|
||||||
import { BusEvent } from "@/bus/bus-event"
|
import { BusEvent } from "@/bus/bus-event"
|
||||||
import { GlobalBus } from "@/bus/global"
|
import { GlobalBus } from "@/bus/global"
|
||||||
|
import { Auth } from "@/auth"
|
||||||
import { SyncEvent } from "@/sync"
|
import { SyncEvent } from "@/sync"
|
||||||
import { EventTable } from "@/sync/event.sql"
|
import { EventTable } from "@/sync/event.sql"
|
||||||
import { Flag } from "@/flag/flag"
|
import { Flag } from "@/flag/flag"
|
||||||
@@ -112,7 +113,12 @@ export namespace Workspace {
|
|||||||
.run()
|
.run()
|
||||||
})
|
})
|
||||||
|
|
||||||
await adaptor.create(config)
|
const env = {
|
||||||
|
OPENCODE_AUTH_CONTENT: JSON.stringify(await AppRuntime.runPromise(Auth.Service.use((auth) => auth.all()))),
|
||||||
|
OPENCODE_WORKSPACE_ID: config.id,
|
||||||
|
OPENCODE_EXPERIMENTAL_WORKSPACES: "true"
|
||||||
|
}
|
||||||
|
await adaptor.create(config, env)
|
||||||
|
|
||||||
startSync(info)
|
startSync(info)
|
||||||
|
|
||||||
|
|||||||
@@ -110,12 +110,6 @@ export namespace ServerProxy {
|
|||||||
req: Request,
|
req: Request,
|
||||||
workspaceID: WorkspaceID,
|
workspaceID: WorkspaceID,
|
||||||
) {
|
) {
|
||||||
console.log("proxy http request", {
|
|
||||||
method: req.method,
|
|
||||||
request: req.url,
|
|
||||||
url: String(url),
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!Workspace.isSyncing(workspaceID)) {
|
if (!Workspace.isSyncing(workspaceID)) {
|
||||||
return new Response(`broken sync connection for workspace: ${workspaceID}`, {
|
return new Response(`broken sync connection for workspace: ${workspaceID}`, {
|
||||||
status: 503,
|
status: 503,
|
||||||
|
|||||||
Reference in New Issue
Block a user