From 76bb14c64d05631a2dcddcda2d985b091fe57f18 Mon Sep 17 00:00:00 2001 From: Aditya Pandey Date: Sat, 3 Aug 2024 22:15:36 +0530 Subject: [PATCH 1/6] Update auth.controller.ts Signed-off-by: Aditya Pandey --- apps/api/src/app/auth/auth.controller.ts | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/apps/api/src/app/auth/auth.controller.ts b/apps/api/src/app/auth/auth.controller.ts index db77ed587..bea95a6ba 100644 --- a/apps/api/src/app/auth/auth.controller.ts +++ b/apps/api/src/app/auth/auth.controller.ts @@ -100,17 +100,23 @@ export class AuthController { response.contentType('text').send(); } - @Post('/register') - async register(@Body() body: RegisterUserDto, @Res() response: Response) { - const registeredUser = await this.registerUser.execute(RegisterUserCommand.create(body)); + @Post('/register') +async register(@Body() body: RegisterUserDto, @Res() response: Response) { + if (process.env.DISABLE_USER_REGISTRATION === 'true') { + response.status(403).send({ message: 'Account creation is disabled' }); + return; + } - response.cookie(CONSTANTS.AUTH_COOKIE_NAME, registeredUser.token, { - ...COOKIE_CONFIG, - domain: process.env.COOKIE_DOMAIN, - }); + const registeredUser = await this.registerUser.execute(RegisterUserCommand.create(body)); + + response.cookie(CONSTANTS.AUTH_COOKIE_NAME, registeredUser.token, { + ...COOKIE_CONFIG, + domain: process.env.COOKIE_DOMAIN, + }); + + response.send(registeredUser); +} - response.send(registeredUser); - } @Post('/login') async login(@Body() body: LoginUserDto, @Res() response: Response) { From 220b57f481445101b1aa9f43802d6f3a1a12bbe2 Mon Sep 17 00:00:00 2001 From: Aditya Pandey Date: Sat, 3 Aug 2024 22:19:19 +0530 Subject: [PATCH 2/6] Update auth.controller.ts Signed-off-by: Aditya Pandey --- apps/api/src/app/auth/auth.controller.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/apps/api/src/app/auth/auth.controller.ts b/apps/api/src/app/auth/auth.controller.ts index bea95a6ba..9bc258a5b 100644 --- a/apps/api/src/app/auth/auth.controller.ts +++ b/apps/api/src/app/auth/auth.controller.ts @@ -42,17 +42,12 @@ export class AuthController { private requestForgotPassword: RequestForgotPassword ) {} - @Get('/github') - githubAuth() { - if (!process.env.GITHUB_OAUTH_CLIENT_ID || !process.env.GITHUB_OAUTH_CLIENT_SECRET) { - throw new ApiException( - 'GitHub auth is not configured, please provide GITHUB_OAUTH_CLIENT_ID and GITHUB_OAUTH_CLIENT_SECRET as env variables' - ); - } - - return { - success: true, - }; + @Post('/github') +async githubAuth(@Body() body: RegisterUserDto, @Res() response: Response) { + if (process.env.DISABLE_USER_REGISTRATION === 'true') { + response.status(403).send({ message: 'Account creation is disabled' }); + return; + } } @Get('/github/callback') From b9f3cd1e062093d61c0f796fc84aab41a47f80ef Mon Sep 17 00:00:00 2001 From: Aditya Pandey Date: Sat, 3 Aug 2024 22:22:02 +0530 Subject: [PATCH 3/6] Update env-validator.ts Signed-off-by: Aditya Pandey --- apps/api/src/config/env-validator.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/api/src/config/env-validator.ts b/apps/api/src/config/env-validator.ts index 6c55b1605..703d1b371 100644 --- a/apps/api/src/config/env-validator.ts +++ b/apps/api/src/config/env-validator.ts @@ -3,12 +3,17 @@ import * as envalid from 'envalid'; import { ENVTypesEnum } from '@impler/shared'; // eslint-disable-next-line @typescript-eslint/no-explicit-any -const validators: { [K in keyof any]: ValidatorSpec } = { +export const validators: { [K in keyof any]: ValidatorSpec } = { JWT_SECRET: str(), NODE_ENV: str({ choices: [ENVTypesEnum.LOCAL, ENVTypesEnum.TEST, ENVTypesEnum.PROD, ENVTypesEnum.CI, ENVTypesEnum.LOCAL], default: ENVTypesEnum.LOCAL, }), + DISABLE_USER_REGISTRATION: bool({ + default: false, + desc: 'Flag to disable user registration', + }), +}; S3_LOCAL_STACK: str(), S3_BUCKET_NAME: str(), S3_REGION: str(), From 378a3865d6aa0b807aecb746e063e983c50ffcdf Mon Sep 17 00:00:00 2001 From: Aditya Pandey Date: Sat, 3 Aug 2024 22:24:56 +0530 Subject: [PATCH 4/6] Update docker-compose.yml Signed-off-by: Aditya Pandey --- docker/docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 423bd50eb..444086b02 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -25,6 +25,7 @@ services: environment: NODE_ENV: ${NODE_ENV} PORT: ${API_PORT} + DISABLE_USER_REGISTRATION: ${DISABLE_USER_REGISTRATION} WIDGET_BASE_URL: ${WIDGET_BASE_URL} WEB_BASE_URL: ${WEB_BASE_URL} MONGO_URL: ${MONGO_URL} @@ -129,4 +130,4 @@ services: volumes: mongodb: ~ networks: - impler: \ No newline at end of file + impler: From 2a8e0bc5d8f957dfcfbcc1b8693ee56e73b2ab86 Mon Sep 17 00:00:00 2001 From: Aditya Pandey Date: Sat, 3 Aug 2024 22:27:16 +0530 Subject: [PATCH 5/6] Update .env.example Signed-off-by: Aditya Pandey --- docker/.env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/.env.example b/docker/.env.example index 743d75054..443fd7b15 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -5,6 +5,7 @@ JWT_SECRET=SUPER-SECRET NODE_ENV=local MONGO_URL=mongodb://mongodb:27017/impler RABBITMQ_CONN_URL=amqp://guest:guest@rabbitmq:5672 +DISABLE_USER_REGISTRATION=false # AWS S3_LOCAL_STACK=http://localhost:4566 From 0e81905c1d84d3149c6fd9af894a50b8c081de63 Mon Sep 17 00:00:00 2001 From: Aditya Pandey Date: Wed, 14 Aug 2024 11:34:22 +0530 Subject: [PATCH 6/6] Update env-validator.ts Signed-off-by: Aditya Pandey --- apps/api/src/config/env-validator.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/api/src/config/env-validator.ts b/apps/api/src/config/env-validator.ts index 703d1b371..4b2cbe35e 100644 --- a/apps/api/src/config/env-validator.ts +++ b/apps/api/src/config/env-validator.ts @@ -1,4 +1,4 @@ -import { port, str, url, ValidatorSpec } from 'envalid'; +import { port, str, url, ValidatorSpec, bool } from 'envalid'; import * as envalid from 'envalid'; import { ENVTypesEnum } from '@impler/shared'; @@ -13,7 +13,6 @@ export const validators: { [K in keyof any]: ValidatorSpec } = { default: false, desc: 'Flag to disable user registration', }), -}; S3_LOCAL_STACK: str(), S3_BUCKET_NAME: str(), S3_REGION: str(),