From e05d8bdca1b687e5d8c2c11eca8ccc31ece3e6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Sat, 17 Feb 2024 13:13:52 +0100 Subject: [PATCH] try fix auth --- .../[projectId]/events/page.tsx | 1 - apps/web/src/app/api/trpc/[trpc]/route.ts | 9 +++--- apps/web/src/middleware.ts | 8 +++++- .../src/server/api/routers/chart.helpers.ts | 1 - apps/web/src/server/api/trpc.ts | 28 +++++++++++++------ 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/apps/web/src/app/(app)/[organizationId]/[projectId]/events/page.tsx b/apps/web/src/app/(app)/[organizationId]/[projectId]/events/page.tsx index 90759dd0..406cfa0b 100644 --- a/apps/web/src/app/(app)/[organizationId]/[projectId]/events/page.tsx +++ b/apps/web/src/app/(app)/[organizationId]/[projectId]/events/page.tsx @@ -109,7 +109,6 @@ export default async function Page({ }), getExists(organizationId, projectId), ]); - console.log(events[0]); return ( diff --git a/apps/web/src/app/api/trpc/[trpc]/route.ts b/apps/web/src/app/api/trpc/[trpc]/route.ts index 66c12104..c0b27472 100644 --- a/apps/web/src/app/api/trpc/[trpc]/route.ts +++ b/apps/web/src/app/api/trpc/[trpc]/route.ts @@ -1,5 +1,6 @@ import { appRouter } from '@/server/api/root'; -import { auth } from '@clerk/nextjs'; +import { getSession } from '@/server/auth'; +import { getAuth } from '@clerk/nextjs/server'; import { fetchRequestHandler } from '@trpc/server/adapters/fetch'; const handler = (req: Request) => @@ -7,12 +8,10 @@ const handler = (req: Request) => endpoint: '/api/trpc', req, router: appRouter, - createContext: () => { + async createContext({ req }) { console.log('------- createContext --------'); - const session = auth(); - console.log('session', session); + const session = getAuth(req as any); console.log('session', JSON.stringify(session, null, 2)); - return { session, }; diff --git a/apps/web/src/middleware.ts b/apps/web/src/middleware.ts index 68bdefb5..a9af39af 100644 --- a/apps/web/src/middleware.ts +++ b/apps/web/src/middleware.ts @@ -8,5 +8,11 @@ export default authMiddleware({ }); export const config = { - matcher: ['/((?!.+\\.[\\w]+$|_next).*)', '/', '/(api)(.*)'], + matcher: [ + '/((?!.+\\.[\\w]+$|_next).*)', + '/', + '/(api)(.*)', + '/(api|trpc)(.*)', + '/api/trpc(.*)', + ], }; diff --git a/apps/web/src/server/api/routers/chart.helpers.ts b/apps/web/src/server/api/routers/chart.helpers.ts index 170b58da..1c03b8a4 100644 --- a/apps/web/src/server/api/routers/chart.helpers.ts +++ b/apps/web/src/server/api/routers/chart.helpers.ts @@ -61,7 +61,6 @@ function fillEmptySpotsInTimeline( clonedStartDate.getTime() <= clonedEndDate.getTime() ) { if (prev === clonedStartDate.getTime()) { - console.log('GET OUT NOW!'); break; } prev = clonedStartDate.getTime(); diff --git a/apps/web/src/server/api/trpc.ts b/apps/web/src/server/api/trpc.ts index c27d3b5a..df7673cd 100644 --- a/apps/web/src/server/api/trpc.ts +++ b/apps/web/src/server/api/trpc.ts @@ -1,10 +1,11 @@ -import type { auth } from '@clerk/nextjs'; +import { clerkClient } from '@clerk/nextjs'; +import type { getAuth } from '@clerk/nextjs/server'; import { initTRPC, TRPCError } from '@trpc/server'; import superjson from 'superjson'; import { ZodError } from 'zod'; interface CreateContextOptions { - session: ReturnType | null; + session: ReturnType | null; } const t = initTRPC.context().create({ @@ -25,15 +26,24 @@ export const createTRPCRouter = t.router; export const publicProcedure = t.procedure; -const enforceUserIsAuthed = t.middleware(({ ctx, next }) => { +const enforceUserIsAuthed = t.middleware(async ({ ctx, next }) => { if (!ctx.session?.userId) { - throw new TRPCError({ code: 'UNAUTHORIZED' }); + throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Not authenticated' }); + } + try { + const user = await clerkClient.users.getUser(ctx.session.userId); + return next({ + ctx: { + session: { ...ctx.session, user }, + }, + }); + } catch (error) { + console.error('Failes to get user', error); + throw new TRPCError({ + code: 'UNAUTHORIZED', + message: 'Failed to get user', + }); } - return next({ - ctx: { - session: { ...ctx.session, user: ctx.session.user }, - }, - }); }); export const protectedProcedure = t.procedure.use(enforceUserIsAuthed);