diff --git a/hlx_statics/blocks/getcredential/getcredential.js b/hlx_statics/blocks/getcredential/getcredential.js index 8a10a953..0832e4f3 100644 --- a/hlx_statics/blocks/getcredential/getcredential.js +++ b/hlx_statics/blocks/getcredential/getcredential.js @@ -193,13 +193,13 @@ async function createCredential() { throw new Error('Template configuration missing'); } - // Prepare APIs data + // Prepare APIs data with licenseConfigs from the template response const apis = templateData.apis?.map(api => ({ code: api.code, credentialType: api.credentialType, flowType: api.flowType, licenseConfigs: Array.isArray(api.licenseConfigs) && api.licenseConfigs.length > 0 - ? [{ ...api.licenseConfigs[0], op: 'add' }] + ? [{ id: api.licenseConfigs[0].id, productId: api.licenseConfigs[0].productId, op: 'add' }] : [], })) || []; @@ -343,6 +343,9 @@ async function fetchTemplateEntitlement() { const response = await fetch(url, { method: 'GET', headers }); if (!response.ok) return null; const data = await response.json(); + if (templateData && Array.isArray(data?.apis)) { + templateData.apis = data.apis; + } const userEntitled = data?.userEntitled !== false; const orgEntitled = data?.orgEntitled !== false; const disEntitledReasons = data?.disEntitledReasons; @@ -2110,20 +2113,16 @@ export default async function decorate(block) { renderPageAfterOrgChange = (sourceContainer) => { setLoadingText(loadingContainer, 'Loading...'); navigateTo(sourceContainer, loadingContainer); - if (requestAccessContainer) { - fetchTemplateEntitlement().then(async (entitlement) => { - if (entitlement && (entitlement.userEntitled === false || entitlement.orgEntitled === false)) { - const leftCardKey = getRequestAccessLeftCardKey(entitlement, selectedOrganization, credentialData.RequestAccess); - const profile = await window.adobeIMS?.getProfile().catch(() => null); - updateRequestAccessLeftColumn(requestAccessContainer, credentialData.RequestAccess, leftCardKey, { selectedOrganization, userEmail: profile?.email }); - navigateTo(loadingContainer, requestAccessContainer); - } else { - runFormOrReturnFlow(); - } - }).catch(() => runFormOrReturnFlow()); - } else { - runFormOrReturnFlow(); - } + fetchTemplateEntitlement().then(async (entitlement) => { + if (requestAccessContainer && entitlement && (entitlement.userEntitled === false || entitlement.orgEntitled === false)) { + const leftCardKey = getRequestAccessLeftCardKey(entitlement, selectedOrganization, credentialData.RequestAccess); + const profile = await window.adobeIMS?.getProfile().catch(() => null); + updateRequestAccessLeftColumn(requestAccessContainer, credentialData.RequestAccess, leftCardKey, { selectedOrganization, userEmail: profile?.email }); + navigateTo(loadingContainer, requestAccessContainer); + } else { + runFormOrReturnFlow(); + } + }).catch(() => runFormOrReturnFlow()); }; // Create success card container @@ -2337,17 +2336,16 @@ export default async function decorate(block) { navigateTo(loadingContainer, requestAccessContainer); return; } - // If Request Access config exists, check entitlement first (same as React: !template.userEntitled || !template.orgEntitled -> RequestAccess) - if (requestAccessContainer) { - const entitlement = await fetchTemplateEntitlement(); - if (entitlement && (entitlement.userEntitled === false || entitlement.orgEntitled === false)) { - lastRequestAccessEntitlement = entitlement; - const leftCardKey = getRequestAccessLeftCardKey(entitlement, selectedOrganization, credentialData.RequestAccess); - const profile = await window.adobeIMS?.getProfile().catch(() => null); - updateRequestAccessLeftColumn(requestAccessContainer, credentialData.RequestAccess, leftCardKey, { selectedOrganization, userEmail: profile?.email }); - navigateTo(loadingContainer, requestAccessContainer); - return; - } + // Fetch template data (populates templateData.apis for credential creation) + // and check entitlement (same as React: !template.userEntitled || !template.orgEntitled -> RequestAccess) + const entitlement = await fetchTemplateEntitlement(); + if (requestAccessContainer && entitlement && (entitlement.userEntitled === false || entitlement.orgEntitled === false)) { + lastRequestAccessEntitlement = entitlement; + const leftCardKey = getRequestAccessLeftCardKey(entitlement, selectedOrganization, credentialData.RequestAccess); + const profile = await window.adobeIMS?.getProfile().catch(() => null); + updateRequestAccessLeftColumn(requestAccessContainer, credentialData.RequestAccess, leftCardKey, { selectedOrganization, userEmail: profile?.email }); + navigateTo(loadingContainer, requestAccessContainer); + return; } runFormOrReturnFlow(); }); @@ -2388,22 +2386,19 @@ export default async function decorate(block) { }); return; } - // Same as React: if !template.userEntitled || !template.orgEntitled -> show RequestAccess (RestrictedAccess or EdgeCase) - if (requestAccessContainer) { - fetchTemplateEntitlement().then(async (entitlement) => { - if (entitlement && (entitlement.userEntitled === false || entitlement.orgEntitled === false)) { - lastRequestAccessEntitlement = entitlement; - const leftCardKey = getRequestAccessLeftCardKey(entitlement, selectedOrganization, credentialData.RequestAccess); - const profile = await window.adobeIMS?.getProfile().catch(() => null); - updateRequestAccessLeftColumn(requestAccessContainer, credentialData.RequestAccess, leftCardKey, { selectedOrganization, userEmail: profile?.email }); - navigateTo(loadingContainer, requestAccessContainer); - return; - } - runFormOrReturnFlow(); - }).catch(() => runFormOrReturnFlow()); - } else { + // Fetch template data (populates templateData.apis for credential creation) + // and check entitlement (same as React: !template.userEntitled || !template.orgEntitled -> RequestAccess) + fetchTemplateEntitlement().then(async (entitlement) => { + if (requestAccessContainer && entitlement && (entitlement.userEntitled === false || entitlement.orgEntitled === false)) { + lastRequestAccessEntitlement = entitlement; + const leftCardKey = getRequestAccessLeftCardKey(entitlement, selectedOrganization, credentialData.RequestAccess); + const profile = await window.adobeIMS?.getProfile().catch(() => null); + updateRequestAccessLeftColumn(requestAccessContainer, credentialData.RequestAccess, leftCardKey, { selectedOrganization, userEmail: profile?.email }); + navigateTo(loadingContainer, requestAccessContainer); + return; + } runFormOrReturnFlow(); - } + }).catch(() => runFormOrReturnFlow()); } } };