From 96829e37f814d3e731a1f037b93a2220af16449f Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Tue, 20 Feb 2024 15:27:40 +0000 Subject: feature: Basic support for demo mode --- packages/web/server/api/trpc.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'packages/web/server/api') diff --git a/packages/web/server/api/trpc.ts b/packages/web/server/api/trpc.ts index 7c4af452..e57d40d6 100644 --- a/packages/web/server/api/trpc.ts +++ b/packages/web/server/api/trpc.ts @@ -1,3 +1,4 @@ +import serverConfig from "@hoarder/shared/config"; import { TRPCError, initTRPC } from "@trpc/server"; import { User } from "next-auth"; import superjson from "superjson"; @@ -16,10 +17,18 @@ const t = initTRPC.context().create({ export const createCallerFactory = t.createCallerFactory; // Base router and procedure helpers export const router = t.router; -export const procedure = t.procedure; -export const publicProcedure = t.procedure; +export const procedure = t.procedure.use(function isDemoMode(opts) { + if (serverConfig.demoMode && opts.type == "mutation") { + throw new TRPCError({ + message: "Mutations are not allowed in demo mode", + code: "FORBIDDEN", + }); + } + return opts.next(); +}); +export const publicProcedure = procedure; -export const authedProcedure = t.procedure.use(function isAuthed(opts) { +export const authedProcedure = procedure.use(function isAuthed(opts) { const user = opts.ctx.user; if (!user) { -- cgit v1.2.3-70-g09d2