aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/server/api/trpc.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-02-20 15:27:40 +0000
committerMohamedBassem <me@mbassem.com>2024-02-20 15:27:40 +0000
commit96829e37f814d3e731a1f037b93a2220af16449f (patch)
treec18bedb6fbb97dd6ec64e88ec99385c5beadf855 /packages/web/server/api/trpc.ts
parent8618f31a548e2266b05b47d62bba2a3003184ace (diff)
downloadkarakeep-96829e37f814d3e731a1f037b93a2220af16449f.tar.zst
feature: Basic support for demo mode
Diffstat (limited to '')
-rw-r--r--packages/web/server/api/trpc.ts15
1 files changed, 12 insertions, 3 deletions
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<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) {