From b1abcf06ddef85da1eecd7fe8491cdce137effbc Mon Sep 17 00:00:00 2001 From: Dries Augustyns Date: Sat, 3 Aug 2024 21:34:23 +0200 Subject: [PATCH] Added ability to disable signups through environment variable --- packages/api/.env.example | 1 + packages/api/src/app/constants.ts | 1 + packages/api/src/controllers/Auth.ts | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/packages/api/.env.example b/packages/api/.env.example index c56c733..1215bdb 100644 --- a/packages/api/.env.example +++ b/packages/api/.env.example @@ -2,6 +2,7 @@ JWT_SECRET=mysupersecretJWTsecret REDIS_URL=redis://127.0.0.1:56379 DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres +DISABLE_SIGNUPS=false # AWS AWS_REGION= diff --git a/packages/api/src/app/constants.ts b/packages/api/src/app/constants.ts index bca1148..0647b0b 100644 --- a/packages/api/src/app/constants.ts +++ b/packages/api/src/app/constants.ts @@ -21,6 +21,7 @@ export const JWT_SECRET = validateEnv("JWT_SECRET"); export const NODE_ENV = validateEnv<"development" | "production">("NODE_ENV", "production"); export const REDIS_URL = validateEnv("REDIS_URL"); +export const DISABLE_SIGNUPS = validateEnv<"true" | "false">("DISABLE_SIGNUPS", "false") === "true"; // URLs export const API_URI = validateEnv("API_URI", "http://localhost:4000"); diff --git a/packages/api/src/controllers/Auth.ts b/packages/api/src/controllers/Auth.ts index 6a3b81b..4884a17 100644 --- a/packages/api/src/controllers/Auth.ts +++ b/packages/api/src/controllers/Auth.ts @@ -1,6 +1,7 @@ import { Controller, Get, Post } from "@overnightjs/core"; import { UserSchemas, UtilitySchemas } from "@plunk/shared"; import type { Request, Response } from "express"; +import { DISABLE_SIGNUPS } from "../app/constants"; import { prisma } from "../database/prisma"; import { NotAllowed, NotFound } from "../exceptions"; import { jwt } from "../middleware/auth"; @@ -47,6 +48,13 @@ export class Auth { @Post("signup") public async signup(req: Request, res: Response) { + if (DISABLE_SIGNUPS) { + return res.json({ + success: false, + data: "Signups are currently disabled", + }); + } + const { email, password } = UserSchemas.credentials.parse(req.body); const user = await UserService.email(email);