// ---------------------------------------------------------------------------// HTTP API middleware — live implementations (server-only).// Imports the WorkOS SDK so it must NOT be pulled into the client bundle.// --------------------------------------------------------------------------- import { Effect, Layer, Redacted } from "effect"; import { NoOrganization, OrgAuth, SessionAuth, Unauthorized } from "./middleware";import { WorkOSAuth } from "./workos"; export const SessionAuthLive = Layer.effect( SessionAuth, Effect.gen(function* () { const workos = yield* WorkOSAuth; return SessionAuth.of({ cookie: (sealedSession) => Effect.gen(function* () { const result = yield* workos .authenticateSealedSession(Redacted.value(sealedSession)) .pipe(Effect.orElseSucceed(() => null)); if (!result) { return yield* new Unauthorized(); } return { accountId: result.userId, email: result.email, name: `${result.firstName ?? ""} ${result.lastName ?? ""}`.trim() || null, avatarUrl: result.avatarUrl ?? null, organizationId: result.organizationId ?? null, sealedSession: result.refreshedSession ?? Redacted.value(sealedSession), refreshedSession: result.refreshedSession ?? null, }; }), }); }),); export const OrgAuthLive = Layer.effect( OrgAuth, Effect.gen(function* () { const workos = yield* WorkOSAuth; return OrgAuth.of({ cookie: (sealedSession) => Effect.gen(function* () { const result = yield* workos .authenticateSealedSession(Redacted.value(sealedSession)) .pipe(Effect.orElseSucceed(() => null)); if (!result) { return yield* new Unauthorized(); } if (!result.organizationId) { return yield* new NoOrganization(); } return { accountId: result.userId, organizationId: result.organizationId, email: result.email, name: `${result.firstName ?? ""} ${result.lastName ?? ""}`.trim() || null, avatarUrl: result.avatarUrl ?? null, }; }), }); }),);
// ---------------------------------------------------------------------------
// HTTP API middleware — live implementations (server-only).
// Imports the WorkOS SDK so it must NOT be pulled into the client bundle.
// ---------------------------------------------------------------------------
import { Effect, Layer, Redacted } from "effect";
import { NoOrganization, OrgAuth, SessionAuth, Unauthorized } from "./middleware";
import { WorkOSAuth } from "./workos";
export const SessionAuthLive = Layer.effect(
SessionAuth,
Effect.gen(function* () {
const workos = yield* WorkOSAuth;
return SessionAuth.of({
cookie: (sealedSession) =>
Effect.gen(function* () {
const result = yield* workos
.authenticateSealedSession(Redacted.value(sealedSession))
.pipe(Effect.orElseSucceed(() => null));
if (!result) {
return yield* new Unauthorized();
}
return {
accountId: result.userId,
email: result.email,
name: `${result.firstName ?? ""} ${result.lastName ?? ""}`.trim() || null,
avatarUrl: result.avatarUrl ?? null,
organizationId: result.organizationId ?? null,
sealedSession: result.refreshedSession ?? Redacted.value(sealedSession),
refreshedSession: result.refreshedSession ?? null,
};
}),
});
}),
);
export const OrgAuthLive = Layer.effect(
OrgAuth,
Effect.gen(function* () {
const workos = yield* WorkOSAuth;
return OrgAuth.of({
cookie: (sealedSession) =>
Effect.gen(function* () {
const result = yield* workos
.authenticateSealedSession(Redacted.value(sealedSession))
.pipe(Effect.orElseSucceed(() => null));
if (!result) {
return yield* new Unauthorized();
}
if (!result.organizationId) {
return yield* new NoOrganization();
}
return {
accountId: result.userId,
organizationId: result.organizationId,
email: result.email,
name: `${result.firstName ?? ""} ${result.lastName ?? ""}`.trim() || null,
avatarUrl: result.avatarUrl ?? null,
};
}),
});
}),
);