sfdx-hardis 7.4.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -194,7 +194,7 @@ jobs:
194
194
  NOTIF_API_METRICS_BASIC_AUTH_PASSWORD: ${{ secrets.NOTIF_API_METRICS_BASIC_AUTH_PASSWORD }}
195
195
  run: |
196
196
  echo "Run apex tests against \"$CONFIG_BRANCH\""
197
- git pull origin ${{ matrix.branch }}
197
+ git pull origin ${{ matrix.branch }} || echo "Issue when pulling latest branch state, but that should be ok"
198
198
  sf hardis:auth:login
199
199
  sf hardis:org:test:apex
200
200
 
@@ -236,7 +236,7 @@ jobs:
236
236
  persist-credentials: true
237
237
 
238
238
  - name: Git pull
239
- run: git pull origin ${{ matrix.branch }}
239
+ run: git pull origin ${{ matrix.branch }} || echo "Issue when pulling latest branch state, but that should be ok"
240
240
 
241
241
  # Mega-Linter
242
242
  - name: Mega-Linter
@@ -335,7 +335,7 @@ jobs:
335
335
 
336
336
  run: |
337
337
  echo "Run Monitoring checks against \"$CONFIG_BRANCH\""
338
- git pull origin ${{ matrix.branch }}
338
+ git pull origin ${{ matrix.branch }} || echo "Issue when pulling latest branch state, but that should be ok"
339
339
  sf hardis:auth:login
340
340
  sf hardis:org:monitor:all
341
341
 
@@ -77,7 +77,7 @@ monitoring_tools:
77
77
  before_script:
78
78
  - git config --global user.name "${GITLAB_USER_NAME}"
79
79
  - git config --global user.email "${GITLAB_USER_EMAIL}"
80
- - git pull origin "${CI_COMMIT_REF_NAME}"
80
+ - git pull origin "${CI_COMMIT_REF_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
81
81
  script:
82
82
  # Login & run apex tests
83
83
  - sf hardis:auth:login
@@ -102,7 +102,7 @@ megalinter:
102
102
  before_script:
103
103
  - git config --global user.name "${GITLAB_USER_NAME}"
104
104
  - git config --global user.email "${GITLAB_USER_EMAIL}"
105
- - git pull origin "${CI_COMMIT_REF_NAME}"
105
+ - git pull origin "${CI_COMMIT_REF_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
106
106
  variables:
107
107
  # All available variables are described in documentation
108
108
  # https://megalinter.io/latest/config-file/
@@ -143,7 +143,7 @@ jobs:
143
143
  displayName: Install @salesforce/cli & sfdx-hardis
144
144
 
145
145
  - script: |
146
- git pull origin "${BRANCH_NAME}"
146
+ git pull origin "${BRANCH_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
147
147
  displayName: Pull git branch latest commit
148
148
  env:
149
149
  CI: "true"
@@ -206,7 +206,7 @@ jobs:
206
206
  - script: |
207
207
  git config --global user.email "contact@cloudity.com"
208
208
  git config --global user.name "sfdx-hardis monitoring"
209
- git pull origin "${BRANCH_NAME}"
209
+ git pull origin "${BRANCH_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
210
210
  workingDirectory: $(System.DefaultWorkingDirectory)
211
211
  displayName: Git config & pull latest commit
212
212
 
@@ -262,7 +262,7 @@ jobs:
262
262
  - script: |
263
263
  git config --global user.email "contact@cloudity.com"
264
264
  git config --global user.name "sfdx-hardis monitoring"
265
- git pull origin "${BRANCH_NAME}"
265
+ git pull origin "${BRANCH_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
266
266
  displayName: Pull git branch latest commit
267
267
  env:
268
268
  CI: "true"
@@ -61,7 +61,7 @@ pipelines:
61
61
  - export ORG_ALIAS=$BRANCH_NAME
62
62
  - export FORCE_COLOR=1
63
63
  # Get latest commit of the branch
64
- - git pull origin "${BRANCH_NAME}"
64
+ - git pull origin "${BRANCH_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
65
65
  # Login
66
66
  - sf hardis:auth:login
67
67
  # Apex tests
@@ -79,7 +79,7 @@ pipelines:
79
79
  script:
80
80
  # Get latest commit of the branch
81
81
  - export BRANCH_NAME=$(echo "$BITBUCKET_BRANCH" | sed 's/refs\/heads\///')
