nico
nico
Explore posts from servers
TTCTheo's Typesafe Cult
Created by nico on 2/1/2024 in #questions
How would you go about layered authentication?
I have an upcomming project where it might be useful to have layered authentication. As an example: If you login to my app, you would do so using a magic link. This is enough to use the app and so on. But if you want to access your invoices or other financial data, you would need to authenticate using your secound factor (for example sms otc). How would you go about something like this? Is there an authentication solution provider who supports use cases like this? Thanks a lot! Nico
3 replies
TTCTheo's Typesafe Cult
Created by nico on 2/1/2024 in #questions
Integrating Clerk: How to supply req to createTRPCContext on server-side?
Hi! I am currently trying to integrate Clerk into an T3 Setup with tRPC, App Router and Drizzle. Everything goes relatively smooth. Clerk needs the NextRequest object tho, so I updated the createTRPCContext to reflect that:
export const createTRPCContext = async (opts: { req: NextRequest }) => {
return {
db,
auth: getAuth(opts.req),
headers: opts.req.headers,
...opts,
};
};
export const createTRPCContext = async (opts: { req: NextRequest }) => {
return {
db,
auth: getAuth(opts.req),
headers: opts.req.headers,
...opts,
};
};
The problem is on the Server-Side. In server.ts (src/trpc/server.ts) the createTRPCProxyClient creates a trpcLink that uses the following code:
const createContext = cache(() => {
const heads = new Headers(headers());

heads.set("x-trpc-source", "rsc");

return createTRPCContext({
headers: heads,
});
});
const createContext = cache(() => {
const heads = new Headers(headers());

heads.set("x-trpc-source", "rsc");

return createTRPCContext({
headers: heads,
});
});
` I would need to update this, so it supplies the request to createTRPCContext. Does anyone know how to do this? Thanks a lot! Nico
6 replies