23
server/trpc/context.ts
Normal file
23
server/trpc/context.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { CreateExpressContextOptions } from '@trpc/server/adapters/express'
|
||||
import { auth } from '../auth/lucia'
|
||||
|
||||
export async function createContext({ res, req }: CreateExpressContextOptions) {
|
||||
const sessionId = auth.readSessionCookie(req.headers.cookie ?? '')
|
||||
|
||||
if (!sessionId)
|
||||
return { res, req }
|
||||
|
||||
const { session, user } = await auth.validateSession(sessionId)
|
||||
|
||||
if (session && session.fresh) {
|
||||
res.appendHeader('Set-Cookie', auth.createSessionCookie(session.id).serialize())
|
||||
}
|
||||
|
||||
if (!session) {
|
||||
res.appendHeader('Set-Cookie', auth.createBlankSessionCookie().serialize())
|
||||
}
|
||||
|
||||
return { res, req, session, user }
|
||||
}
|
||||
|
||||
export type Context = Awaited<ReturnType<typeof createContext>>
|
||||
Reference in New Issue
Block a user