aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/shared/config.ts20
-rw-r--r--packages/trpc/routers/users.ts7
2 files changed, 12 insertions, 15 deletions
diff --git a/packages/shared/config.ts b/packages/shared/config.ts
index 3126fa68..25806ae0 100644
--- a/packages/shared/config.ts
+++ b/packages/shared/config.ts
@@ -1,21 +1,7 @@
-function buildAuthentikConfig() {
- const { AUTHENTIK_ID, AUTHENTIK_SECRET, AUTHENTIK_ISSUER } = process.env;
-
- if (!AUTHENTIK_ID || !AUTHENTIK_SECRET || !AUTHENTIK_ISSUER) {
- return undefined;
- }
-
- return {
- clientId: AUTHENTIK_ID,
- clientSecret: AUTHENTIK_SECRET,
- issuer: AUTHENTIK_ISSUER,
- };
-}
-
const serverConfig = {
apiUrl: process.env.API_URL ?? "http://localhost:3000",
auth: {
- authentik: buildAuthentikConfig(),
+ disableSignups: (process.env.DISABLE_SIGNUPS ?? "false") == "true",
},
openAI: {
apiKey: process.env.OPENAI_API_KEY,
@@ -40,8 +26,12 @@ const serverConfig = {
dataDir: process.env.DATA_DIR ?? "",
};
+// Always explicitly pick up stuff from server config to avoid accidentally leaking stuff
export const clientConfig = {
demoMode: serverConfig.demoMode,
+ auth: {
+ disableSignups: serverConfig.auth.disableSignups,
+ }
};
export type ClientConfig = typeof clientConfig;
diff --git a/packages/trpc/routers/users.ts b/packages/trpc/routers/users.ts
index db06c0ad..1e7a83a6 100644
--- a/packages/trpc/routers/users.ts
+++ b/packages/trpc/routers/users.ts
@@ -5,6 +5,7 @@ import { z } from "zod";
import { SqliteError } from "@hoarder/db";
import { users } from "@hoarder/db/schema";
+import serverConfig from "@hoarder/shared/config";
import { hashPassword, validatePassword } from "../auth";
import {
@@ -27,6 +28,12 @@ export const usersAppRouter = router({
}),
)
.mutation(async ({ input, ctx }) => {
+ if (serverConfig.auth.disableSignups) {
+ throw new TRPCError({
+ code: "FORBIDDEN",
+ message: "Signups are disabled in server config",
+ });
+ }
// TODO: This is racy, but that's probably fine.
const [{ count: userCount }] = await ctx.db
.select({ count: count() })