context.ts 658 B

12345678910111213141516171819202122232425262728
  1. import type { CreateExpressContextOptions } from "@trpc/server/adapters/express";
  2. import type { User } from "../../drizzle/schema";
  3. import { sdk } from "./sdk";
  4. export type TrpcContext = {
  5. req: CreateExpressContextOptions["req"];
  6. res: CreateExpressContextOptions["res"];
  7. user: User | null;
  8. };
  9. export async function createContext(
  10. opts: CreateExpressContextOptions
  11. ): Promise<TrpcContext> {
  12. let user: User | null = null;
  13. try {
  14. user = await sdk.authenticateRequest(opts.req);
  15. } catch (error) {
  16. // Authentication is optional for public procedures.
  17. user = null;
  18. }
  19. return {
  20. req: opts.req,
  21. res: opts.res,
  22. user,
  23. };
  24. }