aboutsummaryrefslogtreecommitdiffstats
path: root/packages
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
parent8618f31a548e2266b05b47d62bba2a3003184ace (diff)
downloadkarakeep-96829e37f814d3e731a1f037b93a2220af16449f.tar.zst
feature: Basic support for demo mode
Diffstat (limited to 'packages')
-rw-r--r--packages/shared/config.ts1
-rw-r--r--packages/web/.env.sample8
-rw-r--r--packages/web/app/dashboard/settings/components/AddApiKey.tsx1
-rw-r--r--packages/web/server/api/trpc.ts15
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) {