From 4477647613f309345bdbb5644ce13b15255ff346 Mon Sep 17 00:00:00 2001 From: marcos-silva-rodrigues Date: Wed, 16 Jul 2025 18:15:47 -0300 Subject: [PATCH] FIX: send redirect uri --- .../identity-provider.controller.ts | 15 ++++++++++----- .../identity-provider.service.ts | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/modules/identity-provider/identity-provider.controller.ts b/src/modules/identity-provider/identity-provider.controller.ts index b0f75fa..5ceed8b 100644 --- a/src/modules/identity-provider/identity-provider.controller.ts +++ b/src/modules/identity-provider/identity-provider.controller.ts @@ -8,7 +8,6 @@ import { HttpStatus, Inject, Param, - Patch, Post, Put, Redirect, @@ -155,9 +154,8 @@ export class IdentityProviderController { } const origin = req.headers['origin'] as string; - const langHeader = req.headers['dadosfera-lang'] as string; - const lang = langHeader.substring(0, 2) + langHeader.substring(2).toUpperCase(); + const lang = language.substring(0, 2) + language.substring(2).toUpperCase(); const callbackUrl = process.env.ENV !== "prd" ? `${origin}/auth/callback` : `${origin}/${lang}/auth/callback`; return await this.identityProviderService.getTokenByIdp(code, state, callbackUrl); @@ -184,11 +182,18 @@ export class IdentityProviderController { @Get(':id') @HttpCode(HttpStatus.OK) @Redirect() - async loginIdp(@Param('id') id: string) { + async loginIdp(@Param('id') id: string, @Req() req: Request, @Language() language: LanguageEnum) { this.logger.info('GET /identity-providers/:id'); + + const origin = req.headers['origin'] as string || req.headers['referer'] as string; + console.log('Origin:', origin); + + const lang = language.substring(0, 2) + language.substring(2).toUpperCase(); + const callbackUrl = process.env.ENV !== "prd" ? `${origin}/auth/callback` : `${origin}/${lang}/auth/callback`; + const redirectUrl = - await this.identityProviderService.loginIdentityProvider(id); + await this.identityProviderService.loginIdentityProvider(id, callbackUrl); this.logger.info(`Redirecting to: ${redirectUrl}`); return { diff --git a/src/modules/identity-provider/identity-provider.service.ts b/src/modules/identity-provider/identity-provider.service.ts index 456343c..4cca0fe 100644 --- a/src/modules/identity-provider/identity-provider.service.ts +++ b/src/modules/identity-provider/identity-provider.service.ts @@ -44,7 +44,7 @@ export class IdentityProviderService implements OnModuleInit { ); } - async loginIdentityProvider(id: string) { + async loginIdentityProvider(id: string, callbackUrl: string) { const idp = await lastValueFrom( this.identityProviderService.FindIdentityProvider({ id }), ); @@ -83,6 +83,7 @@ export class IdentityProviderService implements OnModuleInit { code_challenge_method: 'S256', state, nonce, + redirect_uri: callbackUrl, }); const idpUrl = url + '&identity_provider=' + idp.name; return idpUrl;