import { NOT_ADMIN_ERR_MSG, UNAUTHED_ERR_MSG } from '@shared/const'; import { initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; import type { TrpcContext } from "./context"; const t = initTRPC.context().create({ transformer: superjson, }); export const router = t.router; export const publicProcedure = t.procedure; const requireUser = t.middleware(async opts => { const { ctx, next } = opts; if (!ctx.user) { // Temporary bypass for login: inject a mock user const mockUser = { id: 'direct-access-user', name: 'Guest User', role: 'admin' }; return next({ ctx: { ...ctx, user: mockUser, }, }); } return next({ ctx: { ...ctx, user: ctx.user, }, }); }); export const protectedProcedure = t.procedure.use(requireUser); export const adminProcedure = t.procedure.use( t.middleware(async opts => { const { ctx, next } = opts; if (!ctx.user) { // Temporary bypass for admin check const mockUser = { id: 'direct-access-user', name: 'Guest User', role: 'admin' }; return next({ ctx: { ...ctx, user: mockUser, }, }); } return next({ ctx: { ...ctx, user: ctx.user, }, }); }), );