Spaces:
Sleeping
Sleeping
File size: 936 Bytes
4c41b3d 81e976b 4c41b3d 81e976b 4c41b3d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import type { CreateExpressContextOptions } from "@trpc/server/adapters/express";
import type { User } from "../../drizzle/schema";
import { sdk } from "./sdk";
import * as db from "../db";
export type TrpcContext = {
req: CreateExpressContextOptions["req"];
res: CreateExpressContextOptions["res"];
user: User | null;
};
export async function createContext(
opts: CreateExpressContextOptions
): Promise<TrpcContext> {
let user: User | null = null;
try {
user = await sdk.authenticateRequest(opts.req);
} catch (error) {
// Authentication is optional for public procedures.
user = null;
}
// If no user is authenticated, use the guest user to bypass login
if (!user) {
try {
user = (await db.getOrCreateGuestUser()) || null;
} catch (error) {
console.error("[Context] Failed to get guest user", error);
}
}
return {
req: opts.req,
res: opts.res,
user,
};
}
|