diff --git a/packages/hoppscotch-backend/src/errors.ts b/packages/hoppscotch-backend/src/errors.ts index 16673ec98..451aab645 100644 --- a/packages/hoppscotch-backend/src/errors.ts +++ b/packages/hoppscotch-backend/src/errors.ts @@ -28,6 +28,24 @@ export const JSON_INVALID = 'json_invalid'; */ export const AUTH_PROVIDER_NOT_SPECIFIED = 'auth/provider_not_specified'; +/** + * Environment variable "ALLOWED_AUTH_PROVIDERS" is not present in .env file + */ +export const ENV_NOT_FOUND_KEY_AUTH_PROVIDERS = + '"ALLOWED_AUTH_PROVIDERS" is not present in .env file'; + +/** + * Environment variable "ALLOWED_AUTH_PROVIDERS" is empty in .env file + */ +export const ENV_EMPTY_AUTH_PROVIDERS = + '"ALLOWED_AUTH_PROVIDERS" is empty in .env file'; + +/** + * Environment variable "ALLOWED_AUTH_PROVIDERS" contains unsupported provider in .env file + */ +export const ENV_NOT_SUPPORT_AUTH_PROVIDERS = + '"ALLOWED_AUTH_PROVIDERS" contains an unsupported auth provider in .env file'; + /** * Tried to delete a user data document from fb firestore but failed. * (FirebaseService) diff --git a/packages/hoppscotch-backend/src/main.ts b/packages/hoppscotch-backend/src/main.ts index e5b27af88..3eca997e0 100644 --- a/packages/hoppscotch-backend/src/main.ts +++ b/packages/hoppscotch-backend/src/main.ts @@ -5,35 +5,7 @@ import * as cookieParser from 'cookie-parser'; import { VersioningType } from '@nestjs/common'; import * as session from 'express-session'; import { emitGQLSchemaFile } from './gql-schema'; -import { AuthProvider } from './auth/helper'; - -function checkEnvironmentAuthProvider() { - if (!process.env.hasOwnProperty('ALLOWED_AUTH_PROVIDERS')) { - console.log(`"ALLOWED_AUTH_PROVIDERS" is not present in .env file`); - process.exit(1); - } - - if (process.env.ALLOWED_AUTH_PROVIDERS === '') { - console.log(`"ALLOWED_AUTH_PROVIDERS" is empty in .env file`); - process.exit(1); - } - - const givenAuthProviders = process.env.ALLOWED_AUTH_PROVIDERS.split(',').map( - (provider) => provider.toLocaleUpperCase(), - ); - const supportedAuthProviders = Object.values(AuthProvider).map( - (provider: string) => provider.toLocaleUpperCase(), - ); - - for (const givenAuthProvider of givenAuthProviders) { - if (!supportedAuthProviders.includes(givenAuthProvider)) { - console.error( - `Environment variable "ALLOWED_AUTH_PROVIDERS" contains an unsupported auth provider "${givenAuthProvider}".`, - ); - process.exit(1); - } - } -} +import { checkEnvironmentAuthProvider } from './utils'; async function bootstrap() { console.log(`Running in production: ${process.env.PRODUCTION}`); diff --git a/packages/hoppscotch-backend/src/utils.ts b/packages/hoppscotch-backend/src/utils.ts index a10349bea..c095683d1 100644 --- a/packages/hoppscotch-backend/src/utils.ts +++ b/packages/hoppscotch-backend/src/utils.ts @@ -9,7 +9,8 @@ import * as E from 'fp-ts/Either'; import * as A from 'fp-ts/Array'; import { TeamMemberRole } from './team/team.model'; import { User } from './user/user.model'; -import { JSON_INVALID } from './errors'; +import { ENV_EMPTY_AUTH_PROVIDERS, ENV_NOT_FOUND_KEY_AUTH_PROVIDERS, ENV_NOT_SUPPORT_AUTH_PROVIDERS, JSON_INVALID } from './errors'; +import { AuthProvider } from './auth/helper'; /** * A workaround to throw an exception in an expression. @@ -152,3 +153,31 @@ export function isValidLength(title: string, length: number) { return true; } + +/** + * This function is called by bootstrap() in main.ts + * It checks if the "ALLOWED_AUTH_PROVIDERS" environment variable is properly set or not. + * If not, it throws an error. + */ +export function checkEnvironmentAuthProvider() { + if (!process.env.hasOwnProperty('ALLOWED_AUTH_PROVIDERS')) { + throw new Error(ENV_NOT_FOUND_KEY_AUTH_PROVIDERS); + } + + if (process.env.ALLOWED_AUTH_PROVIDERS === '') { + throw new Error(ENV_EMPTY_AUTH_PROVIDERS); + } + + const givenAuthProviders = process.env.ALLOWED_AUTH_PROVIDERS.split(',').map( + (provider) => provider.toLocaleUpperCase(), + ); + const supportedAuthProviders = Object.values(AuthProvider).map( + (provider: string) => provider.toLocaleUpperCase(), + ); + + for (const givenAuthProvider of givenAuthProviders) { + if (!supportedAuthProviders.includes(givenAuthProvider)) { + throw new Error(ENV_NOT_SUPPORT_AUTH_PROVIDERS); + } + } +}