From 3a5b6e1d25d630c8a9c39a197ecf35ad8729c4c1 Mon Sep 17 00:00:00 2001 From: Simone Camito Date: Tue, 12 Nov 2024 16:00:06 +0100 Subject: [PATCH] add attribute check on delegate and delegator --- .../src/api/catalogApiConverter.ts | 10 ++++++--- .../src/services/catalogService.ts | 22 +++++++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/backend-for-frontend/src/api/catalogApiConverter.ts b/packages/backend-for-frontend/src/api/catalogApiConverter.ts index a04d60189f..6449b47a3b 100644 --- a/packages/backend-for-frontend/src/api/catalogApiConverter.ts +++ b/packages/backend-for-frontend/src/api/catalogApiConverter.ts @@ -92,7 +92,7 @@ export function toBffCatalogDescriptorEService( descriptor: catalogApi.EServiceDescriptor, producerTenant: tenantApi.Tenant, agreement: agreementApi.Agreement | undefined, - requesterTenant: tenantApi.Tenant + requesterTenants: tenantApi.Tenant[] ): bffApi.CatalogDescriptorEService { const activeDescriptor = getLatestActiveDescriptor(eservice); return { @@ -107,8 +107,12 @@ export function toBffCatalogDescriptorEService( technology: eservice.technology, descriptors: getNotDraftDescriptor(eservice).map(toCompactDescriptor), agreement: agreement && toBffCompactAgreement(agreement, eservice), - isMine: isRequesterEserviceProducer(requesterTenant.id, eservice), - hasCertifiedAttributes: hasCertifiedAttributes(descriptor, requesterTenant), + isMine: requesterTenants.some((t) => + isRequesterEserviceProducer(t.id, eservice) + ), + hasCertifiedAttributes: requesterTenants.some((t) => + hasCertifiedAttributes(descriptor, t) + ), isSubscribed: isAgreementSubscribed(agreement), activeDescriptor: activeDescriptor ? toCompactDescriptor(activeDescriptor) diff --git a/packages/backend-for-frontend/src/services/catalogService.ts b/packages/backend-for-frontend/src/services/catalogService.ts index 468a8d66dd..a23c3d1a86 100644 --- a/packages/backend-for-frontend/src/services/catalogService.ts +++ b/packages/backend-for-frontend/src/services/catalogService.ts @@ -62,6 +62,10 @@ import { assertNotDelegatedEservice, assertRequesterIsProducer, } from "./validators.js"; +import { + getAllDelegations, + getTenantsFromDelegation, +} from "./delegationService.js"; export type CatalogService = ReturnType; @@ -528,12 +532,16 @@ export function catalogServiceBuilder( descriptor ); - const requesterTenant = await tenantProcessClient.tenant.getTenant({ - headers, - params: { - id: requesterId, - }, - }); + const requesterTenants = await getTenantsFromDelegation( + tenantProcessClient, + await getAllDelegations(delegationProcessClient, headers, { + delegateIds: [requesterId], + delegationStates: ["ACTIVE"], + kind: "DELEGATED_CONSUMER", + eserviceIds: [eserviceId], + }), + headers + ); const producerTenant = await tenantProcessClient.tenant.getTenant({ headers, params: { @@ -571,7 +579,7 @@ export function catalogServiceBuilder( descriptor, producerTenant, agreement, - requesterTenant + Array.from(requesterTenants, ([, tenant]) => tenant) ), }; },