diff --git a/docsfera.json b/docsfera.json index 2f09773..0bff3cc 100644 --- a/docsfera.json +++ b/docsfera.json @@ -6062,6 +6062,24 @@ } } }, + "/identity-providers/links": { + "get": { + "operationId": "IdentityProviderController_providerLinks", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, "/network-policy": { "get": { "operationId": "NetworkPolicyController_getNetworks", @@ -6370,12 +6388,16 @@ "refreshToken": { "type": "string" }, + "accessToken": { + "type": "string" + }, "customerName": { "type": "string" } }, "required": [ "refreshToken", + "accessToken", "customerName" ] }, diff --git a/package-lock.json b/package-lock.json index e6aa1e6..5067f64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@aws-sdk/client-secrets-manager": "^3.414.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", "@dadosfera/protospack": "2.5.3", - "@dadosfera/protospack-v2": "3.38.0-beta.7", + "@dadosfera/protospack-v2": "3.38.0-beta.8", "@grpc/grpc-js": "^1.9.3", "@grpc/proto-loader": "^0.7.9", "@nestjs/cli": "^9.5.0", @@ -1407,9 +1407,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.38.0-beta.7", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.38.0-beta.7.tgz", - "integrity": "sha512-Lp+hW/F/F9gMtrwBJCpFS8ekVfpEP4av8u8OQKSnTz8Cxc7MXC7OxD1BdKi0m05GuVpWEa5aCe+ZLWq0mhhjDw==", + "version": "3.38.0-beta.8", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.38.0-beta.8.tgz", + "integrity": "sha512-8hEJnfFtKKLn7DqvkOi27GpXZkin6PodTvFbQJIplzcsxuurWNmtvWDmNRavm/SYJcotv4kTJkxnCPOKJqYYpA==", "license": "ISC", "dependencies": { "@grpc/grpc-js": "^1.9.3", diff --git a/package.json b/package.json index e7aae5b..e142271 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@aws-sdk/client-secrets-manager": "^3.414.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", "@dadosfera/protospack": "2.5.3", - "@dadosfera/protospack-v2": "3.38.0-beta.7", + "@dadosfera/protospack-v2": "3.38.0-beta.8", "@grpc/grpc-js": "^1.9.3", "@grpc/proto-loader": "^0.7.9", "@nestjs/cli": "^9.5.0", diff --git a/src/modules/identity-provider/identity-provider.controller.ts b/src/modules/identity-provider/identity-provider.controller.ts index cc8bc9b..75807d8 100644 --- a/src/modules/identity-provider/identity-provider.controller.ts +++ b/src/modules/identity-provider/identity-provider.controller.ts @@ -144,6 +144,21 @@ export class IdentityProviderController { return await this.identityProviderService.getTokenByIdp(code, state); } + @Get('/links') + @HttpCode(HttpStatus.OK) + async providerLinks(@Req() req: Request) { + this.logger.info('GET /identity-providers/links'); + + const frontDomain = req.headers['origin'] as string; + + if (!frontDomain) { + throw new Error(ErrorCodes.IDENTITY_PROVIDER.INVALID_HEADER); + } + + const result = await this.identityProviderService.identityProvidersLinksPerDomain(frontDomain); + return result; + } + @Get(':id') @HttpCode(HttpStatus.OK) @Redirect() @@ -156,4 +171,5 @@ export class IdentityProviderController { url: redirectUrl, }; } + } diff --git a/src/modules/identity-provider/identity-provider.service.ts b/src/modules/identity-provider/identity-provider.service.ts index 28eb5fa..22cf673 100644 --- a/src/modules/identity-provider/identity-provider.service.ts +++ b/src/modules/identity-provider/identity-provider.service.ts @@ -153,4 +153,10 @@ export class IdentityProviderService implements OnModuleInit { ); } + async identityProvidersLinksPerDomain(frontDomain: string) { + return await lastValueFrom( + this.identityProviderService.GetProviderLinksFromDomain({ frontDomain }), + ); + } + } diff --git a/src/utils/errorCodes.ts b/src/utils/errorCodes.ts index 6d08b17..a5856bd 100644 --- a/src/utils/errorCodes.ts +++ b/src/utils/errorCodes.ts @@ -77,6 +77,7 @@ const CATALOG = { }; const IDENTITY_PROVIDER = { INVALID_RESPONSE: 'IDENTITY_PROVIDER.INVALID_RESPONSE', + INVALID_HEADER: 'IDENTITY_PROVIDER.INVALID_HEADER', } const ErrorCodes = { UNKNOWN: 'UNKNOWN',