@rockcarver/frodo-lib 2.0.0-3 → 2.0.0-4
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.
- package/CHANGELOG.md +5 -1
- package/cjs/api/AgentApi.js +64 -16
- package/cjs/api/AgentApi.js.map +1 -1
- package/cjs/api/ApiTypes.js +0 -55
- package/cjs/api/ApiTypes.js.map +1 -1
- package/cjs/api/BaseApi.js +21 -11
- package/cjs/api/BaseApi.js.map +1 -1
- package/cjs/api/cloud/SecretsApi.js +7 -14
- package/cjs/api/cloud/SecretsApi.js.map +1 -1
- package/cjs/api/cloud/SecretsApi.test.js.map +1 -1
- package/cjs/ops/AdminOps.js +254 -60
- package/cjs/ops/AdminOps.js.map +1 -1
- package/cjs/ops/AgentOps.js +352 -108
- package/cjs/ops/AgentOps.js.map +1 -1
- package/cjs/ops/AuthenticateOps.js +253 -60
- package/cjs/ops/AuthenticateOps.js.map +1 -1
- package/cjs/ops/CirclesOfTrustOps.js +16 -4
- package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.js +163 -40
- package/cjs/ops/ConnectionProfileOps.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.js +7 -1
- package/cjs/ops/EmailTemplateOps.js.map +1 -1
- package/cjs/ops/IdpOps.js +55 -12
- package/cjs/ops/IdpOps.js.map +1 -1
- package/cjs/ops/JourneyOps.js +645 -136
- package/cjs/ops/JourneyOps.js.map +1 -1
- package/cjs/ops/NodeOps.js +96 -24
- package/cjs/ops/NodeOps.js.map +1 -1
- package/cjs/ops/OAuth2ClientOps.js +45 -11
- package/cjs/ops/OAuth2ClientOps.js.map +1 -1
- package/cjs/ops/OpsTypes.js +0 -23
- package/cjs/ops/OpsTypes.js.map +1 -1
- package/cjs/ops/OrganizationOps.js +44 -10
- package/cjs/ops/OrganizationOps.js.map +1 -1
- package/cjs/ops/PolicyOps.js +86 -24
- package/cjs/ops/PolicyOps.js.map +1 -1
- package/cjs/ops/PolicySetOps.js +72 -18
- package/cjs/ops/PolicySetOps.js.map +1 -1
- package/cjs/ops/ResourceTypeOps.js +24 -6
- package/cjs/ops/ResourceTypeOps.js.map +1 -1
- package/cjs/ops/Saml2Ops.js +120 -33
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/Saml2Ops.test.js.map +1 -1
- package/cjs/ops/ScriptOps.js +73 -17
- package/cjs/ops/ScriptOps.js.map +1 -1
- package/cjs/ops/ServiceOps.js +152 -35
- package/cjs/ops/ServiceOps.js.map +1 -1
- package/cjs/ops/ThemeOps.js +20 -5
- package/cjs/ops/ThemeOps.js.map +1 -1
- package/cjs/ops/cloud/FeatureOps.js +4 -1
- package/cjs/ops/cloud/FeatureOps.js.map +1 -1
- package/cjs/ops/cloud/SecretsOps.js.map +1 -1
- package/cjs/ops/cloud/ServiceAccountOps.js +24 -6
- package/cjs/ops/cloud/ServiceAccountOps.js.map +1 -1
- package/cjs/ops/cloud/StartupOps.js +55 -11
- package/cjs/ops/cloud/StartupOps.js.map +1 -1
- package/cjs/ops/utils/Console.js +47 -22
- package/cjs/ops/utils/Console.js.map +1 -1
- package/cjs/ops/utils/DataProtection.js +12 -5
- package/cjs/ops/utils/DataProtection.js.map +1 -1
- package/cjs/ops/utils/DataProtection.test.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.js +15 -8
- package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
- package/cjs/ops/utils/ScriptValidationUtils.js +33 -8
- package/cjs/ops/utils/ScriptValidationUtils.js.map +1 -1
- package/cjs/ops/utils/ScriptValidationUtils.test.js.map +1 -1
- package/cjs/utils/SetupPollyForFrodoLib.js +67 -19
- package/cjs/utils/SetupPollyForFrodoLib.js.map +1 -1
- package/esm/api/AgentApi.mjs +64 -16
- package/esm/api/ApiTypes.mjs +1 -50
- package/esm/api/BaseApi.mjs +21 -11
- package/esm/api/cloud/SecretsApi.mjs +0 -5
- package/esm/api/cloud/SecretsApi.test.mjs +3 -3
- package/esm/ops/AdminOps.mjs +254 -60
- package/esm/ops/AgentOps.mjs +352 -104
- package/esm/ops/AuthenticateOps.mjs +253 -60
- package/esm/ops/CirclesOfTrustOps.mjs +16 -4
- package/esm/ops/ConnectionProfileOps.mjs +163 -40
- package/esm/ops/EmailTemplateOps.mjs +5 -0
- package/esm/ops/IdpOps.mjs +55 -12
- package/esm/ops/JourneyOps.mjs +639 -132
- package/esm/ops/NodeOps.mjs +90 -19
- package/esm/ops/OAuth2ClientOps.mjs +45 -11
- package/esm/ops/OpsTypes.mjs +1 -22
- package/esm/ops/OrganizationOps.mjs +44 -10
- package/esm/ops/PolicyOps.mjs +86 -24
- package/esm/ops/PolicySetOps.mjs +72 -18
- package/esm/ops/ResourceTypeOps.mjs +24 -6
- package/esm/ops/Saml2Ops.mjs +120 -33
- package/esm/ops/Saml2Ops.test.mjs +10 -11
- package/esm/ops/ScriptOps.mjs +73 -17
- package/esm/ops/ServiceOps.mjs +152 -35
- package/esm/ops/ThemeOps.mjs +20 -5
- package/esm/ops/cloud/FeatureOps.mjs +4 -1
- package/esm/ops/cloud/ServiceAccountOps.mjs +24 -6
- package/esm/ops/cloud/StartupOps.mjs +55 -11
- package/esm/ops/utils/Console.mjs +33 -9
- package/esm/ops/utils/DataProtection.mjs +9 -2
- package/esm/ops/utils/DataProtection.test.mjs +8 -2
- package/esm/ops/utils/ExportImportUtils.mjs +15 -8
- package/esm/ops/utils/ScriptValidationUtils.mjs +30 -8
- package/esm/ops/utils/ScriptValidationUtils.test.mjs +14 -3
- package/esm/utils/SetupPollyForFrodoLib.mjs +64 -18
- package/package.json +1 -1
- package/types/api/AgentApi.d.ts +6 -6
- package/types/api/AgentApi.d.ts.map +1 -1
- package/types/api/ApiTypes.d.ts +12 -49
- package/types/api/ApiTypes.d.ts.map +1 -1
- package/types/api/BaseApi.d.ts.map +1 -1
- package/types/api/cloud/SecretsApi.d.ts +1 -4
- package/types/api/cloud/SecretsApi.d.ts.map +1 -1
- package/types/ops/AdminOps.d.ts.map +1 -1
- package/types/ops/AgentOps.d.ts +3 -6
- package/types/ops/AgentOps.d.ts.map +1 -1
- package/types/ops/AuthenticateOps.d.ts.map +1 -1
- package/types/ops/CirclesOfTrustOps.d.ts.map +1 -1
- package/types/ops/ConnectionProfileOps.d.ts.map +1 -1
- package/types/ops/EmailTemplateOps.d.ts +4 -0
- package/types/ops/EmailTemplateOps.d.ts.map +1 -1
- package/types/ops/IdpOps.d.ts.map +1 -1
- package/types/ops/JourneyOps.d.ts +10 -4
- package/types/ops/JourneyOps.d.ts.map +1 -1
- package/types/ops/NodeOps.d.ts +10 -4
- package/types/ops/NodeOps.d.ts.map +1 -1
- package/types/ops/OAuth2ClientOps.d.ts.map +1 -1
- package/types/ops/OpsTypes.d.ts +2 -12
- package/types/ops/OpsTypes.d.ts.map +1 -1
- package/types/ops/OrganizationOps.d.ts.map +1 -1
- package/types/ops/PolicyOps.d.ts.map +1 -1
- package/types/ops/PolicySetOps.d.ts.map +1 -1
- package/types/ops/ResourceTypeOps.d.ts.map +1 -1
- package/types/ops/Saml2Ops.d.ts.map +1 -1
- package/types/ops/ScriptOps.d.ts.map +1 -1
- package/types/ops/ServiceOps.d.ts.map +1 -1
- package/types/ops/ThemeOps.d.ts.map +1 -1
- package/types/ops/cloud/FeatureOps.d.ts.map +1 -1
- package/types/ops/cloud/SecretsOps.d.ts +1 -1
- package/types/ops/cloud/SecretsOps.d.ts.map +1 -1
- package/types/ops/cloud/ServiceAccountOps.d.ts.map +1 -1
- package/types/ops/cloud/StartupOps.d.ts.map +1 -1
- package/types/ops/utils/Console.d.ts +34 -7
- package/types/ops/utils/Console.d.ts.map +1 -1
- package/types/ops/utils/DataProtection.d.ts +5 -1
- package/types/ops/utils/DataProtection.d.ts.map +1 -1
- package/types/ops/utils/ExportImportUtils.d.ts.map +1 -1
- package/types/ops/utils/ScriptValidationUtils.d.ts +14 -4
- package/types/ops/utils/ScriptValidationUtils.d.ts.map +1 -1
- package/types/utils/SetupPollyForFrodoLib.d.ts +5 -1
- package/types/utils/SetupPollyForFrodoLib.d.ts.map +1 -1
|
@@ -32,7 +32,8 @@ export default class ConnectionProfileOps {
|
|
|
32
32
|
findConnectionProfiles(connectionProfiles, host) {
|
|
33
33
|
return findConnectionProfiles({
|
|
34
34
|
connectionProfiles,
|
|
35
|
-
host
|
|
35
|
+
host,
|
|
36
|
+
state: this.state
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -129,13 +130,20 @@ export function getConnectionProfilesPath({
|
|
|
129
130
|
*/
|
|
130
131
|
function findConnectionProfiles({
|
|
131
132
|
connectionProfiles,
|
|
132
|
-
host
|
|
133
|
+
host,
|
|
134
|
+
state
|
|
133
135
|
}) {
|
|
134
136
|
const profiles = [];
|
|
135
137
|
for (const tenant in connectionProfiles) {
|
|
136
|
-
debugMessage(
|
|
138
|
+
debugMessage({
|
|
139
|
+
message: `ConnectionProfileOps.findConnectionProfiles: tenant=${tenant}`,
|
|
140
|
+
state
|
|
141
|
+
});
|
|
137
142
|
if (tenant.includes(host)) {
|
|
138
|
-
debugMessage(
|
|
143
|
+
debugMessage({
|
|
144
|
+
message: `ConnectionProfileOps.findConnectionProfiles: '${host}' identifies '${tenant}', including in result set`,
|
|
145
|
+
state
|
|
146
|
+
});
|
|
139
147
|
const foundProfile = {
|
|
140
148
|
...connectionProfiles[tenant]
|
|
141
149
|
};
|
|
@@ -176,7 +184,10 @@ function migrateFromLegacyProfile() {
|
|
|
176
184
|
export async function initConnectionProfiles({
|
|
177
185
|
state
|
|
178
186
|
}) {
|
|
179
|
-
const dataProtection = new DataProtection(
|
|
187
|
+
const dataProtection = new DataProtection({
|
|
188
|
+
pathToMasterKey: state.getMasterKeyPath(),
|
|
189
|
+
state
|
|
190
|
+
});
|
|
180
191
|
// create connections.json file if it doesn't exist
|
|
181
192
|
const filename = getConnectionProfilesPath({
|
|
182
193
|
state
|
|
@@ -230,25 +241,45 @@ export async function getConnectionProfileByHost({
|
|
|
230
241
|
state
|
|
231
242
|
}) {
|
|
232
243
|
try {
|
|
233
|
-
const dataProtection = new DataProtection(
|
|
244
|
+
const dataProtection = new DataProtection({
|
|
245
|
+
pathToMasterKey: state.getMasterKeyPath(),
|
|
246
|
+
state
|
|
247
|
+
});
|
|
234
248
|
const filename = getConnectionProfilesPath({
|
|
235
249
|
state
|
|
236
250
|
});
|
|
237
251
|
const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));
|
|
238
252
|
const profiles = findConnectionProfiles({
|
|
239
253
|
connectionProfiles: connectionsData,
|
|
240
|
-
host
|
|
254
|
+
host,
|
|
255
|
+
state
|
|
241
256
|
});
|
|
242
257
|
if (profiles.length == 0) {
|
|
243
|
-
printMessage(
|
|
258
|
+
printMessage({
|
|
259
|
+
message: `Profile for ${host} not found. Please specify credentials on command line`,
|
|
260
|
+
type: 'error',
|
|
261
|
+
state
|
|
262
|
+
});
|
|
244
263
|
return null;
|
|
245
264
|
}
|
|
246
265
|
if (profiles.length > 1) {
|
|
247
|
-
printMessage(
|
|
266
|
+
printMessage({
|
|
267
|
+
message: `Multiple matching profiles found.`,
|
|
268
|
+
type: 'error',
|
|
269
|
+
state
|
|
270
|
+
});
|
|
248
271
|
profiles.forEach(p => {
|
|
249
|
-
printMessage(
|
|
272
|
+
printMessage({
|
|
273
|
+
message: `- ${p.tenant}`,
|
|
274
|
+
type: 'error',
|
|
275
|
+
state
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
printMessage({
|
|
279
|
+
message: `Please specify a unique sub-string`,
|
|
280
|
+
type: 'error',
|
|
281
|
+
state
|
|
250
282
|
});
|
|
251
|
-
printMessage(`Please specify a unique sub-string`, 'error');
|
|
252
283
|
return null;
|
|
253
284
|
}
|
|
254
285
|
return {
|
|
@@ -264,7 +295,11 @@ export async function getConnectionProfileByHost({
|
|
|
264
295
|
svcacctJwk: profiles[0].encodedSvcacctJwk ? await dataProtection.decrypt(profiles[0].encodedSvcacctJwk) : null
|
|
265
296
|
};
|
|
266
297
|
} catch (e) {
|
|
267
|
-
printMessage(
|
|
298
|
+
printMessage({
|
|
299
|
+
message: `Can not read saved connection info, please specify credentials on command line: ${e}`,
|
|
300
|
+
type: 'error',
|
|
301
|
+
state
|
|
302
|
+
});
|
|
268
303
|
return null;
|
|
269
304
|
}
|
|
270
305
|
}
|
|
@@ -291,12 +326,21 @@ export async function saveConnectionProfile({
|
|
|
291
326
|
host,
|
|
292
327
|
state
|
|
293
328
|
}) {
|
|
294
|
-
debugMessage(
|
|
295
|
-
|
|
329
|
+
debugMessage({
|
|
330
|
+
message: `ConnectionProfileOps.saveConnectionProfile: start`,
|
|
331
|
+
state
|
|
332
|
+
});
|
|
333
|
+
const dataProtection = new DataProtection({
|
|
334
|
+
pathToMasterKey: state.getMasterKeyPath(),
|
|
335
|
+
state
|
|
336
|
+
});
|
|
296
337
|
const filename = getConnectionProfilesPath({
|
|
297
338
|
state
|
|
298
339
|
});
|
|
299
|
-
debugMessage(
|
|
340
|
+
debugMessage({
|
|
341
|
+
message: `Saving connection profile in ${filename}`,
|
|
342
|
+
state
|
|
343
|
+
});
|
|
300
344
|
let profiles = {};
|
|
301
345
|
let profile = {
|
|
302
346
|
tenant: ''
|
|
@@ -309,30 +353,50 @@ export async function saveConnectionProfile({
|
|
|
309
353
|
// find tenant
|
|
310
354
|
const found = findConnectionProfiles({
|
|
311
355
|
connectionProfiles: profiles,
|
|
312
|
-
host
|
|
356
|
+
host,
|
|
357
|
+
state
|
|
313
358
|
});
|
|
314
359
|
|
|
315
360
|
// replace tenant in session with real tenant url if necessary
|
|
316
361
|
if (found.length === 1) {
|
|
317
362
|
profile = found[0];
|
|
318
363
|
state.setHost(profile.tenant);
|
|
319
|
-
verboseMessage(
|
|
320
|
-
|
|
364
|
+
verboseMessage({
|
|
365
|
+
message: `Existing profile: ${profile.tenant}`,
|
|
366
|
+
state
|
|
367
|
+
});
|
|
368
|
+
debugMessage({
|
|
369
|
+
message: profile,
|
|
370
|
+
state
|
|
371
|
+
});
|
|
321
372
|
}
|
|
322
373
|
|
|
323
374
|
// connection profile not found, validate host is a real URL
|
|
324
375
|
if (found.length === 0) {
|
|
325
376
|
if (isValidUrl(host)) {
|
|
326
377
|
state.setHost(host);
|
|
327
|
-
debugMessage(
|
|
378
|
+
debugMessage({
|
|
379
|
+
message: `New profile: ${host}`,
|
|
380
|
+
state
|
|
381
|
+
});
|
|
328
382
|
} else {
|
|
329
|
-
printMessage(
|
|
330
|
-
|
|
383
|
+
printMessage({
|
|
384
|
+
message: `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,
|
|
385
|
+
type: 'error',
|
|
386
|
+
state
|
|
387
|
+
});
|
|
388
|
+
debugMessage({
|
|
389
|
+
message: `ConnectionProfileOps.saveConnectionProfile: end [false]`,
|
|
390
|
+
state
|
|
391
|
+
});
|
|
331
392
|
return false;
|
|
332
393
|
}
|
|
333
394
|
}
|
|
334
395
|
} catch (error) {
|
|
335
|
-
debugMessage(
|
|
396
|
+
debugMessage({
|
|
397
|
+
message: `New profiles file ${filename} with new profile ${host}`,
|
|
398
|
+
state
|
|
399
|
+
});
|
|
336
400
|
}
|
|
337
401
|
|
|
338
402
|
// user account
|
|
@@ -358,18 +422,33 @@ export async function saveConnectionProfile({
|
|
|
358
422
|
serviceAccountId: profile.svcacctId,
|
|
359
423
|
state
|
|
360
424
|
})).name;
|
|
361
|
-
debugMessage(
|
|
425
|
+
debugMessage({
|
|
426
|
+
message: `ConnectionProfileOps.saveConnectionProfile: added missing service account name`,
|
|
427
|
+
state
|
|
428
|
+
});
|
|
362
429
|
}
|
|
363
430
|
|
|
364
431
|
// advanced settings
|
|
365
432
|
if (state.getAuthenticationService()) {
|
|
366
433
|
profile.authenticationService = state.getAuthenticationService();
|
|
367
|
-
printMessage(
|
|
434
|
+
printMessage({
|
|
435
|
+
message: 'Advanced setting: Authentication Service: ' + state.getAuthenticationService(),
|
|
436
|
+
type: 'info',
|
|
437
|
+
state
|
|
438
|
+
});
|
|
368
439
|
}
|
|
369
440
|
if (state.getAuthenticationHeaderOverrides() && Object.entries(state.getAuthenticationHeaderOverrides()).length) {
|
|
370
441
|
profile.authenticationHeaderOverrides = state.getAuthenticationHeaderOverrides();
|
|
371
|
-
printMessage(
|
|
372
|
-
|
|
442
|
+
printMessage({
|
|
443
|
+
message: 'Advanced setting: Authentication Header Overrides: ',
|
|
444
|
+
type: 'info',
|
|
445
|
+
state
|
|
446
|
+
});
|
|
447
|
+
printMessage({
|
|
448
|
+
message: state.getAuthenticationHeaderOverrides(),
|
|
449
|
+
type: 'info',
|
|
450
|
+
state
|
|
451
|
+
});
|
|
373
452
|
}
|
|
374
453
|
|
|
375
454
|
// remove the helper key 'tenant'
|
|
@@ -391,8 +470,14 @@ export async function saveConnectionProfile({
|
|
|
391
470
|
includeMeta: false,
|
|
392
471
|
state
|
|
393
472
|
});
|
|
394
|
-
verboseMessage(
|
|
395
|
-
|
|
473
|
+
verboseMessage({
|
|
474
|
+
message: `Saved connection profile ${state.getHost()} in ${filename}`,
|
|
475
|
+
state
|
|
476
|
+
});
|
|
477
|
+
debugMessage({
|
|
478
|
+
message: `ConnectionProfileOps.saveConnectionProfile: end [true]`,
|
|
479
|
+
state
|
|
480
|
+
});
|
|
396
481
|
return true;
|
|
397
482
|
}
|
|
398
483
|
|
|
@@ -414,28 +499,54 @@ export function deleteConnectionProfile({
|
|
|
414
499
|
connectionsData = JSON.parse(data);
|
|
415
500
|
const profiles = findConnectionProfiles({
|
|
416
501
|
connectionProfiles: connectionsData,
|
|
417
|
-
host
|
|
502
|
+
host,
|
|
503
|
+
state
|
|
418
504
|
});
|
|
419
505
|
if (profiles.length == 1) {
|
|
420
506
|
delete connectionsData[profiles[0].tenant];
|
|
421
507
|
fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));
|
|
422
|
-
printMessage(
|
|
508
|
+
printMessage({
|
|
509
|
+
message: `Deleted connection profile ${profiles[0].tenant}`,
|
|
510
|
+
state
|
|
511
|
+
});
|
|
423
512
|
} else {
|
|
424
513
|
if (profiles.length > 1) {
|
|
425
|
-
printMessage(
|
|
514
|
+
printMessage({
|
|
515
|
+
message: `Multiple matching profiles found.`,
|
|
516
|
+
type: 'error',
|
|
517
|
+
state
|
|
518
|
+
});
|
|
426
519
|
profiles.forEach(p => {
|
|
427
|
-
printMessage(
|
|
520
|
+
printMessage({
|
|
521
|
+
message: `- ${p.tenant}`,
|
|
522
|
+
type: 'error',
|
|
523
|
+
state
|
|
524
|
+
});
|
|
525
|
+
});
|
|
526
|
+
printMessage({
|
|
527
|
+
message: `Please specify a unique sub-string`,
|
|
528
|
+
type: 'error',
|
|
529
|
+
state
|
|
428
530
|
});
|
|
429
|
-
printMessage(`Please specify a unique sub-string`, 'error');
|
|
430
531
|
return null;
|
|
431
532
|
} else {
|
|
432
|
-
printMessage(
|
|
533
|
+
printMessage({
|
|
534
|
+
message: `No connection profile ${host} found`,
|
|
535
|
+
state
|
|
536
|
+
});
|
|
433
537
|
}
|
|
434
538
|
}
|
|
435
539
|
} else if (err.code === 'ENOENT') {
|
|
436
|
-
printMessage(
|
|
540
|
+
printMessage({
|
|
541
|
+
message: `Connection profile file ${filename} not found`,
|
|
542
|
+
state
|
|
543
|
+
});
|
|
437
544
|
} else {
|
|
438
|
-
printMessage(
|
|
545
|
+
printMessage({
|
|
546
|
+
message: `Error in deleting connection profile: ${err.code}`,
|
|
547
|
+
type: 'error',
|
|
548
|
+
state
|
|
549
|
+
});
|
|
439
550
|
}
|
|
440
551
|
});
|
|
441
552
|
}
|
|
@@ -447,9 +558,15 @@ export function deleteConnectionProfile({
|
|
|
447
558
|
export async function addNewServiceAccount({
|
|
448
559
|
state
|
|
449
560
|
}) {
|
|
450
|
-
debugMessage(
|
|
561
|
+
debugMessage({
|
|
562
|
+
message: `ConnectionProfileOps.addNewServiceAccount: start`,
|
|
563
|
+
state
|
|
564
|
+
});
|
|
451
565
|
const name = `Frodo-SA-${new Date().getTime()}`;
|
|
452
|
-
debugMessage(
|
|
566
|
+
debugMessage({
|
|
567
|
+
message: `ConnectionProfileOps.addNewServiceAccount: name=${name}...`,
|
|
568
|
+
state
|
|
569
|
+
});
|
|
453
570
|
const description = `${state.getUsername()}'s Frodo Service Account`;
|
|
454
571
|
const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];
|
|
455
572
|
const jwkPrivate = await createJwkRsa();
|
|
@@ -463,10 +580,16 @@ export async function addNewServiceAccount({
|
|
|
463
580
|
jwks,
|
|
464
581
|
state
|
|
465
582
|
});
|
|
466
|
-
debugMessage(
|
|
583
|
+
debugMessage({
|
|
584
|
+
message: `ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`,
|
|
585
|
+
state
|
|
586
|
+
});
|
|
467
587
|
state.setServiceAccountId(sa._id);
|
|
468
588
|
state.setServiceAccountJwk(jwkPrivate);
|
|
469
|
-
debugMessage(
|
|
589
|
+
debugMessage({
|
|
590
|
+
message: `ConnectionProfileOps.addNewServiceAccount: end`,
|
|
591
|
+
state
|
|
592
|
+
});
|
|
470
593
|
return sa;
|
|
471
594
|
}
|
|
472
595
|
//# sourceMappingURL=ConnectionProfileOps.js.map
|
|
@@ -4,6 +4,11 @@ export default class EmailTemplateOps {
|
|
|
4
4
|
this.state = state;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Email template type key used to build the IDM id: 'emailTemplate/<id>'
|
|
9
|
+
*/
|
|
10
|
+
EMAIL_TEMPLATE_TYPE = EMAIL_TEMPLATE_TYPE;
|
|
11
|
+
|
|
7
12
|
/**
|
|
8
13
|
* Get all email templates
|
|
9
14
|
* @returns {Promise} a promise that resolves to an array of email template objects
|
package/esm/ops/IdpOps.mjs
CHANGED
|
@@ -168,7 +168,10 @@ export async function putProviderByTypeAndId({
|
|
|
168
168
|
providerData,
|
|
169
169
|
state
|
|
170
170
|
}) {
|
|
171
|
-
debugMessage(
|
|
171
|
+
debugMessage({
|
|
172
|
+
message: `IdpOps.putProviderByTypeAndId: start`,
|
|
173
|
+
state
|
|
174
|
+
});
|
|
172
175
|
try {
|
|
173
176
|
const response = await _putProviderByTypeAndId({
|
|
174
177
|
type: providerType,
|
|
@@ -176,7 +179,10 @@ export async function putProviderByTypeAndId({
|
|
|
176
179
|
providerData,
|
|
177
180
|
state
|
|
178
181
|
});
|
|
179
|
-
debugMessage(
|
|
182
|
+
debugMessage({
|
|
183
|
+
message: `IdpOps.putProviderByTypeAndId: end`,
|
|
184
|
+
state
|
|
185
|
+
});
|
|
180
186
|
return response;
|
|
181
187
|
} catch (importError) {
|
|
182
188
|
var _importError$response, _importError$response2, _importError$response3;
|
|
@@ -187,18 +193,31 @@ export async function putProviderByTypeAndId({
|
|
|
187
193
|
validAttributes.push('_id', '_type');
|
|
188
194
|
for (const attribute of Object.keys(providerData)) {
|
|
189
195
|
if (!validAttributes.includes(attribute)) {
|
|
190
|
-
if (state.getVerbose()) printMessage(
|
|
196
|
+
if (state.getVerbose()) printMessage({
|
|
197
|
+
message: `\nRemoving invalid attribute: ${attribute}`,
|
|
198
|
+
type: 'warn',
|
|
199
|
+
newline: false,
|
|
200
|
+
state
|
|
201
|
+
});
|
|
191
202
|
delete providerData[attribute];
|
|
192
203
|
}
|
|
193
204
|
}
|
|
194
|
-
if (state.getVerbose()) printMessage(
|
|
205
|
+
if (state.getVerbose()) printMessage({
|
|
206
|
+
message: '\n',
|
|
207
|
+
type: 'warn',
|
|
208
|
+
newline: false,
|
|
209
|
+
state
|
|
210
|
+
});
|
|
195
211
|
const response = await _putProviderByTypeAndId({
|
|
196
212
|
type: providerType,
|
|
197
213
|
id: providerId,
|
|
198
214
|
providerData,
|
|
199
215
|
state
|
|
200
216
|
});
|
|
201
|
-
debugMessage(
|
|
217
|
+
debugMessage({
|
|
218
|
+
message: `IdpOps.putProviderByTypeAndId: end (after retry)`,
|
|
219
|
+
state
|
|
220
|
+
});
|
|
202
221
|
return response;
|
|
203
222
|
} else {
|
|
204
223
|
// re-throw unhandleable error
|
|
@@ -243,7 +262,10 @@ export async function exportSocialProvider({
|
|
|
243
262
|
providerId,
|
|
244
263
|
state
|
|
245
264
|
}) {
|
|
246
|
-
debugMessage(
|
|
265
|
+
debugMessage({
|
|
266
|
+
message: `IdpOps.exportSocialProvider: start`,
|
|
267
|
+
state
|
|
268
|
+
});
|
|
247
269
|
const idpData = await getSocialProvider({
|
|
248
270
|
providerId,
|
|
249
271
|
state
|
|
@@ -260,7 +282,10 @@ export async function exportSocialProvider({
|
|
|
260
282
|
scriptData.script = convertBase64TextToArray(scriptData.script);
|
|
261
283
|
exportData.script[idpData.transform] = scriptData;
|
|
262
284
|
}
|
|
263
|
-
debugMessage(
|
|
285
|
+
debugMessage({
|
|
286
|
+
message: `IdpOps.exportSocialProvider: end`,
|
|
287
|
+
state
|
|
288
|
+
});
|
|
264
289
|
return exportData;
|
|
265
290
|
}
|
|
266
291
|
|
|
@@ -277,9 +302,16 @@ export async function exportSocialProviders({
|
|
|
277
302
|
const allIdpsData = await getSocialIdentityProviders({
|
|
278
303
|
state
|
|
279
304
|
});
|
|
280
|
-
createProgressIndicator(
|
|
305
|
+
createProgressIndicator({
|
|
306
|
+
total: allIdpsData.length,
|
|
307
|
+
message: 'Exporting providers',
|
|
308
|
+
state
|
|
309
|
+
});
|
|
281
310
|
for (const idpData of allIdpsData) {
|
|
282
|
-
updateProgressIndicator(
|
|
311
|
+
updateProgressIndicator({
|
|
312
|
+
message: `Exporting provider ${idpData._id}`,
|
|
313
|
+
state
|
|
314
|
+
});
|
|
283
315
|
exportData.idp[idpData._id] = idpData;
|
|
284
316
|
if (idpData.transform) {
|
|
285
317
|
const scriptData = await getScript({
|
|
@@ -290,7 +322,10 @@ export async function exportSocialProviders({
|
|
|
290
322
|
exportData.script[idpData.transform] = scriptData;
|
|
291
323
|
}
|
|
292
324
|
}
|
|
293
|
-
stopProgressIndicator(
|
|
325
|
+
stopProgressIndicator({
|
|
326
|
+
message: `${allIdpsData.length} providers exported.`,
|
|
327
|
+
state
|
|
328
|
+
});
|
|
294
329
|
return exportData;
|
|
295
330
|
}
|
|
296
331
|
|
|
@@ -389,8 +424,16 @@ export async function importSocialProviders({
|
|
|
389
424
|
});
|
|
390
425
|
} catch (error) {
|
|
391
426
|
var _error$response;
|
|
392
|
-
printMessage(
|
|
393
|
-
|
|
427
|
+
printMessage({
|
|
428
|
+
message: ((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error,
|
|
429
|
+
type: 'error',
|
|
430
|
+
state
|
|
431
|
+
});
|
|
432
|
+
printMessage({
|
|
433
|
+
message: `\nError importing provider ${idpId}`,
|
|
434
|
+
type: 'error',
|
|
435
|
+
state
|
|
436
|
+
});
|
|
394
437
|
outcome = false;
|
|
395
438
|
}
|
|
396
439
|
}
|