29 lines
658 B
TypeScript
29 lines
658 B
TypeScript
import type { CreateExpressContextOptions } from "@trpc/server/adapters/express";
|
|
import type { User } from "../../drizzle/schema";
|
|
import { sdk } from "./sdk";
|
|
|
|
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;
|
|
}
|
|
|
|
return {
|
|
req: opts.req,
|
|
res: opts.res,
|
|
user,
|
|
};
|
|
}
|