Spaces:
Sleeping
Sleeping
| 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<TrpcContext>().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, | |
| }, | |
| }); | |
| }), | |
| ); | |