@rockcarver/frodo-lib 0.19.0 → 0.19.1
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 +24 -1
- package/cjs/ops/PolicyOps.js +105 -47
- package/cjs/ops/PolicyOps.js.map +1 -1
- package/cjs/ops/PolicyOps.test.js.map +1 -1
- package/cjs/ops/PolicySetOps.js +102 -51
- package/cjs/ops/PolicySetOps.js.map +1 -1
- package/cjs/ops/PolicySetOps.test.js.map +1 -1
- package/esm/ops/PolicyOps.mjs +77 -27
- package/esm/ops/PolicyOps.test.mjs +21 -7
- package/esm/ops/PolicySetOps.mjs +80 -36
- package/esm/ops/PolicySetOps.test.mjs +12 -4
- package/package.json +1 -1
- package/types/ops/PolicyOps.d.ts +23 -11
- package/types/ops/PolicyOps.d.ts.map +1 -1
- package/types/ops/PolicySetOps.d.ts +21 -13
- package/types/ops/PolicySetOps.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.19.1] - 2023-05-21
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Support for authorization policies, policy sets, and resource types through new exported modules:
|
|
15
|
+
- ResourceType
|
|
16
|
+
- PolicySet
|
|
17
|
+
- Policy
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Updated dependencies
|
|
22
|
+
- rockcarver/frodo-cli#213: More debug logging for connection profile lookup by a unique substring. Use --debug to see the additional output. This is not yet a solution for rockcarver/frodo-cli#213 but should help identify the root cause.
|
|
23
|
+
- rockcarver/frodo-cli#216: More debug logging for the 2fa process and proper detection of unsupported webauthn factor.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
|
|
27
|
+
- \#236: Frodo now properly handles logging in as a tenant admin when admin federation is enabled.
|
|
28
|
+
- \#225: Always output original log event JSON in tailLogs function (`frodo logs tail` command in the cli)
|
|
29
|
+
- rockcarver/frodo-cli#218: Frodo now allows 3 errors when polling for status during a `frodo esv apply` before aborting.
|
|
30
|
+
|
|
10
31
|
## [0.19.0] - 2023-05-21
|
|
11
32
|
|
|
12
33
|
### Added
|
|
@@ -1122,7 +1143,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1122
1143
|
- Fixed problem with adding connection profiles
|
|
1123
1144
|
- Miscellaneous bug fixes
|
|
1124
1145
|
|
|
1125
|
-
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.19.
|
|
1146
|
+
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.19.1...HEAD
|
|
1147
|
+
|
|
1148
|
+
[0.19.1]: https://github.com/rockcarver/frodo-lib/compare/v0.19.0...v0.19.1
|
|
1126
1149
|
|
|
1127
1150
|
[0.19.0]: https://github.com/rockcarver/frodo-lib/compare/v0.18.9-7...v0.19.0
|
|
1128
1151
|
|
package/cjs/ops/PolicyOps.js
CHANGED
|
@@ -232,17 +232,18 @@ function _getScripts() {
|
|
|
232
232
|
});
|
|
233
233
|
return _getScripts.apply(this, arguments);
|
|
234
234
|
}
|
|
235
|
-
function
|
|
236
|
-
return
|
|
235
|
+
function exportPolicyPrerequisites(_x7, _x8) {
|
|
236
|
+
return _exportPolicyPrerequisites.apply(this, arguments);
|
|
237
237
|
}
|
|
238
238
|
/**
|
|
239
|
-
*
|
|
240
|
-
* @param {
|
|
241
|
-
* @
|
|
239
|
+
* Helper function to export dependencies of a policy set
|
|
240
|
+
* @param {unknown} policyData policy set data
|
|
241
|
+
* @param {PolicyExportOptions} options export options
|
|
242
|
+
* @param {PolicyExportInterface} exportData export data
|
|
242
243
|
*/
|
|
243
|
-
function
|
|
244
|
-
|
|
245
|
-
(0, _Console.debugMessage)("PolicyOps.
|
|
244
|
+
function _exportPolicyPrerequisites() {
|
|
245
|
+
_exportPolicyPrerequisites = _asyncToGenerator(function* (policyData, exportData) {
|
|
246
|
+
(0, _Console.debugMessage)("PolicyOps.exportPolicyPrerequisites: start [policy=".concat(policyData['name'], "]"));
|
|
246
247
|
// resource types
|
|
247
248
|
if (policyData.resourceTypeUuid) {
|
|
248
249
|
var resourceType = yield (0, _ResourceTypesApi.getResourceType)(policyData.resourceTypeUuid);
|
|
@@ -253,6 +254,21 @@ function _exportPolicyDependencies() {
|
|
|
253
254
|
var policySet = yield (0, _PolicySetOps.getPolicySet)(policyData.applicationName);
|
|
254
255
|
exportData.policyset[policyData.applicationName] = policySet;
|
|
255
256
|
}
|
|
257
|
+
(0, _Console.debugMessage)("PolicySetOps.exportPolicyPrerequisites: end");
|
|
258
|
+
});
|
|
259
|
+
return _exportPolicyPrerequisites.apply(this, arguments);
|
|
260
|
+
}
|
|
261
|
+
function exportPolicyDependencies(_x9, _x10, _x11) {
|
|
262
|
+
return _exportPolicyDependencies.apply(this, arguments);
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Export policy
|
|
266
|
+
* @param {string} policyId policy id/name
|
|
267
|
+
* @returns {Promise<PolicyExportInterface>} a promise that resolves to a PolicyExportInterface object
|
|
268
|
+
*/
|
|
269
|
+
function _exportPolicyDependencies() {
|
|
270
|
+
_exportPolicyDependencies = _asyncToGenerator(function* (policyData, options, exportData) {
|
|
271
|
+
(0, _Console.debugMessage)("PolicyOps.exportPolicyDependencies: start [policy=".concat(policyData['name'], "]"));
|
|
256
272
|
// scripts
|
|
257
273
|
var scripts = yield getScripts(policyData);
|
|
258
274
|
for (var scriptData of scripts) {
|
|
@@ -265,7 +281,7 @@ function _exportPolicyDependencies() {
|
|
|
265
281
|
});
|
|
266
282
|
return _exportPolicyDependencies.apply(this, arguments);
|
|
267
283
|
}
|
|
268
|
-
function exportPolicy(
|
|
284
|
+
function exportPolicy(_x12) {
|
|
269
285
|
return _exportPolicy.apply(this, arguments);
|
|
270
286
|
}
|
|
271
287
|
/**
|
|
@@ -274,11 +290,19 @@ function exportPolicy(_x10, _x11) {
|
|
|
274
290
|
* @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object
|
|
275
291
|
*/
|
|
276
292
|
function _exportPolicy() {
|
|
277
|
-
_exportPolicy = _asyncToGenerator(function* (policyId
|
|
293
|
+
_exportPolicy = _asyncToGenerator(function* (policyId) {
|
|
294
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
295
|
+
deps: true,
|
|
296
|
+
prereqs: false,
|
|
297
|
+
useStringArrays: true
|
|
298
|
+
};
|
|
278
299
|
(0, _Console.debugMessage)("PolicyOps.exportPolicy: start");
|
|
279
300
|
var policyData = yield getPolicy(policyId);
|
|
280
301
|
var exportData = createPolicyExportTemplate();
|
|
281
302
|
exportData.policy[policyData._id] = policyData;
|
|
303
|
+
if (options.prereqs) {
|
|
304
|
+
yield exportPolicyPrerequisites(policyData, exportData);
|
|
305
|
+
}
|
|
282
306
|
if (options.deps) {
|
|
283
307
|
yield exportPolicyDependencies(policyData, options, exportData);
|
|
284
308
|
}
|
|
@@ -287,17 +311,22 @@ function _exportPolicy() {
|
|
|
287
311
|
});
|
|
288
312
|
return _exportPolicy.apply(this, arguments);
|
|
289
313
|
}
|
|
290
|
-
function exportPolicies(
|
|
314
|
+
function exportPolicies() {
|
|
291
315
|
return _exportPolicies.apply(this, arguments);
|
|
292
316
|
}
|
|
293
317
|
/**
|
|
294
318
|
* Export policies by policy set
|
|
295
|
-
* @param {string}
|
|
319
|
+
* @param {string} policySetName policy set id/name
|
|
296
320
|
* @param {PolicyExportOptions} options export options
|
|
297
321
|
* @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object
|
|
298
322
|
*/
|
|
299
323
|
function _exportPolicies() {
|
|
300
|
-
_exportPolicies = _asyncToGenerator(function* (
|
|
324
|
+
_exportPolicies = _asyncToGenerator(function* () {
|
|
325
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
326
|
+
deps: true,
|
|
327
|
+
prereqs: false,
|
|
328
|
+
useStringArrays: true
|
|
329
|
+
};
|
|
301
330
|
(0, _Console.debugMessage)("PolicyOps.exportPolicies: start");
|
|
302
331
|
var exportData = createPolicyExportTemplate();
|
|
303
332
|
var errors = [];
|
|
@@ -305,6 +334,13 @@ function _exportPolicies() {
|
|
|
305
334
|
var policies = yield getPolicies();
|
|
306
335
|
for (var policyData of policies) {
|
|
307
336
|
exportData.policy[policyData._id] = policyData;
|
|
337
|
+
if (options.prereqs) {
|
|
338
|
+
try {
|
|
339
|
+
yield exportPolicyPrerequisites(policyData, exportData);
|
|
340
|
+
} catch (error) {
|
|
341
|
+
errors.push(error);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
308
344
|
if (options.deps) {
|
|
309
345
|
try {
|
|
310
346
|
yield exportPolicyDependencies(policyData, options, exportData);
|
|
@@ -325,7 +361,7 @@ function _exportPolicies() {
|
|
|
325
361
|
});
|
|
326
362
|
return _exportPolicies.apply(this, arguments);
|
|
327
363
|
}
|
|
328
|
-
function exportPoliciesByPolicySet(_x13
|
|
364
|
+
function exportPoliciesByPolicySet(_x13) {
|
|
329
365
|
return _exportPoliciesByPolicySet.apply(this, arguments);
|
|
330
366
|
}
|
|
331
367
|
/**
|
|
@@ -334,14 +370,26 @@ function exportPoliciesByPolicySet(_x13, _x14) {
|
|
|
334
370
|
* @param {PolicyExportInterface} exportData export data
|
|
335
371
|
*/
|
|
336
372
|
function _exportPoliciesByPolicySet() {
|
|
337
|
-
_exportPoliciesByPolicySet = _asyncToGenerator(function* (
|
|
373
|
+
_exportPoliciesByPolicySet = _asyncToGenerator(function* (policySetName) {
|
|
374
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
375
|
+
deps: true,
|
|
376
|
+
prereqs: false,
|
|
377
|
+
useStringArrays: true
|
|
378
|
+
};
|
|
338
379
|
(0, _Console.debugMessage)("PolicyOps.exportPolicies: start");
|
|
339
380
|
var exportData = createPolicyExportTemplate();
|
|
340
381
|
var errors = [];
|
|
341
382
|
try {
|
|
342
|
-
var policies = yield getPoliciesByPolicySet(
|
|
383
|
+
var policies = yield getPoliciesByPolicySet(policySetName);
|
|
343
384
|
for (var policyData of policies) {
|
|
344
385
|
exportData.policy[policyData._id] = policyData;
|
|
386
|
+
if (options.prereqs) {
|
|
387
|
+
try {
|
|
388
|
+
yield exportPolicyPrerequisites(policyData, exportData);
|
|
389
|
+
} catch (error) {
|
|
390
|
+
errors.push(error);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
345
393
|
if (options.deps) {
|
|
346
394
|
try {
|
|
347
395
|
yield exportPolicyDependencies(policyData, options, exportData);
|
|
@@ -362,16 +410,16 @@ function _exportPoliciesByPolicySet() {
|
|
|
362
410
|
});
|
|
363
411
|
return _exportPoliciesByPolicySet.apply(this, arguments);
|
|
364
412
|
}
|
|
365
|
-
function
|
|
366
|
-
return
|
|
413
|
+
function importPolicyPrerequisites(_x14, _x15) {
|
|
414
|
+
return _importPolicyPrerequisites.apply(this, arguments);
|
|
367
415
|
}
|
|
368
416
|
/**
|
|
369
417
|
* Helper function to import soft dependencies of a policy
|
|
370
418
|
* @param {PolicySkeleton} policyData policy object
|
|
371
419
|
* @param {PolicyExportInterface} exportData export data
|
|
372
420
|
*/
|
|
373
|
-
function
|
|
374
|
-
|
|
421
|
+
function _importPolicyPrerequisites() {
|
|
422
|
+
_importPolicyPrerequisites = _asyncToGenerator(function* (policyData, exportData) {
|
|
375
423
|
(0, _Console.debugMessage)("PolicyOps.importPolicyHardDependencies: start [policy=".concat(policyData._id, "]"));
|
|
376
424
|
var errors = [];
|
|
377
425
|
try {
|
|
@@ -409,20 +457,20 @@ function _importPolicyHardDependencies() {
|
|
|
409
457
|
}
|
|
410
458
|
(0, _Console.debugMessage)("PolicyOps.importPolicyHardDependencies: end");
|
|
411
459
|
});
|
|
412
|
-
return
|
|
460
|
+
return _importPolicyPrerequisites.apply(this, arguments);
|
|
413
461
|
}
|
|
414
|
-
function
|
|
415
|
-
return
|
|
462
|
+
function importPolicyDependencies(_x16, _x17) {
|
|
463
|
+
return _importPolicyDependencies.apply(this, arguments);
|
|
416
464
|
}
|
|
417
465
|
/**
|
|
418
466
|
* Import policy by id
|
|
419
|
-
* @param {string}
|
|
467
|
+
* @param {string} policyId policy id
|
|
420
468
|
* @param {PolicyExportInterface} importData import data
|
|
421
469
|
* @param {PolicyImportOptions} options import options
|
|
422
470
|
* @returns {Promise<PolicySkeleton>} imported policy object
|
|
423
471
|
*/
|
|
424
|
-
function
|
|
425
|
-
|
|
472
|
+
function _importPolicyDependencies() {
|
|
473
|
+
_importPolicyDependencies = _asyncToGenerator(function* (policyData, exportData) {
|
|
426
474
|
(0, _Console.debugMessage)("PolicyOps.importPolicySoftDependencies: start [policy=".concat(policyData._id, "]"));
|
|
427
475
|
var errors = [];
|
|
428
476
|
try {
|
|
@@ -454,9 +502,9 @@ function _importPolicySoftDependencies() {
|
|
|
454
502
|
}
|
|
455
503
|
(0, _Console.debugMessage)("PolicyOps.importPolicySoftDependencies: end");
|
|
456
504
|
});
|
|
457
|
-
return
|
|
505
|
+
return _importPolicyDependencies.apply(this, arguments);
|
|
458
506
|
}
|
|
459
|
-
function importPolicy(
|
|
507
|
+
function importPolicy(_x18, _x19) {
|
|
460
508
|
return _importPolicy.apply(this, arguments);
|
|
461
509
|
}
|
|
462
510
|
/**
|
|
@@ -466,22 +514,25 @@ function importPolicy(_x19, _x20) {
|
|
|
466
514
|
* @returns {Promise<PolicySkeleton>} imported policy object
|
|
467
515
|
*/
|
|
468
516
|
function _importPolicy() {
|
|
469
|
-
_importPolicy = _asyncToGenerator(function* (
|
|
517
|
+
_importPolicy = _asyncToGenerator(function* (policyId, importData) {
|
|
470
518
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
471
|
-
deps: true
|
|
519
|
+
deps: true,
|
|
520
|
+
prereqs: false
|
|
472
521
|
};
|
|
473
522
|
var response = null;
|
|
474
523
|
var errors = [];
|
|
475
524
|
var imported = [];
|
|
476
525
|
for (var id of Object.keys(importData.policy)) {
|
|
477
|
-
if (id ===
|
|
526
|
+
if (id === policyId) {
|
|
478
527
|
try {
|
|
479
528
|
var policyData = importData.policy[id];
|
|
480
|
-
delete policyData._provider;
|
|
481
529
|
delete policyData._rev;
|
|
482
|
-
if (options.
|
|
530
|
+
if (options.policySetName) {
|
|
531
|
+
policyData.applicationName = options.policySetName;
|
|
532
|
+
}
|
|
533
|
+
if (options.prereqs) {
|
|
483
534
|
try {
|
|
484
|
-
yield
|
|
535
|
+
yield importPolicyPrerequisites(policyData, importData);
|
|
485
536
|
} catch (error) {
|
|
486
537
|
errors.push(error);
|
|
487
538
|
}
|
|
@@ -494,7 +545,7 @@ function _importPolicy() {
|
|
|
494
545
|
}
|
|
495
546
|
if (options.deps) {
|
|
496
547
|
try {
|
|
497
|
-
yield
|
|
548
|
+
yield importPolicyDependencies(policyData, importData);
|
|
498
549
|
} catch (error) {
|
|
499
550
|
errors.push(error);
|
|
500
551
|
}
|
|
@@ -512,13 +563,13 @@ function _importPolicy() {
|
|
|
512
563
|
throw new Error("Import error:\n".concat(errorMessages));
|
|
513
564
|
}
|
|
514
565
|
if (0 === imported.length) {
|
|
515
|
-
throw new Error("Import error:\n".concat(
|
|
566
|
+
throw new Error("Import error:\n".concat(policyId, " not found in import data!"));
|
|
516
567
|
}
|
|
517
568
|
return response;
|
|
518
569
|
});
|
|
519
570
|
return _importPolicy.apply(this, arguments);
|
|
520
571
|
}
|
|
521
|
-
function importFirstPolicy(
|
|
572
|
+
function importFirstPolicy(_x20) {
|
|
522
573
|
return _importFirstPolicy.apply(this, arguments);
|
|
523
574
|
}
|
|
524
575
|
/**
|
|
@@ -530,7 +581,8 @@ function importFirstPolicy(_x21) {
|
|
|
530
581
|
function _importFirstPolicy() {
|
|
531
582
|
_importFirstPolicy = _asyncToGenerator(function* (importData) {
|
|
532
583
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
533
|
-
deps: true
|
|
584
|
+
deps: true,
|
|
585
|
+
prereqs: false
|
|
534
586
|
};
|
|
535
587
|
var response = null;
|
|
536
588
|
var errors = [];
|
|
@@ -538,11 +590,13 @@ function _importFirstPolicy() {
|
|
|
538
590
|
for (var id of Object.keys(importData.policy)) {
|
|
539
591
|
try {
|
|
540
592
|
var policyData = importData.policy[id];
|
|
541
|
-
delete policyData._provider;
|
|
542
593
|
delete policyData._rev;
|
|
543
|
-
if (options.
|
|
594
|
+
if (options.policySetName) {
|
|
595
|
+
policyData.applicationName = options.policySetName;
|
|
596
|
+
}
|
|
597
|
+
if (options.prereqs) {
|
|
544
598
|
try {
|
|
545
|
-
yield
|
|
599
|
+
yield importPolicyPrerequisites(policyData, importData);
|
|
546
600
|
} catch (error) {
|
|
547
601
|
errors.push(error);
|
|
548
602
|
}
|
|
@@ -555,7 +609,7 @@ function _importFirstPolicy() {
|
|
|
555
609
|
}
|
|
556
610
|
if (options.deps) {
|
|
557
611
|
try {
|
|
558
|
-
yield
|
|
612
|
+
yield importPolicyDependencies(policyData, importData);
|
|
559
613
|
} catch (error) {
|
|
560
614
|
errors.push(error);
|
|
561
615
|
}
|
|
@@ -579,13 +633,14 @@ function _importFirstPolicy() {
|
|
|
579
633
|
});
|
|
580
634
|
return _importFirstPolicy.apply(this, arguments);
|
|
581
635
|
}
|
|
582
|
-
function importPolicies(
|
|
636
|
+
function importPolicies(_x21) {
|
|
583
637
|
return _importPolicies.apply(this, arguments);
|
|
584
638
|
}
|
|
585
639
|
function _importPolicies() {
|
|
586
640
|
_importPolicies = _asyncToGenerator(function* (importData) {
|
|
587
641
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
588
|
-
deps: true
|
|
642
|
+
deps: true,
|
|
643
|
+
prereqs: false
|
|
589
644
|
};
|
|
590
645
|
var response = [];
|
|
591
646
|
var errors = [];
|
|
@@ -594,9 +649,12 @@ function _importPolicies() {
|
|
|
594
649
|
try {
|
|
595
650
|
var policyData = importData.policy[id];
|
|
596
651
|
delete policyData._rev;
|
|
597
|
-
if (options.
|
|
652
|
+
if (options.policySetName) {
|
|
653
|
+
policyData.applicationName = options.policySetName;
|
|
654
|
+
}
|
|
655
|
+
if (options.prereqs) {
|
|
598
656
|
try {
|
|
599
|
-
yield
|
|
657
|
+
yield importPolicyPrerequisites(policyData, importData);
|
|
600
658
|
} catch (error) {
|
|
601
659
|
errors.push(error);
|
|
602
660
|
}
|
|
@@ -609,7 +667,7 @@ function _importPolicies() {
|
|
|
609
667
|
}
|
|
610
668
|
if (options.deps) {
|
|
611
669
|
try {
|
|
612
|
-
yield
|
|
670
|
+
yield importPolicyDependencies(policyData, importData);
|
|
613
671
|
} catch (error) {
|
|
614
672
|
errors.push(error);
|
|
615
673
|
}
|
package/cjs/ops/PolicyOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyOps.js","names":["_PoliciesApi","require","_ScriptOps","_ExportImportUtils","_ApiTypes","_Console","_ResourceTypesApi","_PolicySetOps","_ResourceTypeOps","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","createPolicyExportTemplate","meta","getMetadata","script","policy","resourcetype","policyset","getPolicies","_getPolicies2","result","_getPolicies","getPoliciesByPolicySet","_x","_getPoliciesByPolicySet2","policySetId","data","_getPoliciesByPolicySet","getPolicy","_x2","_getPolicy2","policyId","_getPolicy","putPolicy","_x3","_x4","_putPolicy2","policyData","_putPolicy","deletePolicy","_x5","_deletePolicy2","_deletePolicy","findScriptUuids","condition","scriptUuids","type","PolicyConditionType","AND","toString","OR","NOT","push","conditions","cond","Script","scriptId","Set","getScripts","_x6","_getScripts","debugMessage","concat","errors","scripts","scriptUuid","getScript","message","length","errorMessages","map","join","Error","exportPolicyDependencies","_x7","_x8","_x9","_exportPolicyDependencies","options","exportData","resourceTypeUuid","resourceType","getResourceType","applicationName","policySet","getPolicySet","scriptData","useStringArrays","convertBase64TextToArray","_id","exportPolicy","_x10","_x11","_exportPolicy","deps","exportPolicies","_x12","_exportPolicies","policies","exportPoliciesByPolicySet","_x13","_x14","_exportPoliciesByPolicySet","importPolicyHardDependencies","_x15","_x16","_importPolicyHardDependencies","createResourceType","_error$response","response","status","updateResourceType","createPolicySet","_error$response2","updatePolicySet","_error$response3","_error$response3$data","_error$response4","_error$response4$data","importPolicySoftDependencies","_x17","_x18","_importPolicySoftDependencies","putScript","_error$response5","_error$response6","_error$response6$data","_error$response7","_error$response7$data","_error$response8","_error$response8$data","importPolicy","_x19","_x20","_importPolicy","name","importData","imported","id","Object","keys","_provider","_rev","_error$response9","_error$response9$data","importFirstPolicy","_x21","_importFirstPolicy","_error$response10","_error$response10$dat","importPolicies","_x22","_importPolicies","_error$response11","_error$response11$dat"],"sources":["ops/PolicyOps.ts"],"sourcesContent":["import {\n getPolicies as _getPolicies,\n getPoliciesByPolicySet as _getPoliciesByPolicySet,\n getPolicy as _getPolicy,\n putPolicy as _putPolicy,\n deletePolicy as _deletePolicy,\n} from '../api/PoliciesApi';\nimport { getScript, putScript } from './ScriptOps';\nimport { convertBase64TextToArray } from './utils/ExportImportUtils';\nimport { ExportMetaData } from './OpsTypes';\nimport {\n PolicyCondition,\n PolicyConditionType,\n PolicySetSkeleton,\n PolicySkeleton,\n ResourceTypeSkeleton,\n ScriptSkeleton,\n} from '../api/ApiTypes';\nimport { getMetadata } from './utils/ExportImportUtils';\nimport { debugMessage } from './utils/Console';\nimport { getResourceType } from '../api/ResourceTypesApi';\nimport { createPolicySet, getPolicySet, updatePolicySet } from './PolicySetOps';\nimport { createResourceType, updateResourceType } from './ResourceTypeOps';\n\nexport interface PolicyExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n resourcetype: Record<string, ResourceTypeSkeleton>;\n policy: Record<string, PolicySkeleton>;\n policyset: Record<string, PolicySetSkeleton>;\n}\n\n/**\n * Policy export options\n */\nexport interface PolicyExportOptions {\n /**\n * Use string arrays to store multi-line text in scripts.\n */\n useStringArrays: boolean;\n /**\n * Include any dependencies (policy sets, scripts, resource types).\n */\n deps: boolean;\n}\n\n/**\n * Policy import options\n */\nexport interface PolicyImportOptions {\n /**\n * Include any dependencies (policy sets, scripts, resource types).\n */\n deps: boolean;\n}\n\n/**\n * Create an empty export template\n * @returns {PolicyExportInterface} an empty export template\n */\nfunction createPolicyExportTemplate(): PolicyExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n policy: {},\n resourcetype: {},\n policyset: {},\n } as PolicyExportInterface;\n}\n\n/**\n * Get all policies\n * @returns {Promise<PolicySkeleton>} a promise that resolves to an array of policy set objects\n */\nexport async function getPolicies(): Promise<PolicySkeleton[]> {\n const { result } = await _getPolicies();\n return result;\n}\n\n/**\n * Get policies by policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<PolicySkeleton[]>} a promise resolving to an array of policy objects\n */\nexport async function getPoliciesByPolicySet(\n policySetId: string\n): Promise<PolicySkeleton[]> {\n const data = await _getPoliciesByPolicySet(policySetId);\n return data.result;\n}\n\n/**\n * Get policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function getPolicy(policyId: string): Promise<PolicySkeleton> {\n return _getPolicy(policyId);\n}\n\n/**\n * Put policy\n * @param {string} policyId policy id/name\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function putPolicy(\n policyId: string,\n policyData: PolicySkeleton\n): Promise<PolicySkeleton> {\n return _putPolicy(policyId, policyData);\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function deletePolicy(policyId: string): Promise<PolicySkeleton> {\n return _deletePolicy(policyId);\n}\n\n/**\n * Find all script references in a deeply-nested policy condition object\n * @param {PolicyCondition} condition condition object\n * @returns {string[]} array of script UUIDs\n * \n * Sample condition block:\n * \n \"condition\": {\n \"type\": \"AND\",\n \"conditions\": [\n {\n \"type\": \"Script\",\n \"scriptId\": \"62f18ede-e5e7-4a7b-8b73-1b02fcbd241a\"\n },\n {\n \"type\": \"AuthenticateToService\",\n \"authenticateToService\": \"TxAuthz\"\n },\n {\n \"type\": \"OR\",\n \"conditions\": [\n {\n \"type\": \"Session\",\n \"maxSessionTime\": 5,\n \"terminateSession\": false\n },\n {\n \"type\": \"OAuth2Scope\",\n \"requiredScopes\": [\n \"openid\"\n ]\n },\n {\n \"type\": \"NOT\",\n \"condition\": {\n \"type\": \"Script\",\n \"scriptId\": \"729ee140-a4e9-43af-b358-d60eeda13cc3\"\n }\n }\n ]\n }\n ]\n },\n*/\nexport function findScriptUuids(condition: PolicyCondition): string[] {\n let scriptUuids: string[] = [];\n if (!condition) return scriptUuids;\n if (\n condition.type === PolicyConditionType.AND.toString() ||\n condition.type === PolicyConditionType.OR.toString() ||\n condition.type === PolicyConditionType.NOT.toString()\n ) {\n // single condition\n if (condition.condition) {\n scriptUuids.push(...findScriptUuids(condition.condition));\n }\n // array of conditions\n if (condition.conditions) {\n for (const cond of condition.conditions) {\n scriptUuids.push(...findScriptUuids(cond));\n }\n }\n } else if (condition.type === PolicyConditionType.Script.toString()) {\n scriptUuids.push(condition.scriptId as string);\n }\n // de-duplicate\n scriptUuids = [...new Set(scriptUuids)];\n return scriptUuids;\n}\n\n/**\n * Get scripts for a policy object\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(\n policyData: PolicySkeleton\n): Promise<ScriptSkeleton[]> {\n debugMessage(`PolicyOps.getScripts: start [policy=${policyData['name']}]`);\n const errors = [];\n const scripts = [];\n try {\n const scriptUuids = findScriptUuids(policyData.condition);\n debugMessage(`found scripts: ${scriptUuids}`);\n for (const scriptUuid of scriptUuids) {\n try {\n const script = await getScript(scriptUuid);\n scripts.push(script);\n } catch (error) {\n error.message = `Error retrieving script ${scriptUuid} referenced in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error finding scripts in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicySetOps.getScripts: end`);\n return scripts;\n}\n\n/**\n * Helper function to export dependencies of a policy set\n * @param {unknown} policyData policy set data\n * @param {PolicyExportOptions} options export options\n * @param {PolicyExportInterface} exportData export data\n */\nasync function exportPolicyDependencies(\n policyData: PolicySkeleton,\n options: PolicyExportOptions,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.exportPolicyDependencies: start [policy=${policyData['name']}]`\n );\n // resource types\n if (policyData.resourceTypeUuid) {\n const resourceType = await getResourceType(policyData.resourceTypeUuid);\n exportData.resourcetype[policyData.resourceTypeUuid] = resourceType;\n }\n // policy set\n if (policyData.applicationName) {\n const policySet = await getPolicySet(policyData.applicationName);\n exportData.policyset[policyData.applicationName] = policySet;\n }\n // scripts\n const scripts = await getScripts(policyData);\n for (const scriptData of scripts) {\n if (options.useStringArrays) {\n scriptData.script = convertBase64TextToArray(scriptData.script);\n }\n exportData.script[scriptData._id] = scriptData;\n }\n debugMessage(`PolicySetOps.exportPolicySetDependencies: end`);\n}\n\n/**\n * Export policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to a PolicyExportInterface object\n */\nexport async function exportPolicy(\n policyId: string,\n options: PolicyExportOptions\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicy: start`);\n const policyData = await getPolicy(policyId);\n const exportData = createPolicyExportTemplate();\n exportData.policy[policyData._id] = policyData;\n if (options.deps) {\n await exportPolicyDependencies(policyData, options, exportData);\n }\n debugMessage(`PolicyOps.exportPolicy: end`);\n return exportData;\n}\n\n/**\n * Export policies\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPolicies(\n options: PolicyExportOptions\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPolicies();\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Export policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPoliciesByPolicySet(\n policySetId: string,\n options: PolicyExportOptions\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPoliciesByPolicySet(policySetId);\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Helper function to import hard dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicyHardDependencies(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicyHardDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // resource type\n if (exportData.resourcetype[policyData.resourceTypeUuid]) {\n try {\n debugMessage(`Importing resource type ${policyData.resourceTypeUuid}`);\n await createResourceType(\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n } catch (error) {\n if (error.response?.status === 409)\n await updateResourceType(\n policyData.resourceTypeUuid,\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n else throw error;\n }\n }\n // policy set\n if (exportData.policyset[policyData.applicationName]) {\n try {\n debugMessage(`Importing policy set ${policyData.applicationName}`);\n await createPolicySet(exportData.policyset[policyData.applicationName]);\n } catch (error) {\n if (error.response?.status === 409)\n await updatePolicySet(\n exportData.policyset[policyData.applicationName]\n );\n else throw error;\n }\n }\n } catch (error) {\n error.message = `Error importing hard dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import hard dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicyHardDependencies: end`);\n}\n\n/**\n * Helper function to import soft dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicySoftDependencies(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicySoftDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // scripts\n const scriptUuids = findScriptUuids(policyData.condition);\n for (const scriptUuid of scriptUuids) {\n try {\n const scriptData = exportData.script[scriptUuid];\n debugMessage(`Importing script ${scriptUuid}`);\n await putScript(scriptUuid, scriptData);\n } catch (error) {\n debugMessage(error.response?.data);\n error.message = `Error importing script ${scriptUuid} for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error importing soft dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import soft dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicySoftDependencies: end`);\n}\n\n/**\n * Import policy by id\n * @param {string} name client id\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importPolicy(\n name: string,\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n if (id === name) {\n try {\n const policyData = importData.policy[id];\n delete policyData._provider;\n delete policyData._rev;\n if (options.deps) {\n try {\n await importPolicyHardDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicySoftDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\n${name} not found in import data!`);\n }\n return response;\n}\n\n/**\n * Import first policy\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importFirstPolicy(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._provider;\n delete policyData._rev;\n if (options.deps) {\n try {\n await importPolicyHardDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicySoftDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n break;\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policy found in import data!`);\n }\n return response;\n}\n\n/**\n * Import policies\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton[]>} array of imported policy objects\n */\nexport async function importPolicies(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true }\n): Promise<PolicySkeleton[]> {\n const response = [];\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.deps) {\n try {\n await importPolicyHardDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response.push(await putPolicy(policyData._id, policyData));\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicySoftDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policies found in import data!`);\n }\n return response;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PolicyOps.js","names":["_PoliciesApi","require","_ScriptOps","_ExportImportUtils","_ApiTypes","_Console","_ResourceTypesApi","_PolicySetOps","_ResourceTypeOps","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","createPolicyExportTemplate","meta","getMetadata","script","policy","resourcetype","policyset","getPolicies","_getPolicies2","result","_getPolicies","getPoliciesByPolicySet","_x","_getPoliciesByPolicySet2","policySetId","data","_getPoliciesByPolicySet","getPolicy","_x2","_getPolicy2","policyId","_getPolicy","putPolicy","_x3","_x4","_putPolicy2","policyData","_putPolicy","deletePolicy","_x5","_deletePolicy2","_deletePolicy","findScriptUuids","condition","scriptUuids","type","PolicyConditionType","AND","toString","OR","NOT","push","conditions","cond","Script","scriptId","Set","getScripts","_x6","_getScripts","debugMessage","concat","errors","scripts","scriptUuid","getScript","message","length","errorMessages","map","join","Error","exportPolicyPrerequisites","_x7","_x8","_exportPolicyPrerequisites","exportData","resourceTypeUuid","resourceType","getResourceType","applicationName","policySet","getPolicySet","exportPolicyDependencies","_x9","_x10","_x11","_exportPolicyDependencies","options","scriptData","useStringArrays","convertBase64TextToArray","_id","exportPolicy","_x12","_exportPolicy","deps","prereqs","exportPolicies","_exportPolicies","policies","exportPoliciesByPolicySet","_x13","_exportPoliciesByPolicySet","policySetName","importPolicyPrerequisites","_x14","_x15","_importPolicyPrerequisites","createResourceType","_error$response","response","status","updateResourceType","createPolicySet","_error$response2","updatePolicySet","_error$response3","_error$response3$data","_error$response4","_error$response4$data","importPolicyDependencies","_x16","_x17","_importPolicyDependencies","putScript","_error$response5","_error$response6","_error$response6$data","_error$response7","_error$response7$data","_error$response8","_error$response8$data","importPolicy","_x18","_x19","_importPolicy","importData","imported","id","Object","keys","_rev","_error$response9","_error$response9$data","importFirstPolicy","_x20","_importFirstPolicy","_error$response10","_error$response10$dat","importPolicies","_x21","_importPolicies","_error$response11","_error$response11$dat"],"sources":["ops/PolicyOps.ts"],"sourcesContent":["import {\n getPolicies as _getPolicies,\n getPoliciesByPolicySet as _getPoliciesByPolicySet,\n getPolicy as _getPolicy,\n putPolicy as _putPolicy,\n deletePolicy as _deletePolicy,\n} from '../api/PoliciesApi';\nimport { getScript, putScript } from './ScriptOps';\nimport { convertBase64TextToArray } from './utils/ExportImportUtils';\nimport { ExportMetaData } from './OpsTypes';\nimport {\n PolicyCondition,\n PolicyConditionType,\n PolicySetSkeleton,\n PolicySkeleton,\n ResourceTypeSkeleton,\n ScriptSkeleton,\n} from '../api/ApiTypes';\nimport { getMetadata } from './utils/ExportImportUtils';\nimport { debugMessage } from './utils/Console';\nimport { getResourceType } from '../api/ResourceTypesApi';\nimport { createPolicySet, getPolicySet, updatePolicySet } from './PolicySetOps';\nimport { createResourceType, updateResourceType } from './ResourceTypeOps';\n\nexport interface PolicyExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n resourcetype: Record<string, ResourceTypeSkeleton>;\n policy: Record<string, PolicySkeleton>;\n policyset: Record<string, PolicySetSkeleton>;\n}\n\n/**\n * Policy export options\n */\nexport interface PolicyExportOptions {\n /**\n * Include any dependencies (scripts).\n */\n deps: boolean;\n /**\n * Include any prerequisites (policy sets, resource types).\n */\n prereqs: boolean;\n /**\n * Use string arrays to store multi-line text in scripts.\n */\n useStringArrays: boolean;\n}\n\n/**\n * Policy import options\n */\nexport interface PolicyImportOptions {\n /**\n * Include any dependencies (scripts).\n */\n deps: boolean;\n /**\n * Include any prerequisites (policy sets, resource types).\n */\n prereqs: boolean;\n /**\n * Import policies into different policy set\n */\n policySetName?: string;\n}\n\n/**\n * Create an empty export template\n * @returns {PolicyExportInterface} an empty export template\n */\nfunction createPolicyExportTemplate(): PolicyExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n policy: {},\n resourcetype: {},\n policyset: {},\n } as PolicyExportInterface;\n}\n\n/**\n * Get all policies\n * @returns {Promise<PolicySkeleton>} a promise that resolves to an array of policy set objects\n */\nexport async function getPolicies(): Promise<PolicySkeleton[]> {\n const { result } = await _getPolicies();\n return result;\n}\n\n/**\n * Get policies by policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<PolicySkeleton[]>} a promise resolving to an array of policy objects\n */\nexport async function getPoliciesByPolicySet(\n policySetId: string\n): Promise<PolicySkeleton[]> {\n const data = await _getPoliciesByPolicySet(policySetId);\n return data.result;\n}\n\n/**\n * Get policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function getPolicy(policyId: string): Promise<PolicySkeleton> {\n return _getPolicy(policyId);\n}\n\n/**\n * Put policy\n * @param {string} policyId policy id/name\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function putPolicy(\n policyId: string,\n policyData: PolicySkeleton\n): Promise<PolicySkeleton> {\n return _putPolicy(policyId, policyData);\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function deletePolicy(policyId: string): Promise<PolicySkeleton> {\n return _deletePolicy(policyId);\n}\n\n/**\n * Find all script references in a deeply-nested policy condition object\n * @param {PolicyCondition} condition condition object\n * @returns {string[]} array of script UUIDs\n * \n * Sample condition block:\n * \n \"condition\": {\n \"type\": \"AND\",\n \"conditions\": [\n {\n \"type\": \"Script\",\n \"scriptId\": \"62f18ede-e5e7-4a7b-8b73-1b02fcbd241a\"\n },\n {\n \"type\": \"AuthenticateToService\",\n \"authenticateToService\": \"TxAuthz\"\n },\n {\n \"type\": \"OR\",\n \"conditions\": [\n {\n \"type\": \"Session\",\n \"maxSessionTime\": 5,\n \"terminateSession\": false\n },\n {\n \"type\": \"OAuth2Scope\",\n \"requiredScopes\": [\n \"openid\"\n ]\n },\n {\n \"type\": \"NOT\",\n \"condition\": {\n \"type\": \"Script\",\n \"scriptId\": \"729ee140-a4e9-43af-b358-d60eeda13cc3\"\n }\n }\n ]\n }\n ]\n },\n*/\nexport function findScriptUuids(condition: PolicyCondition): string[] {\n let scriptUuids: string[] = [];\n if (!condition) return scriptUuids;\n if (\n condition.type === PolicyConditionType.AND.toString() ||\n condition.type === PolicyConditionType.OR.toString() ||\n condition.type === PolicyConditionType.NOT.toString()\n ) {\n // single condition\n if (condition.condition) {\n scriptUuids.push(...findScriptUuids(condition.condition));\n }\n // array of conditions\n if (condition.conditions) {\n for (const cond of condition.conditions) {\n scriptUuids.push(...findScriptUuids(cond));\n }\n }\n } else if (condition.type === PolicyConditionType.Script.toString()) {\n scriptUuids.push(condition.scriptId as string);\n }\n // de-duplicate\n scriptUuids = [...new Set(scriptUuids)];\n return scriptUuids;\n}\n\n/**\n * Get scripts for a policy object\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(\n policyData: PolicySkeleton\n): Promise<ScriptSkeleton[]> {\n debugMessage(`PolicyOps.getScripts: start [policy=${policyData['name']}]`);\n const errors = [];\n const scripts = [];\n try {\n const scriptUuids = findScriptUuids(policyData.condition);\n debugMessage(`found scripts: ${scriptUuids}`);\n for (const scriptUuid of scriptUuids) {\n try {\n const script = await getScript(scriptUuid);\n scripts.push(script);\n } catch (error) {\n error.message = `Error retrieving script ${scriptUuid} referenced in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error finding scripts in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicySetOps.getScripts: end`);\n return scripts;\n}\n\n/**\n * Helper function to export dependencies of a policy set\n * @param {unknown} policyData policy set data\n * @param {PolicyExportOptions} options export options\n * @param {PolicyExportInterface} exportData export data\n */\nasync function exportPolicyPrerequisites(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.exportPolicyPrerequisites: start [policy=${policyData['name']}]`\n );\n // resource types\n if (policyData.resourceTypeUuid) {\n const resourceType = await getResourceType(policyData.resourceTypeUuid);\n exportData.resourcetype[policyData.resourceTypeUuid] = resourceType;\n }\n // policy set\n if (policyData.applicationName) {\n const policySet = await getPolicySet(policyData.applicationName);\n exportData.policyset[policyData.applicationName] = policySet;\n }\n debugMessage(`PolicySetOps.exportPolicyPrerequisites: end`);\n}\n\n/**\n * Helper function to export dependencies of a policy set\n * @param {unknown} policyData policy set data\n * @param {PolicyExportOptions} options export options\n * @param {PolicyExportInterface} exportData export data\n */\nasync function exportPolicyDependencies(\n policyData: PolicySkeleton,\n options: PolicyExportOptions,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.exportPolicyDependencies: start [policy=${policyData['name']}]`\n );\n // scripts\n const scripts = await getScripts(policyData);\n for (const scriptData of scripts) {\n if (options.useStringArrays) {\n scriptData.script = convertBase64TextToArray(scriptData.script);\n }\n exportData.script[scriptData._id] = scriptData;\n }\n debugMessage(`PolicySetOps.exportPolicySetDependencies: end`);\n}\n\n/**\n * Export policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to a PolicyExportInterface object\n */\nexport async function exportPolicy(\n policyId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicy: start`);\n const policyData = await getPolicy(policyId);\n const exportData = createPolicyExportTemplate();\n exportData.policy[policyData._id] = policyData;\n if (options.prereqs) {\n await exportPolicyPrerequisites(policyData, exportData);\n }\n if (options.deps) {\n await exportPolicyDependencies(policyData, options, exportData);\n }\n debugMessage(`PolicyOps.exportPolicy: end`);\n return exportData;\n}\n\n/**\n * Export policies\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPolicies(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPolicies();\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.prereqs) {\n try {\n await exportPolicyPrerequisites(policyData, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Export policies by policy set\n * @param {string} policySetName policy set id/name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPoliciesByPolicySet(\n policySetName: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPoliciesByPolicySet(policySetName);\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.prereqs) {\n try {\n await exportPolicyPrerequisites(policyData, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Helper function to import hard dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicyPrerequisites(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicyHardDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // resource type\n if (exportData.resourcetype[policyData.resourceTypeUuid]) {\n try {\n debugMessage(`Importing resource type ${policyData.resourceTypeUuid}`);\n await createResourceType(\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n } catch (error) {\n if (error.response?.status === 409)\n await updateResourceType(\n policyData.resourceTypeUuid,\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n else throw error;\n }\n }\n // policy set\n if (exportData.policyset[policyData.applicationName]) {\n try {\n debugMessage(`Importing policy set ${policyData.applicationName}`);\n await createPolicySet(exportData.policyset[policyData.applicationName]);\n } catch (error) {\n if (error.response?.status === 409)\n await updatePolicySet(\n exportData.policyset[policyData.applicationName]\n );\n else throw error;\n }\n }\n } catch (error) {\n error.message = `Error importing hard dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import hard dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicyHardDependencies: end`);\n}\n\n/**\n * Helper function to import soft dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicyDependencies(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicySoftDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // scripts\n const scriptUuids = findScriptUuids(policyData.condition);\n for (const scriptUuid of scriptUuids) {\n try {\n const scriptData = exportData.script[scriptUuid];\n debugMessage(`Importing script ${scriptUuid}`);\n await putScript(scriptUuid, scriptData);\n } catch (error) {\n debugMessage(error.response?.data);\n error.message = `Error importing script ${scriptUuid} for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error importing soft dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import soft dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicySoftDependencies: end`);\n}\n\n/**\n * Import policy by id\n * @param {string} policyId policy id\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importPolicy(\n policyId: string,\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n if (id === policyId) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.policySetName) {\n policyData.applicationName = options.policySetName;\n }\n if (options.prereqs) {\n try {\n await importPolicyPrerequisites(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicyDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\n${policyId} not found in import data!`);\n }\n return response;\n}\n\n/**\n * Import first policy\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importFirstPolicy(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.policySetName) {\n policyData.applicationName = options.policySetName;\n }\n if (options.prereqs) {\n try {\n await importPolicyPrerequisites(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicyDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n break;\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policy found in import data!`);\n }\n return response;\n}\n\n/**\n * Import policies\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton[]>} array of imported policy objects\n */\nexport async function importPolicies(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<PolicySkeleton[]> {\n const response = [];\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.policySetName) {\n policyData.applicationName = options.policySetName;\n }\n if (options.prereqs) {\n try {\n await importPolicyPrerequisites(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response.push(await putPolicy(policyData._id, policyData));\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicyDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policies found in import data!`);\n }\n return response;\n}\n"],"mappings":"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"}
|