From 5b2c870d86f8edd871bf1f4e1b839f2d29772f06 Mon Sep 17 00:00:00 2001 From: Riley Evans Date: Tue, 26 Mar 2024 17:54:20 -0500 Subject: [PATCH] fix(Designer): Resolve all app settings except key vault reference values (#4459) Resolve all app settings except key vault references as values Co-authored-by: Riley Evans --- .../Utilities/Workflow.ts | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/apps/designer-standalone/src/app/AzureLogicAppsDesigner/Utilities/Workflow.ts b/apps/designer-standalone/src/app/AzureLogicAppsDesigner/Utilities/Workflow.ts index 22742a5e566..578c899c77a 100644 --- a/apps/designer-standalone/src/app/AzureLogicAppsDesigner/Utilities/Workflow.ts +++ b/apps/designer-standalone/src/app/AzureLogicAppsDesigner/Utilities/Workflow.ts @@ -76,8 +76,10 @@ export class WorkflowUtility { if (appsettings) { for (const settingName of Object.keys(appsettings)) { const settingValue = appsettings[settingName] !== undefined ? appsettings[settingName] : ''; - result = replaceOccurrenceInResourceIds(result, `@appsetting('${settingName}')`, settingValue); - result = replaceOccurrenceInResourceIds(result, `@{appsetting('${settingName}')}`, settingValue); + // Don't replace if the setting value is a KeyVault reference + if (settingValue.startsWith('@Microsoft.KeyVault(')) continue; + result = replaceAllOccurrences(result, `@appsetting('${settingName}')`, settingValue); + result = replaceAllOccurrences(result, `@{appsetting('${settingName}')}`, settingValue); } } @@ -116,21 +118,3 @@ function replaceIfFoundAndVerifyJson(stringifiedJson: string, searchValue: strin return undefined; } } - -function replaceOccurrenceInResourceIds(_inputString: string, settingName: string, settingValue: string): string { - let inputString = _inputString; - const resourceIdRegex = /\/subscriptions\/[^"]+"/g; - const resourceIds = inputString.match(resourceIdRegex); - - // If no resource ids are found, return the original string - if (!resourceIds) return inputString; - - for (const resourceId of resourceIds) { - if (resourceId.includes(settingName)) { - const replacedString = resourceId.replace(settingName, settingValue); - // Replace the original resource id in the input string with the replaced string - inputString = inputString.replace(resourceId, replacedString); - } - } - return inputString; -}