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 | |
| parent | 8618f31a548e2266b05b47d62bba2a3003184ace (diff) | |
| download | karakeep-96829e37f814d3e731a1f037b93a2220af16449f.tar.zst | |
feature: Basic support for demo mode
| -rw-r--r-- | packages/shared/config.ts | 1 | ||||
| -rw-r--r-- | packages/web/.env.sample | 8 | ||||
| -rw-r--r-- | packages/web/app/dashboard/settings/components/AddApiKey.tsx | 1 | ||||
| -rw-r--r-- | packages/web/server/api/trpc.ts | 15 |
4 files changed, 13 insertions, 12 deletions
diff --git a/packages/shared/config.ts b/packages/shared/config.ts index 28828418..6ca7b89d 100644 --- a/packages/shared/config.ts +++ b/packages/shared/config.ts @@ -30,6 +30,7 @@ const serverConfig = { browserUserDataDir: process.env.BROWSER_USER_DATA_DIR, }, logLevel: process.env.LOG_LEVEL || "debug", + demoMode: (process.env.DEMO_MODE ?? "false") == "true", }; export default serverConfig; diff --git a/packages/web/.env.sample b/packages/web/.env.sample deleted file mode 100644 index a48054f0..00000000 --- a/packages/web/.env.sample +++ /dev/null @@ -1,8 +0,0 @@ -DATABASE_URL="file:./dev.db" -NEXTAUTH_URL= -NEXTAUTH_SECRET= - -# Oauth -AUTHENTIK_ID= -AUTHENTIK_SECRET= -AUTHENTIK_ISSUER= diff --git a/packages/web/app/dashboard/settings/components/AddApiKey.tsx b/packages/web/app/dashboard/settings/components/AddApiKey.tsx index 27111b87..a4fd9c25 100644 --- a/packages/web/app/dashboard/settings/components/AddApiKey.tsx +++ b/packages/web/app/dashboard/settings/components/AddApiKey.tsx @@ -30,7 +30,6 @@ import { toast } from "@/components/ui/use-toast"; import { api } from "@/lib/trpc"; import { useState } from "react"; import { Check, Copy } from "lucide-react"; -import LoadingSpinner from "@/components/ui/spinner"; import { ActionButton } from "@/components/ui/action-button"; function ApiKeySuccess({ apiKey }: { apiKey: string }) { 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) { |