82
- - git pull origin "${BRANCH_NAME}"
82
+ - git pull origin "${BRANCH_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
83
83
  - export DEFAULT_WORKSPACE=$BITBUCKET_CLONE_DIR && bash /entrypoint.sh
84
84
  artifacts:
85
85
  - megalinter-reports/**
@@ -100,7 +100,7 @@ pipelines:
100
100
  - export ORG_ALIAS=$BRANCH_NAME
101
101
  - export FORCE_COLOR=1
102
102
  # Get latest commit of the branch
103
- - git pull origin "${BRANCH_NAME}"
103
+ - git pull origin "${BRANCH_NAME}" || echo "Issue when pulling latest branch state, but that should be ok"
104
104
  # Login
105
105
  - sf hardis:auth:login
106
106
  # Other monitoring tools
@@ -14,4 +14,5 @@ export default class UnsecuredConnectedApps extends SfCommand<any> {
14
14
  protected outputFileConnectedApps: any;
15
15
  protected outputFilesResConnectedApps: any;
16
16
  run(): Promise<AnyJson>;
17
+ private revokeOAuthTokens;
17
18
  }
@@ -20,22 +20,25 @@ export default class UnsecuredConnectedApps extends SfCommand {
20
20
  static description = `
21
21
  ## Command Behavior
22
22
 
23
- **Detects unsecured Connected Apps in a Salesforce org and generates detailed reports for security analysis.**
23
+ **Detects unsecured Connected Apps and External Client Apps in a Salesforce org and generates detailed reports for security analysis.**
24
24
 
25
- This command is a critical security diagnostic tool that helps administrators identify Connected Apps that may pose security risks due to improper configuration. It provides comprehensive analysis of OAuth tokens and Connected App security settings to ensure proper access control.
25
+ This command is a critical security diagnostic tool that helps administrators identify Connected Apps and External Client Apps that may pose security risks due to improper OAuth authorization configuration. It provides comprehensive analysis of OAuth tokens and app security settings to ensure proper access control.
26
26
 
27
27
  Key functionalities:
28
28
 
29
29
  - **OAuth Token Analysis:** Queries all OAuth tokens in the org using SOQL to retrieve comprehensive token information including app names, users, authorization status, and usage statistics.
30
- - **Security Status Assessment:** Evaluates each Connected App's security configuration by checking the \`IsUsingAdminAuthorization\` flag to determine if admin pre-approval is required.
31
- - **Ignore List Support:** Skips warning/escalation for Connected Apps configured in \`monitoringUnsecureConnectedAppsIgnore\` (project config) or \`MONITORING_UNSECURE_CONNECTED_APPS_IGNORE\` (environment variable). Matching OAuth tokens are marked as *Ignored*.
32
- - **Unsecured App Detection:** Identifies Connected Apps that allow users to authorize themselves without admin approval, which can pose security risks.
33
- - **Phantom App Cleanup (Optional):** Detects unsecured Connected Apps that are not present in the Installed Connected Apps list and offers an interactive option to revoke their OAuth tokens (forces re-authentication if still needed).
30
+ - **Connected App and External Client App Coverage:** Checks both Connected Apps (via \`AppMenuItem.IsUsingAdminAuthorization\`) and External Client Apps (via \`ExtlClntAppOauthPlcyCnfg.PermittedUsersPolicyType\`) for proper admin pre-approval settings.
31
+ - **App Type Column:** Each report row includes an \`App Type\` column indicating whether the app is a \`Connected App\` or \`Ext Client App\`.
32
+ - **AppName-based Fallback Matching:** When an OAuth token has no \`AppMenuItem\` link (common for External Client App tokens), the command falls back to matching by \`AppName\` against \`ExternalClientApplication.MasterLabel\` or \`DeveloperName\`.
33
+ - **Ignore List Support:** Skips warning/escalation for apps configured in \`monitoringUnsecureConnectedAppsIgnore\` (project config) or \`MONITORING_UNSECURE_CONNECTED_APPS_IGNORE\` (environment variable). Matching OAuth tokens are marked as *Ignored*.
34
+ - **Unsecured App Detection:** Identifies apps that allow users to authorize themselves without admin approval, which can pose security risks.
35
+ - **Phantom App Cleanup (Optional):** Detects unsecured apps not present in the installed Connected Apps or External Client Apps list and offers an interactive option to revoke their OAuth tokens (forces re-authentication if still needed).
36
+ - **Stale Token Cleanup (Optional):** Detects secured apps that still have old unsecured OAuth tokens (authorized before proper hardening) and offers an interactive option to delete them.
34
37
  - **Detailed Reporting:** Generates two comprehensive CSV reports:
35
- - **OAuth Tokens Report:** Lists all OAuth tokens with security status, user information, and usage data
36
- - **Connected Apps Summary:** Aggregates unsecured Connected Apps with counts of associated OAuth tokens
38
+ - **OAuth Tokens Report:** Lists all OAuth tokens with security status, app type, user information, and usage data
39
+ - **Connected Apps Summary:** Aggregates unsecured apps with counts of associated OAuth tokens and app type
37
40
  - **Visual Indicators:** Uses status icons (❌ for unsecured, ✅ for secured, ⚪ for ignored) to provide immediate visual feedback on security status.
38
- - **Security Recommendations:** Provides actionable guidance on how to secure Connected Apps through proper configuration.
41
+ - **Security Recommendations:** Provides actionable guidance on how to secure Connected Apps and External Client Apps through proper configuration.
39
42
  - **Notifications:** Sends alerts to configured channels (Grafana, Slack, MS Teams) with security findings and attached reports.
40
43
 
41
44
  This command is part of [sfdx-hardis Monitoring](${CONSTANTS.DOC_URL_ROOT}/salesforce-monitoring-org-security/) and can output Grafana, Slack and MsTeams Notifications.
@@ -48,13 +51,14 @@ This command is part of [sfdx-hardis Monitoring](${CONSTANTS.DOC_URL_ROOT}/sales
48
51
  The command's technical implementation involves:
49
52
 
50
53
  - **SOQL Query Execution:** Executes a comprehensive SOQL query on the \`OauthToken\` object, joining with \`AppMenuItem\` and \`User\` objects to gather complete security context.
51
- - **Security Analysis Logic:** Analyzes the \`AppMenuItem.IsUsingAdminAuthorization\` field to determine if a Connected App requires admin pre-approval for user authorization.
52
- - **Ignore Handling:** Normalizes Connected App names and marks matching OAuth tokens as *Ignored* so they do not contribute to unsecured Connected App counts and notifications.
53
- - **Data Transformation:** Processes raw SOQL results to add security status indicators and reorganize data for optimal reporting and analysis.
54
- - **Aggregation Processing:** Groups OAuth tokens by Connected App name to provide summary statistics and identify the most problematic applications.
55
- - **Token Revocation:** Optionally calls Salesforce OAuth revoke endpoint using each token's \`DeleteToken\` value to revoke OAuth tokens for selected phantom Connected Apps.
54
+ - **Connected App Security Logic:** Analyzes the \`AppMenuItem.IsUsingAdminAuthorization\` field to determine if a Connected App requires admin pre-approval for user authorization.
55
+ - **External Client App Security Logic:** Queries \`ExtlClntAppOauthPlcyCnfg\` for each External Client App and checks \`PermittedUsersPolicyType === 'AdminApprovedPreAuthorized'\` to determine if admin pre-approval is required. Falls back to AppName-based matching when \`AppMenuItem.ApplicationId\` is not populated.
56
+ - **Ignore Handling:** Normalizes app names and marks matching OAuth tokens as *Ignored* so they do not contribute to unsecured app counts and notifications.
57
+ - **Data Transformation:** Processes raw SOQL results to add security status indicators, app type, and reorganizes data for optimal reporting and analysis.
58
+ - **Aggregation Processing:** Groups OAuth tokens by app name to provide summary statistics and identify the most problematic applications.
59
+ - **Token Revocation:** Optionally calls Salesforce OAuth revoke endpoint using each token's \`DeleteToken\` value to revoke OAuth tokens for selected phantom apps or stale unsecured tokens on secured apps.
56
60
  - **Report Generation:** Uses \`generateCsvFile\` to create structured CSV reports with proper formatting and metadata for easy analysis and sharing.
57
- - **Notification Integration:** Integrates with the \`NotifProvider\` to send security alerts with detailed metrics, including the number of unsecured Connected Apps and associated OAuth tokens.
61
+ - **Notification Integration:** Integrates with the \`NotifProvider\` to send security alerts with detailed metrics, including the number of unsecured apps and associated OAuth tokens.
58
62
  - **File Management:** Generates multiple output formats (CSV, XLSX) and manages file paths using \`generateReportPath\` for consistent report organization.
59
63
  - **Connection Management:** Uses \`setConnectionVariables\` to ensure proper authentication context for notification providers that require org connection details.
60
64
  </details>
@@ -111,6 +115,39 @@ The command's technical implementation involves:
111
115
  const connectedAppQueryRes = await bulkQuery(connectedAppQuery, conn);
112
116
  const allConnectedApps = connectedAppQueryRes.records;
113
117
  uxLog("log", this, t('connectedAppsFound', { count: allConnectedApps.length }));
118
+ // List available External Client Apps
119
+ uxLog("action", this, c.cyan(t('listingAllExternalClientAppsFrom', { conn: conn.instanceUrl })));
120
+ const externalClientAppQuery = `SELECT Id, MasterLabel, DeveloperName FROM ExternalClientApplication ORDER BY MasterLabel ASC`;
121
+ let allExternalClientApps = [];
122
+ try {
123
+ const externalClientAppQueryRes = await soqlQuery(externalClientAppQuery, conn);
124
+ allExternalClientApps = externalClientAppQueryRes.records;
125
+ }
126
+ catch (_e) {
127
+ // ExternalClientApplication may not be available in all orgs or API versions
128
+ }
129
+ uxLog("log", this, t('externalClientAppsFound', { count: allExternalClientApps.length }));
130
+ const allExternalClientAppsById = new Map(allExternalClientApps.map(app => [app.Id, app]));
131
+ // Also index by MasterLabel and DeveloperName for AppName-based matching (tokens without AppMenuItem link)
132
+ const allExternalClientAppsByName = new Map();
133
+ for (const app of allExternalClientApps) {
134
+ if (app.MasterLabel)
135
+ allExternalClientAppsByName.set(app.MasterLabel.toLowerCase(), app);
136
+ if (app.DeveloperName)
137
+ allExternalClientAppsByName.set(app.DeveloperName.toLowerCase(), app);
138
+ }
139
+ // Query External Client App OAuth Policies to check admin pre-approval setting
140
+ // PermittedUsersPolicyType === 'AdminApprovedPreAuthorized' means admin pre-approved
141
+ const ecaOauthPoliciesQuery = `SELECT Id, ExternalClientApplicationId, PermittedUsersPolicyType FROM ExtlClntAppOauthPlcyCnfg`;
142
+ let allEcaOauthPolicies = [];
143
+ try {
144
+ const ecaOauthPoliciesQueryRes = await soqlQuery(ecaOauthPoliciesQuery, conn);
145
+ allEcaOauthPolicies = ecaOauthPoliciesQueryRes.records;
146
+ }
147
+ catch (_e) {
148
+ // ExtlClntAppOauthConfigurablePolicies may not be available in all orgs or API versions
149
+ }
150
+ const ecaOauthPoliciesByAppId = new Map(allEcaOauthPolicies.map(policy => [policy.ExternalClientApplicationId, policy]));
114
151
  // Collect all OAuth Tokens
115
152
  uxLog("action", this, c.cyan(t('extractingAllOauthTokensFrom', { conn: conn.instanceUrl })));
116
153
  const tokensCountQuery = `SELECT count() FROM OauthToken`;
@@ -146,20 +183,47 @@ The command's technical implementation involves:
146
183
  uxLog("log", this, t('oauthTokensRetrieved', { count: allOAuthTokens.length }));
147
184
  sortArray(allOAuthTokens, { by: 'AppName' });
148
185
  const allOAuthTokensWithStatus = allOAuthTokens.map(oAuthToken => {
149
- const adminPreApproved = oAuthToken["AppMenuItem.IsUsingAdminAuthorization"] ?? false;
186
+ let adminPreApproved = oAuthToken["AppMenuItem.IsUsingAdminAuthorization"] ?? false;
150
187
  let appName = oAuthToken.AppName ? oAuthToken.AppName : 'N/A';
151
- if (oAuthToken["AppMenuItem.ApplicationId"]) {
152
- const matchingConnectedApp = allConnectedApps.find(app => app.Id === oAuthToken["AppMenuItem.ApplicationId"]);
153
- if (matchingConnectedApp) {
154
- appName = matchingConnectedApp.Name;
188
+ let appType = 'Connected App';
189
+ const applicationId = oAuthToken["AppMenuItem.ApplicationId"];
190
+ if (applicationId) {
191
+ if (applicationId.startsWith("0xI")) {
192
+ // External Client App (matched via AppMenuItem.ApplicationId)
193
+ appType = 'Ext Client App';
194
+ const matchingExtClientApp = allExternalClientAppsById.get(applicationId);
195
+ if (matchingExtClientApp) {
196
+ appName = matchingExtClientApp.MasterLabel || matchingExtClientApp.DeveloperName;
197
+ }
198
+ // Use the actual ECA OAuth policy to determine admin pre-approval
199
+ const ecaPolicy = ecaOauthPoliciesByAppId.get(applicationId);
200
+ adminPreApproved = ecaPolicy?.PermittedUsersPolicyType === 'AdminApprovedPreAuthorized';
155
201
  }
156
202
  else {
157
- throw new SfError(`Connected App with Id ${oAuthToken["AppMenuItem.ApplicationId"]} not found among installed Connected Apps.`);
203
+ // Connected App
204
+ const matchingConnectedApp = allConnectedApps.find(app => app.Id === applicationId);
205
+ if (matchingConnectedApp) {
206
+ appName = matchingConnectedApp.Name;
207
+ }
208
+ else {
209
+ throw new SfError(`Connected App with Id ${applicationId} not found among installed Connected Apps.`);
210
+ }
211
+ }
212
+ }
213
+ else if (appName !== 'N/A') {
214
+ // No AppMenuItem link — try to match by AppName against External Client Apps
215
+ const matchingExtClientApp = allExternalClientAppsByName.get(appName.toLowerCase());
216
+ if (matchingExtClientApp) {
217
+ appType = 'Ext Client App';
218
+ appName = matchingExtClientApp.MasterLabel || matchingExtClientApp.DeveloperName;
219
+ const ecaPolicy = ecaOauthPoliciesByAppId.get(matchingExtClientApp.Id);
220
+ adminPreApproved = ecaPolicy?.PermittedUsersPolicyType === 'AdminApprovedPreAuthorized';
158
221
  }
159
222
  }
160
223
  const isIgnored = unsecuredConnectedAppsToIgnoreSet.has(normalizeAppName(appName));
161
224
  const appResult = {
162
225
  AppName: appName,
226
+ "App Type": appType,
163
227
  "Status": isIgnored ? '⚪ Ignored' : (adminPreApproved ? '✅ Secured' : '❌ Unsecured'),
164
228
  "Admin Pre-Approved": adminPreApproved ? 'Yes' : 'No',
165
229
  "User": oAuthToken["User.Name"] ? oAuthToken["User.Name"] : 'N/A',
@@ -185,6 +249,7 @@ The command's technical implementation involves:
185
249
  const uniqueUnsecuredAppNamesAndTokenNumber = {};
186
250
  const uniqueUnsecuredAppNamesAndProfiles = {};
187
251
  const uniqueUnsecuredAppNamesAndLastUsageDate = {};
252
+ const uniqueUnsecuredAppNamesAndType = {};
188
253
  for (const app of unsecuredOAuthTokens) {
189
254
  if (uniqueUnsecuredAppNamesAndTokenNumber[app.AppName]) {
190
255
  uniqueUnsecuredAppNamesAndTokenNumber[app.AppName]++;
@@ -192,6 +257,9 @@ The command's technical implementation involves:
192
257
  else {
193
258
  uniqueUnsecuredAppNamesAndTokenNumber[app.AppName] = 1;
194
259
  }
260
+ if (!uniqueUnsecuredAppNamesAndType[app.AppName]) {
261
+ uniqueUnsecuredAppNamesAndType[app.AppName] = app["App Type"] || 'Connected App';
262
+ }
195
263
  if (!uniqueUnsecuredAppNamesAndProfiles[app.AppName]) {
196
264
  uniqueUnsecuredAppNamesAndProfiles[app.AppName] = new Set();
197
265
  }
@@ -209,6 +277,7 @@ The command's technical implementation involves:
209
277
  const uniqueUnsecureConnectedAppsWithTokens = uniqueUnsecuredAppNames.map(appName => {
210
278
  return {
211
279
  AppName: appName,
280
+ "App Type": uniqueUnsecuredAppNamesAndType[appName] || 'Connected App',
212
281
  NumberOfUnsecuredOAuthTokens: uniqueUnsecuredAppNamesAndTokenNumber[appName],
213
282
  LatestUsageDate: uniqueUnsecuredAppNamesAndLastUsageDate[appName] || "N/A",
214
283
  ProfilesOfUsersUsingIt: Array.from(uniqueUnsecuredAppNamesAndProfiles[appName] || []).sort().join(', '),
@@ -252,11 +321,12 @@ The command's technical implementation involves:
252
321
  const OAuthUsageSetupUrl = `${conn.instanceUrl}/lightning/setup/ConnectedAppsUsage/home`;
253
322
  WebSocketClient.sendReportFileMessage(OAuthUsageSetupUrl, t('reviewOAuthConnectedApps'), "actionUrl");
254
323
  }
255
- // Suggest to ignore connected apps that we are not able to find in either Connected Apps, either in OAuthUsage setup page
324
+ // Suggest to ignore connected apps that we are not able to find in either Connected Apps, External Client Apps, either in OAuthUsage setup page
256
325
  const uniqueUnsecureConnectedAppsWithTokensNotInConnectedApps = [];
257
326
  for (const appName of uniqueUnsecuredAppNames) {
258
327
  const matchingConnectedApp = allConnectedApps.find(app => app.Name === appName);
259
- if (!matchingConnectedApp) {
328
+ const matchingExtClientApp = allExternalClientApps.find(app => app.MasterLabel === appName || app.DeveloperName === appName);
329
+ if (!matchingConnectedApp && !matchingExtClientApp) {
260
330
  uniqueUnsecureConnectedAppsWithTokensNotInConnectedApps.push(appName);
261
331
  }
262
332
  }
@@ -293,51 +363,74 @@ The command's technical implementation involves:
293
363
  }
294
364
  // Suggest to delete tokens for some connected apps using https://MyDomainName.my.salesforce.com/services/oauth2/revoke?token=(the Delete Token)
295
365
  if (!isCI && unsecuredOAuthTokens.length > 0) {
296
- const confirmDeleteRes = await prompts({
297
- type: 'confirm',
298
- message: t('doYouWantToDeleteAuthTokens'),
299
- description: t('deletePhantomAppsTokensDescription'),
300
- initial: false,
301
- });
302
- if (confirmDeleteRes.value === true) {
303
- // Prompt user to select the apps
304
- const deleteTokensPromptRes = await prompts({
305
- type: 'multiselect',
306
- message: t('selectTheAppsForWhichYouWant'),
307
- choices: uniqueUnsecureConnectedAppsWithTokensNotInConnectedApps.map(appName => ({ title: appName, value: appName })),
308
- description: t('oauthTokensForSelectedAppsWillBeDeleted'),
366
+ const deletableOAuthTokens = unsecuredOAuthTokens.filter(token => uniqueUnsecureConnectedAppsWithTokensNotInConnectedApps.includes(token.AppName));
367
+ if (deletableOAuthTokens.length > 0) {
368
+ uxLog("action", this, c.cyan(t('reviewingDeletableAuthTokens', { count: deletableOAuthTokens.length })));
369
+ uxLogTable(this, deletableOAuthTokens);
370
+ const outputFileDeletableAuthTokens = await generateReportPath('deletable-auth-tokens', '');
371
+ await generateCsvFile(deletableOAuthTokens, outputFileDeletableAuthTokens, { fileTitle: t('deletableAuthTokensFiletitle') });
372
+ const confirmDeleteRes = await prompts({
373
+ type: 'confirm',
374
+ message: t('doYouWantToDeleteAuthTokens'),
375
+ description: t('deletePhantomAppsTokensDescription'),
376
+ initial: false,
309
377
  });
310
- if (deleteTokensPromptRes?.value.length > 0) {
311
- const tokensToDelete = unsecuredOAuthTokens.filter(token => deleteTokensPromptRes.value.includes(token.AppName));
312
- WebSocketClient.sendProgressStartMessage(t('deletingOAuthTokens', { count: tokensToDelete.length }), tokensToDelete.length);
313
- let counter = 0;
314
- for (const tokenToDelete of tokensToDelete) {
315
- const deleteTokenRecord = allOAuthTokens.find(t => t.Id === tokenToDelete["x-Token-Id"]);
316
- if (!deleteTokenRecord) {
317
- uxLog("error", this, c.red(t('oauthTokenNotFoundSkipping', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName })));
318
- counter++;
319
- continue;
320
- }
321
- const deleteTokenUrl = `${conn.instanceUrl}/services/oauth2/revoke?token=${encodeURIComponent(deleteTokenRecord.DeleteToken)}`;
322
- uxLog("log", this, t('deletingOAuthTokenForApp', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName }));
323
- try {
324
- await conn.requestPost(deleteTokenUrl, {});
325
- uxLog("success", this, c.green(t('oauthTokenDeleted', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName })));
326
- }
327
- catch (error) {
328
- uxLog("error", this, c.red(t('failedToDeleteOAuthToken', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName, error: error })));
378
+ if (confirmDeleteRes.value === true) {
379
+ // Prompt user to select the apps
380
+ const deleteTokensPromptRes = await prompts({
381
+ type: 'multiselect',
382
+ message: t('selectTheAppsForWhichYouWant'),
383
+ choices: uniqueUnsecureConnectedAppsWithTokensNotInConnectedApps.map(appName => {
384
+ const tokenCount = uniqueUnsecuredAppNamesAndTokenNumber[appName] || 0;
385
+ return {
386
+ title: `${appName} (${tokenCount} token${tokenCount > 1 ? 's' : ''})`,
387
+ value: appName,
388
+ };
389
+ }),
390
+ description: t('oauthTokensForSelectedAppsWillBeDeleted'),
391
+ });
392
+ if (deleteTokensPromptRes?.value.length > 0) {
393
+ const tokensToDelete = unsecuredOAuthTokens.filter(token => deleteTokensPromptRes.value.includes(token.AppName));
394
+ const deletedOAuthTokens = await this.revokeOAuthTokens(tokensToDelete, allOAuthTokens, conn);
395
+ if (deletedOAuthTokens.length > 0) {
396
+ const outputFileDeletedAuthTokens = await generateReportPath('deleted-auth-tokens', '');
397
+ await generateCsvFile(deletedOAuthTokens, outputFileDeletedAuthTokens, { fileTitle: t('deletedAuthTokensFiletitle') });
329
398
  }
330
- counter++;
331
- WebSocketClient.sendProgressStepMessage(counter, tokensToDelete.length);
332
399
  }
333
- WebSocketClient.sendProgressEndMessage(tokensToDelete.length);
334
- uxLog("action", this, c.green(t('oauthTokenDeletionCompleted')));
335
400
  }
336
401
  }
337
402
  }
338
403
  if ((this.argv || []).includes('unsecure-connected-apps')) {
339
404
  process.exitCode = numberWarnings > 0 ? 1 : 0;
340
405
  }
406
+ // Handle secured apps that also have stale unsecured tokens (mixed-status apps)
407
+ if (!isCI && unsecuredOAuthTokens.length > 0) {
408
+ const securedAppsWithUnsecuredTokensMap = new Map();
409
+ for (const token of unsecuredOAuthTokens) {
410
+ const hasSecuredToken = allOAuthTokensWithStatus.some(t => t.AppName === token.AppName && t.Status === '✅ Secured');
411
+ if (hasSecuredToken) {
412
+ const existing = securedAppsWithUnsecuredTokensMap.get(token.AppName) ?? [];
413
+ existing.push(token);
414
+ securedAppsWithUnsecuredTokensMap.set(token.AppName, existing);
415
+ }
416
+ }
417
+ for (const [appName, staleTokens] of securedAppsWithUnsecuredTokensMap) {
418
+ uxLog("action", this, c.yellow(t('securedAppHasUnsecuredTokens', { appName, count: staleTokens.length })));
419
+ uxLogTable(this, staleTokens);
420
+ const safeAppName = appName.replace(/[^a-zA-Z0-9_-]/g, '_');
421
+ const outputFileStaleTokens = await generateReportPath(`unsecured-tokens-secured-app-${safeAppName}`, '');
422
+ await generateCsvFile(staleTokens, outputFileStaleTokens, { fileTitle: t('unsecuredTokensForSecuredAppFiletitle', { appName }) });
423
+ const confirmDeleteStaleRes = await prompts({
424
+ type: 'confirm',
425
+ message: t('doYouWantToDeleteStaleTokensForApp', { appName, count: staleTokens.length, total: allOAuthTokensWithStatus.filter(t => t.AppName === appName).length }),
426
+ description: t('deletePhantomAppsTokensDescription'),
427
+ initial: false,
428
+ });
429
+ if (confirmDeleteStaleRes.value === true) {
430
+ await this.revokeOAuthTokens(staleTokens, allOAuthTokens, conn);
431
+ }
432
+ }
433
+ }
341
434
  return {
342
435
  status: numberWarnings === 0 ? 'success' : 'warning',
343
436
  allOAuthTokensWithStatus: allOAuthTokensWithStatus,
@@ -345,5 +438,33 @@ The command's technical implementation involves:
345
438
  unsecuredConnectedApps: uniqueUnsecuredAppNames,
346
439
  };
347
440
  }
441
+ async revokeOAuthTokens(tokensToRevoke, allOAuthTokens, conn) {
442
+ WebSocketClient.sendProgressStartMessage(t('deletingOAuthTokens', { count: tokensToRevoke.length }), tokensToRevoke.length);
443
+ const revokedTokens = [];
444
+ let counter = 0;
445
+ for (const tokenToDelete of tokensToRevoke) {
446
+ const deleteTokenRecord = allOAuthTokens.find(tok => tok.Id === tokenToDelete["x-Token-Id"]);
447
+ if (!deleteTokenRecord) {
448
+ uxLog("error", this, c.red(t('oauthTokenNotFoundSkipping', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName })));
449
+ counter++;
450
+ continue;
451
+ }
452
+ const deleteTokenUrl = `${conn.instanceUrl}/services/oauth2/revoke?token=${encodeURIComponent(deleteTokenRecord.DeleteToken)}`;
453
+ uxLog("log", this, t('deletingOAuthTokenForApp', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName }));
454
+ try {
455
+ await conn.requestPost(deleteTokenUrl, {});
456
+ uxLog("success", this, c.green(t('oauthTokenDeleted', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName })));
457
+ revokedTokens.push(tokenToDelete);
458
+ }
459
+ catch (error) {
460
+ uxLog("error", this, c.red(t('failedToDeleteOAuthToken', { tokenId: tokenToDelete["x-Token-Id"], appName: tokenToDelete.AppName, error: error })));
461
+ }
462
+ counter++;
463
+ WebSocketClient.sendProgressStepMessage(counter, tokensToRevoke.length);
464
+ }
465
+ WebSocketClient.sendProgressEndMessage(tokensToRevoke.length);
466
+ uxLog("action", this, c.green(t('oauthTokenDeletionCompleted')));
467
+ return revokedTokens;
468
+ }
348
469
  }
349
470
  //# sourceMappingURL=unsecure-connected-apps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unsecure-connected-apps.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/org/diagnose/unsecure-connected-apps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unsecure-connected-apps.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/org/diagnose/unsecure-connected-apps.ts"],"names":[],"mappings":"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"}
@@ -2564,6 +2564,13 @@ export function listMetadataTypes() {
2564
2564
  suffix: 'mcpServerDefinition',
2565
2565
  xmlName: 'McpServerDefinition',
2566
2566
  },
2567
+ {
2568
+ directoryName: 'meetingPlaybookDefinitions',
2569
+ inFolder: false,
2570
+ metaFile: false,
2571
+ suffix: 'meetingPlaybookDefinition',
2572
+ xmlName: 'MeetingPlaybookDefinition',
2573
+ },
2567
2574
  {
2568
2575
  directoryName: 'messagingChannels',
2569
2576
  inFolder: false,
@@ -3601,6 +3608,41 @@ export function listMetadataTypes() {
3601
3608
  suffix: 'synonymDictionary',
3602
3609
  xmlName: 'SynonymDictionary',
3603
3610
  },
3611
+ {
3612
+ directoryName: 'TelemetryActionDefinitions',
3613
+ inFolder: false,
3614
+ metaFile: false,
3615
+ suffix: 'TelemetryActionDefinition',
3616
+ xmlName: 'TelemetryActionDefinition',
3617
+ },
3618
+ {
3619
+ directoryName: 'TelemetryActionDefSteps',
3620
+ inFolder: false,
3621
+ metaFile: false,
3622
+ suffix: 'TelemetryActionDefStep',
3623
+ xmlName: 'TelemetryActionDefStep',
3624
+ },
3625
+ {
3626
+ directoryName: 'TelemetryActnDefStepAttrs',
3627
+ inFolder: false,
3628
+ metaFile: false,
3629
+ suffix: 'TelemetryActnDefStepAttr',
3630
+ xmlName: 'TelemetryActnDefStepAttr',
3631
+ },
3632
+ {
3633
+ directoryName: 'TelemetryDefinitions',
3634
+ inFolder: false,
3635
+ metaFile: false,
3636
+ suffix: 'TelemetryDefinition',
3637
+ xmlName: 'TelemetryDefinition',
3638
+ },
3639
+ {
3640
+ directoryName: 'TelemetryDefinitionVersions',
3641
+ inFolder: false,
3642
+ metaFile: false,
3643
+ suffix: 'TelemetryDefinitionVersion',
3644
+ xmlName: 'TelemetryDefinitionVersion',
3645
+ },
3604
3646
  {
3605
3647
  directoryName: 'territories',
3606
3648
  inFolder: false,