From 64107150e8edb49e83cbd081ea3b2a05a8b52cea Mon Sep 17 00:00:00 2001 From: Oleksandr Dubenko Date: Fri, 10 Jul 2026 11:28:50 -0400 Subject: [PATCH] frontend: app: Add scriptjs permission to az-auth plugin --- app/electron/main.ts | 2 ++ app/electron/plugin-management.ts | 3 +- app/electron/runCmd.ts | 7 +++++ frontend/src/plugin/index.ts | 26 +++++++++++++++++ frontend/src/plugin/runPlugin.test.ts | 41 +++++++++++++++++++++++++++ frontend/src/plugin/runPlugin.ts | 2 ++ 6 files changed, 80 insertions(+), 1 deletion(-) diff --git a/app/electron/main.ts b/app/electron/main.ts index 124372e2f..d567a5eb7 100644 --- a/app/electron/main.ts +++ b/app/electron/main.ts @@ -1518,6 +1518,8 @@ async function startElectron() { console.info('App starting...'); // add run cmd consent for aks-desktop to avoid consent dialogs for the aks-desktop plugin addRunCmdConsent({ name: 'aks-desktop' }); + // add run cmd consent for az-auth to avoid consent dialogs for the az-auth plugin + addRunCmdConsent({ name: 'az-auth' }); addRunCmdConsent({ name: 'ai-assistant' }); // Increase max listeners to prevent false positive warnings diff --git a/app/electron/plugin-management.ts b/app/electron/plugin-management.ts index 452e38080..73363e42c 100644 --- a/app/electron/plugin-management.ts +++ b/app/electron/plugin-management.ts @@ -1047,7 +1047,8 @@ function validPluginBinFolder(folder: string): boolean { return ( folder === 'headlamp_minikube' || folder === 'headlamp_minikubeprerelease' || - folder === 'aks-desktop' + folder === 'aks-desktop' || + folder === 'az-auth' ); } diff --git a/app/electron/runCmd.ts b/app/electron/runCmd.ts index 82e981f6e..2f0fa117f 100644 --- a/app/electron/runCmd.ts +++ b/app/electron/runCmd.ts @@ -144,6 +144,7 @@ const COMMANDS_WITH_CONSENT = { 'kubectl top', 'kubectl config', ], + az_auth: ['scriptjs az-auth/azure-api.js'], headlamp_ai_assistant: ['gh auth', 'az account', 'az cognitiveservices'], ai_assistant: ['gh auth', 'az account', 'az cognitiveservices'], }; @@ -184,6 +185,11 @@ export function addRunCmdConsent(pluginInfo: { name: string }): void { commands = COMMANDS_WITH_CONSENT.aks_desktop; } + const pluginIsAzAuth = pluginInfo.name === 'az-auth'; + if (pluginIsAzAuth) { + commands = COMMANDS_WITH_CONSENT.az_auth; + } + const pluginIsAiAssistant = pluginInfo.name === 'ai-assistant'; if (pluginIsAiAssistant) { commands = COMMANDS_WITH_CONSENT.ai_assistant; @@ -489,6 +495,7 @@ export function setupRunCmdHandlers(mainWindow: BrowserWindow | null, ipcMain: E 'runCmd-scriptjs-minikube/manage-minikube.js': cryptoRandom(), 'runCmd-scriptjs-headlamp_minikube/manage-minikube.js': cryptoRandom(), 'runCmd-scriptjs-headlamp_minikubeprerelease/manage-minikube.js': cryptoRandom(), + 'runCmd-scriptjs-az-auth/azure-api.js': cryptoRandom(), 'runCmd-az': cryptoRandom(), 'runCmd-kubectl': cryptoRandom(), 'runCmd-gh': cryptoRandom(), diff --git a/frontend/src/plugin/index.ts b/frontend/src/plugin/index.ts index 755e49ecb..a5f541e1b 100644 --- a/frontend/src/plugin/index.ts +++ b/frontend/src/plugin/index.ts @@ -625,6 +625,11 @@ export async function fetchAndExecutePlugins( secretsToReturn['runCmd-kubectl'] = secrets['runCmd-kubectl']; } + if (isPackage['az-auth']) { + secretsToReturn['runCmd-scriptjs-az-auth/azure-api.js'] = + secrets['runCmd-scriptjs-az-auth/azure-api.js']; + } + if (isPackage['ai-assistant']) { secretsToReturn['runCmd-gh'] = secrets['runCmd-gh']; secretsToReturn['runCmd-az'] = secrets['runCmd-az']; @@ -706,6 +711,27 @@ export async function fetchAndExecutePlugins( ]; } + if (isPackage['az-auth']) { + function pluginRunCommand( + command: 'scriptjs', + args: string[], + options: {} + ): ReturnType { + return internalRunCommand( + command, + args, + options, + allowedPermissions, + pluginDesktopApiSend, + pluginDesktopApiReceive + ); + } + return [ + ['pluginRunCommand', 'pluginPath'], + [pluginRunCommand, pluginPath], + ]; + } + if (isPackage['ai-assistant']) { function pluginRunCommand( command: 'gh' | 'az', diff --git a/frontend/src/plugin/runPlugin.test.ts b/frontend/src/plugin/runPlugin.test.ts index 89412f5df..fb279fd45 100644 --- a/frontend/src/plugin/runPlugin.test.ts +++ b/frontend/src/plugin/runPlugin.test.ts @@ -337,6 +337,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -351,6 +352,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -366,6 +368,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -380,6 +383,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -389,6 +393,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -399,6 +404,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -409,6 +415,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -419,6 +426,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -429,6 +437,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -439,6 +448,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -453,6 +463,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -468,6 +479,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -477,6 +489,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, '@headlamp-k8s/ai-assistant': false, }); }); @@ -488,6 +501,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -503,6 +517,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -517,6 +532,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -531,6 +547,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -545,6 +562,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -555,6 +573,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -569,6 +588,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -583,6 +603,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -593,6 +614,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -603,6 +625,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -617,6 +640,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -631,6 +655,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -645,6 +670,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -659,6 +685,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/ai-assistant': true, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -670,6 +697,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': true, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -680,6 +708,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': true, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -690,6 +719,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': true, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -700,6 +730,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -710,6 +741,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -720,6 +752,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': true, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -730,6 +763,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': true, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -741,6 +775,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': true, + 'az-auth': false, }); }); @@ -751,6 +786,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': true, + 'az-auth': false, }); }); @@ -761,6 +797,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': true, + 'az-auth': false, }); }); @@ -771,6 +808,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -781,6 +819,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': false, + 'az-auth': false, }); }); @@ -791,6 +830,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': true, + 'az-auth': false, }); }); @@ -801,6 +841,7 @@ describe('identifyPackages', () => { '@headlamp-k8s/minikube': false, 'aks-desktop': false, 'ai-assistant': true, + 'az-auth': false, }); }); }); diff --git a/frontend/src/plugin/runPlugin.ts b/frontend/src/plugin/runPlugin.ts index 7021541f6..e0b4d405e 100644 --- a/frontend/src/plugin/runPlugin.ts +++ b/frontend/src/plugin/runPlugin.ts @@ -254,6 +254,7 @@ export function identifyPackages( 'static-plugins/headlamp_ai-assistantprerelease', ], 'aks-desktop': ['plugins/aks-desktop', 'static-plugins/aks-desktop'], + 'az-auth': ['plugins/az-auth', 'static-plugins/az-auth'], 'ai-assistant': ['plugins/ai-assistant', 'static-plugins/ai-assistant'], }; @@ -274,6 +275,7 @@ export function identifyPackages( '@headlamp-k8s/ai-assistantprerelease', ], 'aks-desktop': ['aks-desktop'], + 'az-auth': ['az-auth'], 'ai-assistant': ['ai-assistant'], }; const isPackage: Record = {};