diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-20 15:27:40 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-20 15:27:40 +0000 |
| commit | 96829e37f814d3e731a1f037b93a2220af16449f (patch) | |
| tree | c18bedb6fbb97dd6ec64e88ec99385c5beadf855 /packages/web/server/api/trpc.ts | |
| parent | 8618f31a548e2266b05b47d62bba2a3003184ace (diff) | |
| download | karakeep-96829e37f814d3e731a1f037b93a2220af16449f.tar.zst | |
feature: Basic support for demo mode
Diffstat (limited to '')
| -rw-r--r-- | packages/web/server/api/trpc.ts | 15 |
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) { |
