diff --git a/environment.d.ts b/environment.d.ts index 727c484..813475a 100644 --- a/environment.d.ts +++ b/environment.d.ts @@ -4,6 +4,7 @@ declare global { NODE_ENV: 'test'; ENV: 'local' | 'stg' | 'prd' | 'test'; LOCAL_ENV: 'stg' | 'prd'; + CLOUD_ENVIRONMENT: 'aws' | 'gcp' | 'mgc'; DUC_URL: string; INFACTORY_URL: string; diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 5ed9381..47b1a9a 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -52,6 +52,7 @@ import jwt from 'jsonwebtoken'; import { LanguageEnum } from 'src/utils/languages.enum'; import { Language } from 'src/decorators/language.decorator'; import { ApiInternalOnlyEndpoint } from 'src/decorators/swagger.decorator'; +import { getFrontendUrl } from 'src/utils/getFrontendBaseUrl'; @ApiTags('Auth') @ApiHeaders([{ name: 'dadosfera-lang', enum: LanguageEnum, required: false }]) @@ -59,7 +60,7 @@ import { ApiInternalOnlyEndpoint } from 'src/decorators/swagger.decorator'; @Controller('auth') export class AuthController { logger: DadosferaLogger; - redirectUrl: string; + frontendRedirectUrl: URL; constructor( @Inject(DadosferaLogger) @@ -67,17 +68,7 @@ export class AuthController { private authClient: AuthClientService, ) { this.logger = dadosferaLogger.logger; - - switch (process.env.ENV) { - case 'stg': - this.redirectUrl = `https://app.${process.env.ENV}.dadosfera.ai/auth/login`; - break; - case 'prd': - this.redirectUrl = `https://app.dadosfera.ai/auth/login`; - break; - default: - this.redirectUrl = `http://localhost:4200/auth/login`; - } + this.frontendRedirectUrl = getFrontendUrl('/auth/login'); } @Post('sign-in') @@ -377,7 +368,7 @@ export class AuthController { async callback(req: Request, oauth_type?: 'google' | 'magalu-id') { const { error, state } = req.query; const { authInfo } = req; - const url = new URL(this.redirectUrl); + const url = this.frontendRedirectUrl; let email, token, refreshToken, error_title, error_description; let language: 'pt-br' | 'en-us' = 'pt-br'; diff --git a/src/utils/getFrontendBaseUrl.ts b/src/utils/getFrontendBaseUrl.ts new file mode 100644 index 0000000..e4eabe5 --- /dev/null +++ b/src/utils/getFrontendBaseUrl.ts @@ -0,0 +1,20 @@ +import getEnv from './getEnv'; + +export function getFrontendUrl(path?: string): URL { + const frontendUrl = new URL('https://app.dadosfera.ai'); + if (path) frontendUrl.pathname = path; + + const env = getEnv(); + if (process.env.ENV === 'local') { + frontendUrl.protocol = 'http'; + frontendUrl.host = 'localhost:4200'; + return frontendUrl; + } + + if (process.env.CLOUD_ENVIRONMENT === 'mgc') + frontendUrl.host = 'app.dadosfera.com'; + + if (env !== 'prd') + frontendUrl.host = frontendUrl.host.replace('app.', `app.${env}.`); + return frontendUrl; +}