👋
【Better Auth】NextJs & tRPC 【#7 Better Auth & tRPC Server Side】
【#7 Better Auth & tRPC Server Side】
YouTube: https://youtu.be/N0_riq1gCjs
今回はBetter Authの認証機能をtRPCのサーバーサイドの
ルートで使用できるようにします。
src/trpc/init.ts
import { cache } from 'react'
import { headers } from 'next/headers'
import { initTRPC, TRPCError } from '@trpc/server'
import { auth } from '@/lib/auth'
export const createTRPCContext = cache(async () => {
/**
* @see: https://trpc.io/docs/server/context
*/
return { userId: 'user_123' }
})
// Avoid exporting the entire t-object
// since it's not very descriptive.
// For instance, the use of a t variable
// is common in i18n libraries.
const t = initTRPC.create({
/**
* @see https://trpc.io/docs/server/data-transformers
*/
// transformer: superjson,
})
// Base router and procedure helpers
export const createTRPCRouter = t.router
export const createCallerFactory = t.createCallerFactory
export const baseProcedure = t.procedure
export const protectedProcedure = baseProcedure.use(async ({ ctx, next }) => {
const session = await auth.api.getSession({
headers: await headers(),
})
if (!session) {
throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Unauthorized' })
}
return next({
ctx: { ...ctx, auth: session },
})
})
Discussion