@rockcarver/frodo-cli 0.23.1-4 → 0.23.1-6

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.
Files changed (60) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/esm/app.js +2 -0
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +13 -6
  5. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  6. package/esm/cli/authz/authz-policy-delete.js +43 -0
  7. package/esm/cli/authz/authz-policy-delete.js.map +1 -0
  8. package/esm/cli/authz/authz-policy-describe.js +30 -0
  9. package/esm/cli/authz/authz-policy-describe.js.map +1 -0
  10. package/esm/cli/authz/authz-policy-export.js +70 -0
  11. package/esm/cli/authz/authz-policy-export.js.map +1 -0
  12. package/esm/cli/authz/authz-policy-import.js +26 -0
  13. package/esm/cli/authz/authz-policy-import.js.map +1 -0
  14. package/esm/cli/authz/authz-policy-list.js +37 -0
  15. package/esm/cli/authz/authz-policy-list.js.map +1 -0
  16. package/esm/cli/authz/authz-policy.js +10 -0
  17. package/esm/cli/authz/authz-policy.js.map +1 -0
  18. package/esm/cli/authz/authz-set-delete.js +37 -0
  19. package/esm/cli/authz/authz-set-delete.js.map +1 -0
  20. package/esm/cli/authz/authz-set-describe.js +30 -0
  21. package/esm/cli/authz/authz-set-describe.js.map +1 -0
  22. package/esm/cli/authz/authz-set-export.js +52 -0
  23. package/esm/cli/authz/authz-set-export.js.map +1 -0
  24. package/esm/cli/authz/authz-set-import.js +57 -0
  25. package/esm/cli/authz/authz-set-import.js.map +1 -0
  26. package/esm/cli/authz/authz-set-list.js +25 -0
  27. package/esm/cli/authz/authz-set-list.js.map +1 -0
  28. package/esm/cli/authz/authz-set.js +10 -0
  29. package/esm/cli/authz/authz-set.js.map +1 -0
  30. package/esm/cli/authz/authz-type-delete.js +38 -0
  31. package/esm/cli/authz/authz-type-delete.js.map +1 -0
  32. package/esm/cli/authz/authz-type-describe.js +30 -0
  33. package/esm/cli/authz/authz-type-describe.js.map +1 -0
  34. package/esm/cli/authz/authz-type-export.js +22 -0
  35. package/esm/cli/authz/authz-type-export.js.map +1 -0
  36. package/esm/cli/authz/authz-type-import.js +22 -0
  37. package/esm/cli/authz/authz-type-import.js.map +1 -0
  38. package/esm/cli/authz/authz-type-list.js +32 -0
  39. package/esm/cli/authz/authz-type-list.js.map +1 -0
  40. package/esm/cli/authz/authz-type.js +10 -0
  41. package/esm/cli/authz/authz-type.js.map +1 -0
  42. package/esm/cli/authz/authz.js +12 -0
  43. package/esm/cli/authz/authz.js.map +1 -0
  44. package/esm/cli/email/email-template-import.js +4 -4
  45. package/esm/cli/email/email-template-import.js.map +1 -1
  46. package/esm/cli/idm/idm-import.js +8 -3
  47. package/esm/cli/idm/idm-import.js.map +1 -1
  48. package/esm/ops/EmailTemplateOps.js +79 -38
  49. package/esm/ops/EmailTemplateOps.js.map +1 -1
  50. package/esm/ops/IdmOps.js +25 -2
  51. package/esm/ops/IdmOps.js.map +1 -1
  52. package/esm/ops/PolicyOps.js +392 -0
  53. package/esm/ops/PolicyOps.js.map +1 -0
  54. package/esm/ops/PolicySetOps.js +373 -0
  55. package/esm/ops/PolicySetOps.js.map +1 -0
  56. package/esm/ops/ResourceTypeOps.js +323 -0
  57. package/esm/ops/ResourceTypeOps.js.map +1 -0
  58. package/esm/utils/Console.js +2 -0
  59. package/esm/utils/Console.js.map +1 -1
  60. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.23.1-6] - 2023-05-17
11
+
12
+ ## [0.23.1-5] - 2023-05-17
13
+
10
14
  ## [0.23.1-4] - 2023-04-20
11
15
 
12
16
  ### Changed
@@ -1100,7 +1104,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1100
1104
  - Fixed problem with adding connection profiles
1101
1105
  - Miscellaneous bug fixes
1102
1106
 
1103
- [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v0.23.1-4...HEAD
1107
+ [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v0.23.1-6...HEAD
1108
+
1109
+ [0.23.1-6]: https://github.com/rockcarver/frodo-cli/compare/v0.23.1-5...v0.23.1-6
1110
+
1111
+ [0.23.1-5]: https://github.com/rockcarver/frodo-cli/compare/v0.23.1-4...v0.23.1-5
1104
1112
 
1105
1113
  [0.23.1-4]: https://github.com/rockcarver/frodo-cli/compare/v0.23.1-3...v0.23.1-4
1106
1114
 
package/esm/app.js CHANGED
@@ -4,6 +4,7 @@ import { Command } from 'commander';
4
4
  // commands
5
5
  import admin from './cli/admin/admin';
6
6
  import agent from './cli/agent/agent';
7
+ import authz from './cli/authz/authz';
7
8
  import app from './cli/app/app';
8
9
  import conn from './cli/conn/conn';
9
10
  import email from './cli/email/email';
@@ -32,6 +33,7 @@ const {
32
33
  await initConnectionProfiles();
33
34
  program.addCommand(admin());
34
35
  program.addCommand(agent());
36
+ program.addCommand(authz());
35
37
  program.addCommand(app());
36
38
  program.addCommand(conn());
37
39
  program.addCommand(email());
package/esm/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","names":["ConnectionProfile","Command","admin","agent","app","conn","email","esv","idm","idp","info","journey","logging","realm","saml","script","service","theme","printMessage","getVersions","initConnectionProfiles","program","version","addCommand","showHelpAfterError","enablePositionalOptions","parse","e"],"sources":["app.ts"],"sourcesContent":["import { ConnectionProfile } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport app from './cli/app/app';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport logging from './cli/logging/logs';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\n// enable sample command template.\n// import something from './cli/_template/something';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\nconst { initConnectionProfiles } = ConnectionProfile;\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n await initConnectionProfiles();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(app());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(logging());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(theme());\n // enable sample command template.\n // program.addCommand(something());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n }\n})();\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,OAAO,QAAQ,WAAW;;AAEnC;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C;AACA;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,WAAW,QAAQ,iBAAiB;AAE7C,MAAM;EAAEC;AAAuB,CAAC,GAAGpB,iBAAiB;AAEpD,CAAC,YAAY;EACX,IAAI;IACF,MAAMqB,OAAO,GAAG,IAAIpB,OAAO,CAAC,OAAO,CAAC,CAACqB,OAAO,CAC1C,MAAMH,WAAW,CAAC,KAAK,CAAC,EACxB,eAAe,CAChB;IAEDD,YAAY,CAAC,MAAMC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;IAEpD,MAAMC,sBAAsB,EAAE;IAE9BC,OAAO,CAACE,UAAU,CAACrB,KAAK,EAAE,CAAC;IAC3BmB,OAAO,CAACE,UAAU,CAACpB,KAAK,EAAE,CAAC;IAC3BkB,OAAO,CAACE,UAAU,CAACnB,GAAG,EAAE,CAAC;IACzBiB,OAAO,CAACE,UAAU,CAAClB,IAAI,EAAE,CAAC;IAC1BgB,OAAO,CAACE,UAAU,CAACjB,KAAK,EAAE,CAAC;IAC3Be,OAAO,CAACE,UAAU,CAAChB,GAAG,EAAE,CAAC;IACzBc,OAAO,CAACE,UAAU,CAACf,GAAG,EAAE,CAAC;IACzBa,OAAO,CAACE,UAAU,CAACd,GAAG,EAAE,CAAC;IACzBY,OAAO,CAACE,UAAU,CAACb,IAAI,EAAE,CAAC;IAC1BW,OAAO,CAACE,UAAU,CAACZ,OAAO,EAAE,CAAC;IAC7BU,OAAO,CAACE,UAAU,CAACX,OAAO,EAAE,CAAC;IAC7BS,OAAO,CAACE,UAAU,CAACV,KAAK,EAAE,CAAC;IAC3BQ,OAAO,CAACE,UAAU,CAACT,IAAI,EAAE,CAAC;IAC1BO,OAAO,CAACE,UAAU,CAACR,MAAM,EAAE,CAAC;IAC5BM,OAAO,CAACE,UAAU,CAACP,OAAO,EAAE,CAAC;IAC7BK,OAAO,CAACE,UAAU,CAACN,KAAK,EAAE,CAAC;IAC3B;IACA;;IAEAI,OAAO,CAACG,kBAAkB,EAAE;IAC5BH,OAAO,CAACI,uBAAuB,EAAE;IACjCJ,OAAO,CAACK,KAAK,EAAE;EACjB,CAAC,CAAC,OAAOC,CAAC,EAAE;IACVT,YAAY,CAAE,oCAAmCS,CAAE,EAAC,EAAE,OAAO,CAAC;EAChE;AACF,CAAC,GAAG"}
1
+ {"version":3,"file":"app.js","names":["ConnectionProfile","Command","admin","agent","authz","app","conn","email","esv","idm","idp","info","journey","logging","realm","saml","script","service","theme","printMessage","getVersions","initConnectionProfiles","program","version","addCommand","showHelpAfterError","enablePositionalOptions","parse","e"],"sources":["app.ts"],"sourcesContent":["import { ConnectionProfile } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport authz from './cli/authz/authz';\nimport app from './cli/app/app';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport logging from './cli/logging/logs';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\n// enable sample command template.\n// import something from './cli/_template/something';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\nconst { initConnectionProfiles } = ConnectionProfile;\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n await initConnectionProfiles();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(authz());\n program.addCommand(app());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(logging());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(theme());\n // enable sample command template.\n // program.addCommand(something());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n }\n})();\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,OAAO,QAAQ,WAAW;;AAEnC;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C;AACA;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,WAAW,QAAQ,iBAAiB;AAE7C,MAAM;EAAEC;AAAuB,CAAC,GAAGrB,iBAAiB;AAEpD,CAAC,YAAY;EACX,IAAI;IACF,MAAMsB,OAAO,GAAG,IAAIrB,OAAO,CAAC,OAAO,CAAC,CAACsB,OAAO,CAC1C,MAAMH,WAAW,CAAC,KAAK,CAAC,EACxB,eAAe,CAChB;IAEDD,YAAY,CAAC,MAAMC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;IAEpD,MAAMC,sBAAsB,EAAE;IAE9BC,OAAO,CAACE,UAAU,CAACtB,KAAK,EAAE,CAAC;IAC3BoB,OAAO,CAACE,UAAU,CAACrB,KAAK,EAAE,CAAC;IAC3BmB,OAAO,CAACE,UAAU,CAACpB,KAAK,EAAE,CAAC;IAC3BkB,OAAO,CAACE,UAAU,CAACnB,GAAG,EAAE,CAAC;IACzBiB,OAAO,CAACE,UAAU,CAAClB,IAAI,EAAE,CAAC;IAC1BgB,OAAO,CAACE,UAAU,CAACjB,KAAK,EAAE,CAAC;IAC3Be,OAAO,CAACE,UAAU,CAAChB,GAAG,EAAE,CAAC;IACzBc,OAAO,CAACE,UAAU,CAACf,GAAG,EAAE,CAAC;IACzBa,OAAO,CAACE,UAAU,CAACd,GAAG,EAAE,CAAC;IACzBY,OAAO,CAACE,UAAU,CAACb,IAAI,EAAE,CAAC;IAC1BW,OAAO,CAACE,UAAU,CAACZ,OAAO,EAAE,CAAC;IAC7BU,OAAO,CAACE,UAAU,CAACX,OAAO,EAAE,CAAC;IAC7BS,OAAO,CAACE,UAAU,CAACV,KAAK,EAAE,CAAC;IAC3BQ,OAAO,CAACE,UAAU,CAACT,IAAI,EAAE,CAAC;IAC1BO,OAAO,CAACE,UAAU,CAACR,MAAM,EAAE,CAAC;IAC5BM,OAAO,CAACE,UAAU,CAACP,OAAO,EAAE,CAAC;IAC7BK,OAAO,CAACE,UAAU,CAACN,KAAK,EAAE,CAAC;IAC3B;IACA;;IAEAI,OAAO,CAACG,kBAAkB,EAAE;IAC5BH,OAAO,CAACI,uBAAuB,EAAE;IACjCJ,OAAO,CAACK,KAAK,EAAE;EACjB,CAAC,CAAC,OAAOC,CAAC,EAAE;IACVT,YAAY,CAAE,oCAAmCS,CAAE,EAAC,EAAE,OAAO,CAAC;EAChE;AACF,CAAC,GAAG"}
@@ -12,7 +12,7 @@ const {
12
12
  createOAuth2ClientWithAdminPrivileges
13
13
  } = Admin;
14
14
  const program = new FrodoCommand('frodo admin create-oauth2-client-with-admin-privileges');
15
- program.description('Create an oauth2 client with admin privileges.').addOption(new Option('--client-id [id]', 'Client id.')).addOption(new Option('--client-secret [secret]', 'Client secret.')).addOption(new Option('--llt', 'Create a long-lived token and store it in a secret. The default secret name is esv-admin-token and the default token lifetime is 315,360,000 seconds (10 years). Both can be overwritten with the --llt-esv and --llt-ttl options.')).addOption(new Option('--llt-scope [scope]', 'Request the following scope(s). This option only applies if used with the --llt option.').default('fr:idm:*', 'fr:idm:*')).addOption(new Option('--llt-esv [esv]', 'Name of the secret to store the token in. This option only applies if used with the --llt option.').default('esv-admin-token', 'esv-admin-token')).addOption(new Option('--llt-ttl [ttl]', 'Token lifetime (seconds). This option only applies if used with the --llt option.').default(315360000, '315,360,000 seconds (10 years)')).action(
15
+ program.description('Create an oauth2 client with admin privileges.').addOption(new Option('--client-id [id]', 'Client id.')).addOption(new Option('--client-secret [secret]', 'Client secret.')).addOption(new Option('--llt', 'Create a long-lived token and store it in a secret. The default secret name is esv-admin-token and the default token lifetime is 315,360,000 seconds (10 years). Both can be overwritten with the --llt-esv and --llt-ttl options.')).addOption(new Option('--llt-scope [scope]', 'Request the following scope(s). This option only applies if used with the --llt option.').default('fr:idm:*', 'fr:idm:*')).addOption(new Option('--llt-esv [esv]', 'Name of the secret to store the token in. This option only applies if used with the --llt option.').default('esv-admin-token', 'esv-admin-token')).addOption(new Option('--no-llt-esv', "Don't store the token in a secret and output to console instead. This option only applies if used with the --llt option.")).addOption(new Option('--llt-ttl [ttl]', 'Token lifetime (seconds). This option only applies if used with the --llt option.').default(315360000, '315,360,000 seconds (10 years)')).action(
16
16
  // implement command logic inside action handler
17
17
  async (host, realm, user, password, options, command) => {
18
18
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
@@ -30,6 +30,7 @@ async (host, realm, user, password, options, command) => {
30
30
  await createOAuth2ClientWithAdminPrivileges(clientId, clientSecret);
31
31
  } catch (error) {
32
32
  printMessage(error, 'error');
33
+ process.exitCode = 1;
33
34
  }
34
35
  const table = new Table({
35
36
  chars: {
@@ -54,20 +55,26 @@ async (host, realm, user, password, options, command) => {
54
55
  },
55
56
  wordWrap: true
56
57
  });
58
+ table.push(['Client ID'['brightCyan'], clientId]);
59
+ table.push(['Client Secret'['brightCyan'], clientSecret]);
57
60
  if (options.llt) {
58
61
  try {
59
62
  const response = await createLongLivedToken(clientId, clientSecret, options.scope, options.lltEsv, options.lltTtl);
60
- table.push(['Secret Name'['brightCyan'], response.secret]);
63
+ if (options.lltEsv) table.push(['Secret Name'['brightCyan'], response.secret]);
61
64
  table.push(['Scope'['brightCyan'], response.scope]);
62
- // table.push(['Token Lifetime'.brightCyan, response.expires_in]);
63
65
  table.push(['Expires'['brightCyan'], response.expires_on]);
66
+ printMessage(table.toString());
67
+ if (options.lltEsv === false) {
68
+ printMessage(`\nBearer token:`, 'info');
69
+ printMessage(`${response.access_token}`, 'data');
70
+ }
64
71
  } catch (error) {
65
72
  printMessage(error, 'error');
73
+ process.exitCode = 1;
66
74
  }
75
+ } else {
76
+ printMessage(table.toString());
67
77
  }
68
- table.push(['Client ID'['brightCyan'], clientId]);
69
- table.push(['Client Secret'['brightCyan'], clientSecret]);
70
- printMessage(table.toString());
71
78
  } else {
72
79
  process.exitCode = 1;
73
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admin-create-oauth2-client-with-admin-privileges.js","names":["FrodoCommand","Option","v4","uuidv4","Table","Authenticate","Admin","state","printMessage","getTokens","createLongLivedToken","createOAuth2ClientWithAdminPrivileges","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getRealm","clientId","clientSecret","error","table","chars","top","bottom","left","mid","right","style","wordWrap","llt","response","scope","lltEsv","lltTtl","push","secret","expires_on","toString","process","exitCode","parse"],"sources":["cli/admin/admin-create-oauth2-client-with-admin-privileges.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { v4 as uuidv4 } from 'uuid';\nimport Table from 'cli-table3';\nimport { Authenticate, Admin, state } from '@rockcarver/frodo-lib';\nimport { printMessage } from '../../utils/Console.js';\n\nconst { getTokens } = Authenticate;\nconst { createLongLivedToken, createOAuth2ClientWithAdminPrivileges } = Admin;\n\nconst program = new FrodoCommand(\n 'frodo admin create-oauth2-client-with-admin-privileges'\n);\n\nprogram\n .description('Create an oauth2 client with admin privileges.')\n .addOption(new Option('--client-id [id]', 'Client id.'))\n .addOption(new Option('--client-secret [secret]', 'Client secret.'))\n .addOption(\n new Option(\n '--llt',\n 'Create a long-lived token and store it in a secret. The default secret name is esv-admin-token and the default token lifetime is 315,360,000 seconds (10 years). Both can be overwritten with the --llt-esv and --llt-ttl options.'\n )\n )\n .addOption(\n new Option(\n '--llt-scope [scope]',\n 'Request the following scope(s). This option only applies if used with the --llt option.'\n ).default('fr:idm:*', 'fr:idm:*')\n )\n .addOption(\n new Option(\n '--llt-esv [esv]',\n 'Name of the secret to store the token in. This option only applies if used with the --llt option.'\n ).default('esv-admin-token', 'esv-admin-token')\n )\n .addOption(\n new Option(\n '--llt-ttl [ttl]',\n 'Token lifetime (seconds). This option only applies if used with the --llt option.'\n ).default(315360000, '315,360,000 seconds (10 years)')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n printMessage(\n `Creating oauth2 client with admin privileges in realm \"${state.getRealm()}\"...`\n );\n let clientId = uuidv4();\n let clientSecret = uuidv4();\n if (options.clientId) {\n clientId = options.clientId;\n }\n if (options.clientSecret) {\n clientSecret = options.clientSecret;\n }\n try {\n await createOAuth2ClientWithAdminPrivileges(clientId, clientSecret);\n } catch (error) {\n printMessage(error, 'error');\n }\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n if (options.llt) {\n try {\n const response = await createLongLivedToken(\n clientId,\n clientSecret,\n options.scope,\n options.lltEsv,\n options.lltTtl\n );\n table.push(['Secret Name'['brightCyan'], response.secret]);\n table.push(['Scope'['brightCyan'], response.scope]);\n // table.push(['Token Lifetime'.brightCyan, response.expires_in]);\n table.push(['Expires'['brightCyan'], response.expires_on]);\n } catch (error) {\n printMessage(error, 'error');\n }\n }\n table.push(['Client ID'['brightCyan'], clientId]);\n table.push(['Client Secret'['brightCyan'], clientSecret]);\n printMessage(table.toString());\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"admin-create-oauth2-client-with-admin-privileges.js","names":["FrodoCommand","Option","v4","uuidv4","Table","Authenticate","Admin","state","printMessage","getTokens","createLongLivedToken","createOAuth2ClientWithAdminPrivileges","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getRealm","clientId","clientSecret","error","process","exitCode","table","chars","top","bottom","left","mid","right","style","wordWrap","push","llt","response","scope","lltEsv","lltTtl","secret","expires_on","toString","access_token","parse"],"sources":["cli/admin/admin-create-oauth2-client-with-admin-privileges.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { v4 as uuidv4 } from 'uuid';\nimport Table from 'cli-table3';\nimport { Authenticate, Admin, state } from '@rockcarver/frodo-lib';\nimport { printMessage } from '../../utils/Console.js';\n\nconst { getTokens } = Authenticate;\nconst { createLongLivedToken, createOAuth2ClientWithAdminPrivileges } = Admin;\n\nconst program = new FrodoCommand(\n 'frodo admin create-oauth2-client-with-admin-privileges'\n);\n\nprogram\n .description('Create an oauth2 client with admin privileges.')\n .addOption(new Option('--client-id [id]', 'Client id.'))\n .addOption(new Option('--client-secret [secret]', 'Client secret.'))\n .addOption(\n new Option(\n '--llt',\n 'Create a long-lived token and store it in a secret. The default secret name is esv-admin-token and the default token lifetime is 315,360,000 seconds (10 years). Both can be overwritten with the --llt-esv and --llt-ttl options.'\n )\n )\n .addOption(\n new Option(\n '--llt-scope [scope]',\n 'Request the following scope(s). This option only applies if used with the --llt option.'\n ).default('fr:idm:*', 'fr:idm:*')\n )\n .addOption(\n new Option(\n '--llt-esv [esv]',\n 'Name of the secret to store the token in. This option only applies if used with the --llt option.'\n ).default('esv-admin-token', 'esv-admin-token')\n )\n .addOption(\n new Option(\n '--no-llt-esv',\n \"Don't store the token in a secret and output to console instead. This option only applies if used with the --llt option.\"\n )\n )\n .addOption(\n new Option(\n '--llt-ttl [ttl]',\n 'Token lifetime (seconds). This option only applies if used with the --llt option.'\n ).default(315360000, '315,360,000 seconds (10 years)')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n printMessage(\n `Creating oauth2 client with admin privileges in realm \"${state.getRealm()}\"...`\n );\n let clientId = uuidv4();\n let clientSecret = uuidv4();\n if (options.clientId) {\n clientId = options.clientId;\n }\n if (options.clientSecret) {\n clientSecret = options.clientSecret;\n }\n try {\n await createOAuth2ClientWithAdminPrivileges(clientId, clientSecret);\n } catch (error) {\n printMessage(error, 'error');\n process.exitCode = 1;\n }\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n table.push(['Client ID'['brightCyan'], clientId]);\n table.push(['Client Secret'['brightCyan'], clientSecret]);\n if (options.llt) {\n try {\n const response = await createLongLivedToken(\n clientId,\n clientSecret,\n options.scope,\n options.lltEsv,\n options.lltTtl\n );\n if (options.lltEsv)\n table.push(['Secret Name'['brightCyan'], response.secret]);\n table.push(['Scope'['brightCyan'], response.scope]);\n table.push(['Expires'['brightCyan'], response.expires_on]);\n printMessage(table.toString());\n if (options.lltEsv === false) {\n printMessage(`\\nBearer token:`, 'info');\n printMessage(`${response.access_token}`, 'data');\n }\n } catch (error) {\n printMessage(error, 'error');\n process.exitCode = 1;\n }\n } else {\n printMessage(table.toString());\n }\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { printMessage, verboseMessage } from '../../utils/Console.js';
5
+ import { deletePolicy, deletePolicies, deletePoliciesByPolicySet } from '../../ops/PolicyOps';
6
+ const {
7
+ getTokens
8
+ } = Authenticate;
9
+ const program = new FrodoCommand('frodo authz policy delete');
10
+ program.description('Delete authorization policies.').addOption(new Option('-i, --policy-id <policy-id>', 'Policy id/name. If specified, -a is ignored.')).addOption(new Option('-a, --all', 'Delete all policies in a realm. Ignored with -i.')).addOption(new Option('--set-id <set-id>', 'Policy set id/name. Ignored with -i.')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ // delete by id
15
+ if (options.policyId && (await getTokens())) {
16
+ verboseMessage('Deleting authorization policy...');
17
+ const outcome = await deletePolicy(options.policyId);
18
+ if (!outcome) process.exitCode = 1;
19
+ }
20
+ // --all -a by policy set
21
+ else if (options.setId && options.all && (await getTokens())) {
22
+ verboseMessage(`Deleting all authorization policies in policy set ${options.setId}...`);
23
+ const outcome = await deletePoliciesByPolicySet(options.setId);
24
+ if (!outcome) process.exitCode = 1;
25
+ }
26
+ // --all -a
27
+ else if (options.all && (await getTokens())) {
28
+ verboseMessage('Deleting all authorization policies...');
29
+ const outcome = await deletePolicies();
30
+ if (!outcome) process.exitCode = 1;
31
+ }
32
+ // unrecognized combination of options or no options
33
+ else {
34
+ printMessage('Unrecognized combination of options or no options...');
35
+ program.help();
36
+ process.exitCode = 1;
37
+ }
38
+ }
39
+ // end command logic inside action handler
40
+ );
41
+
42
+ program.parse();
43
+ //# sourceMappingURL=authz-policy-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-policy-delete.js","names":["FrodoCommand","Option","Authenticate","printMessage","verboseMessage","deletePolicy","deletePolicies","deletePoliciesByPolicySet","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","policyId","outcome","process","exitCode","setId","all","help","parse"],"sources":["cli/authz/authz-policy-delete.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\nimport {\n deletePolicy,\n deletePolicies,\n deletePoliciesByPolicySet,\n} from '../../ops/PolicyOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo authz policy delete');\n\nprogram\n .description('Delete authorization policies.')\n .addOption(\n new Option(\n '-i, --policy-id <policy-id>',\n 'Policy id/name. If specified, -a is ignored.'\n )\n )\n .addOption(\n new Option('-a, --all', 'Delete all policies in a realm. Ignored with -i.')\n )\n .addOption(\n new Option('--set-id <set-id>', 'Policy set id/name. Ignored with -i.')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // delete by id\n if (options.policyId && (await getTokens())) {\n verboseMessage('Deleting authorization policy...');\n const outcome = await deletePolicy(options.policyId);\n if (!outcome) process.exitCode = 1;\n }\n // --all -a by policy set\n else if (options.setId && options.all && (await getTokens())) {\n verboseMessage(\n `Deleting all authorization policies in policy set ${options.setId}...`\n );\n const outcome = await deletePoliciesByPolicySet(options.setId);\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage('Deleting all authorization policies...');\n const outcome = await deletePolicies();\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,YAAY,EAAEC,cAAc,QAAQ,wBAAwB;AACrE,SACEC,YAAY,EACZC,cAAc,EACdC,yBAAyB,QACpB,qBAAqB;AAE5B,MAAM;EAAEC;AAAU,CAAC,GAAGN,YAAY;AAElC,MAAMO,OAAO,GAAG,IAAIT,YAAY,CAAC,2BAA2B,CAAC;AAE7DS,OAAO,CACJC,WAAW,CAAC,gCAAgC,CAAC,CAC7CC,SAAS,CACR,IAAIV,MAAM,CACR,6BAA6B,EAC7B,8CAA8C,CAC/C,CACF,CACAU,SAAS,CACR,IAAIV,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC,CAC5E,CACAU,SAAS,CACR,IAAIV,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC,CACxE,CACAW,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD;EACA,IAAID,OAAO,CAACG,QAAQ,KAAK,MAAMZ,SAAS,EAAE,CAAC,EAAE;IAC3CJ,cAAc,CAAC,kCAAkC,CAAC;IAClD,MAAMiB,OAAO,GAAG,MAAMhB,YAAY,CAACY,OAAO,CAACG,QAAQ,CAAC;IACpD,IAAI,CAACC,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IAAIN,OAAO,CAACO,KAAK,IAAIP,OAAO,CAACQ,GAAG,KAAK,MAAMjB,SAAS,EAAE,CAAC,EAAE;IAC5DJ,cAAc,CACX,qDAAoDa,OAAO,CAACO,KAAM,KAAI,CACxE;IACD,MAAMH,OAAO,GAAG,MAAMd,yBAAyB,CAACU,OAAO,CAACO,KAAK,CAAC;IAC9D,IAAI,CAACH,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IAAIN,OAAO,CAACQ,GAAG,KAAK,MAAMjB,SAAS,EAAE,CAAC,EAAE;IAC3CJ,cAAc,CAAC,wCAAwC,CAAC;IACxD,MAAMiB,OAAO,GAAG,MAAMf,cAAc,EAAE;IACtC,IAAI,CAACe,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK;IACHpB,YAAY,CAAC,sDAAsD,CAAC;IACpEM,OAAO,CAACiB,IAAI,EAAE;IACdJ,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHd,OAAO,CAACkB,KAAK,EAAE"}
@@ -0,0 +1,30 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { verboseMessage } from '../../utils/Console.js';
5
+ import { describePolicy } from '../../ops/PolicyOps';
6
+ const {
7
+ getTokens
8
+ } = Authenticate;
9
+ const program = new FrodoCommand('frodo authz policy describe');
10
+ program.description('Describe authorization policies.').addOption(new Option('-i, --policy-id <policy-id>', 'Policy id/name.').makeOptionMandatory()).addOption(new Option('--json', 'Output in JSON format.')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ if (options.policyId && (await getTokens())) {
15
+ verboseMessage(`Describing authorization policy ${options.policyId}...`);
16
+ const outcome = await describePolicy(options.policyId, options.json);
17
+ if (!outcome) process.exitCode = 1;
18
+ }
19
+ // unrecognized combination of options or no options
20
+ else {
21
+ verboseMessage('Unrecognized combination of options or no options...');
22
+ program.help();
23
+ process.exitCode = 1;
24
+ }
25
+ }
26
+ // end command logic inside action handler
27
+ );
28
+
29
+ program.parse();
30
+ //# sourceMappingURL=authz-policy-describe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-policy-describe.js","names":["FrodoCommand","Option","Authenticate","verboseMessage","describePolicy","getTokens","program","description","addOption","makeOptionMandatory","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","policyId","outcome","json","process","exitCode","help","parse"],"sources":["cli/authz/authz-policy-describe.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { describePolicy } from '../../ops/PolicyOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo authz policy describe');\n\nprogram\n .description('Describe authorization policies.')\n .addOption(\n new Option(\n '-i, --policy-id <policy-id>',\n 'Policy id/name.'\n ).makeOptionMandatory()\n )\n .addOption(new Option('--json', 'Output in JSON format.'))\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (options.policyId && (await getTokens())) {\n verboseMessage(\n `Describing authorization policy ${options.policyId}...`\n );\n const outcome = await describePolicy(options.policyId, options.json);\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n verboseMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,cAAc,QAAQ,qBAAqB;AAEpD,MAAM;EAAEC;AAAU,CAAC,GAAGH,YAAY;AAElC,MAAMI,OAAO,GAAG,IAAIN,YAAY,CAAC,6BAA6B,CAAC;AAE/DM,OAAO,CACJC,WAAW,CAAC,kCAAkC,CAAC,CAC/CC,SAAS,CACR,IAAIP,MAAM,CACR,6BAA6B,EAC7B,iBAAiB,CAClB,CAACQ,mBAAmB,EAAE,CACxB,CACAD,SAAS,CAAC,IAAIP,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CACzDS,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD,IAAID,OAAO,CAACG,QAAQ,KAAK,MAAMb,SAAS,EAAE,CAAC,EAAE;IAC3CF,cAAc,CACX,mCAAkCY,OAAO,CAACG,QAAS,KAAI,CACzD;IACD,MAAMC,OAAO,GAAG,MAAMf,cAAc,CAACW,OAAO,CAACG,QAAQ,EAAEH,OAAO,CAACK,IAAI,CAAC;IACpE,IAAI,CAACD,OAAO,EAAEE,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK;IACHnB,cAAc,CAAC,sDAAsD,CAAC;IACtEG,OAAO,CAACiB,IAAI,EAAE;IACdF,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHhB,OAAO,CAACkB,KAAK,EAAE"}
@@ -0,0 +1,70 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { exportPolicyToFile, exportPoliciesToFile, exportPoliciesByPolicySetToFile, exportPoliciesToFiles, exportPoliciesByPolicySetToFiles } from '../../ops/PolicyOps';
5
+ import { verboseMessage } from '../../utils/Console';
6
+ const {
7
+ getTokens
8
+ } = Authenticate;
9
+ const program = new FrodoCommand('frodo authz policy export');
10
+ program.description('Export authorization policies.').addOption(new Option('-i, --policy-id <policy-id>', 'Policy id. If specified, -a and -A are ignored.')).addOption(new Option('--set-id <set-id>', 'Policy set id/name. Ignored with -i.')).addOption(new Option('-f, --file <file>', 'Name of the export file.')).addOption(new Option('-a, --all', 'Export policies to a single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Export policies to separate files (*.policy.authz.json) in the current directory. Ignored with -i or -a.')).addOption(new Option('--no-deps', 'Do not include any dependencies (policy sets, scripts, resource types).')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ // export
15
+ if (options.policyId && (await getTokens())) {
16
+ verboseMessage('Exporting authorization policy to file...');
17
+ const outcome = exportPolicyToFile(options.policyId, options.file, {
18
+ useStringArrays: true,
19
+ deps: options.deps
20
+ });
21
+ if (!outcome) process.exitCode = 1;
22
+ }
23
+ // -a/--all by policy set
24
+ else if (options.setId && options.all && (await getTokens())) {
25
+ verboseMessage(`Exporting all authorization policies in policy set ${options.setId} to file...`);
26
+ const outcome = await exportPoliciesByPolicySetToFile(options.setId, options.file, {
27
+ useStringArrays: true,
28
+ deps: options.deps
29
+ });
30
+ if (!outcome) process.exitCode = 1;
31
+ }
32
+ // -a/--all
33
+ else if (options.all && (await getTokens())) {
34
+ verboseMessage('Exporting all authorization policies to file...');
35
+ const outcome = await exportPoliciesToFile(options.file, {
36
+ useStringArrays: true,
37
+ deps: options.deps
38
+ });
39
+ if (!outcome) process.exitCode = 1;
40
+ }
41
+ // -A/--all-separate by policy set
42
+ else if (options.setId && options.allSeparate && (await getTokens())) {
43
+ verboseMessage(`Exporting all authorization policies in policy set ${options.setId} to separate files...`);
44
+ const outcome = await exportPoliciesByPolicySetToFiles(options.setId, {
45
+ useStringArrays: true,
46
+ deps: options.deps
47
+ });
48
+ if (!outcome) process.exitCode = 1;
49
+ }
50
+ // -A/--all-separate
51
+ else if (options.allSeparate && (await getTokens())) {
52
+ verboseMessage('Exporting all authorization policies to separate files...');
53
+ const outcome = await exportPoliciesToFiles({
54
+ useStringArrays: true,
55
+ deps: options.deps
56
+ });
57
+ if (!outcome) process.exitCode = 1;
58
+ }
59
+ // unrecognized combination of options or no options
60
+ else {
61
+ verboseMessage('Unrecognized combination of options or no options...');
62
+ program.help();
63
+ process.exitCode = 1;
64
+ }
65
+ }
66
+ // end command logic inside action handler
67
+ );
68
+
69
+ program.parse();
70
+ //# sourceMappingURL=authz-policy-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-policy-export.js","names":["FrodoCommand","Option","Authenticate","exportPolicyToFile","exportPoliciesToFile","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","verboseMessage","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","policyId","outcome","file","useStringArrays","deps","process","exitCode","setId","all","allSeparate","help","parse"],"sources":["cli/authz/authz-policy-export.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport {\n exportPolicyToFile,\n exportPoliciesToFile,\n exportPoliciesByPolicySetToFile,\n exportPoliciesToFiles,\n exportPoliciesByPolicySetToFiles,\n} from '../../ops/PolicyOps';\nimport { verboseMessage } from '../../utils/Console';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo authz policy export');\n\nprogram\n .description('Export authorization policies.')\n .addOption(\n new Option(\n '-i, --policy-id <policy-id>',\n 'Policy id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option('--set-id <set-id>', 'Policy set id/name. Ignored with -i.')\n )\n .addOption(new Option('-f, --file <file>', 'Name of the export file.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Export policies to a single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export policies to separate files (*.policy.authz.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .addOption(\n new Option(\n '--no-deps',\n 'Do not include any dependencies (policy sets, scripts, resource types).'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // export\n if (options.policyId && (await getTokens())) {\n verboseMessage('Exporting authorization policy to file...');\n const outcome = exportPolicyToFile(options.policyId, options.file, {\n useStringArrays: true,\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // -a/--all by policy set\n else if (options.setId && options.all && (await getTokens())) {\n verboseMessage(\n `Exporting all authorization policies in policy set ${options.setId} to file...`\n );\n const outcome = await exportPoliciesByPolicySetToFile(\n options.setId,\n options.file,\n {\n useStringArrays: true,\n deps: options.deps,\n }\n );\n if (!outcome) process.exitCode = 1;\n }\n // -a/--all\n else if (options.all && (await getTokens())) {\n verboseMessage('Exporting all authorization policies to file...');\n const outcome = await exportPoliciesToFile(options.file, {\n useStringArrays: true,\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // -A/--all-separate by policy set\n else if (options.setId && options.allSeparate && (await getTokens())) {\n verboseMessage(\n `Exporting all authorization policies in policy set ${options.setId} to separate files...`\n );\n const outcome = await exportPoliciesByPolicySetToFiles(options.setId, {\n useStringArrays: true,\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // -A/--all-separate\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage(\n 'Exporting all authorization policies to separate files...'\n );\n const outcome = await exportPoliciesToFiles({\n useStringArrays: true,\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n verboseMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { importPolicyFromFile } from '../../ops/PolicyOps';
5
+ const {
6
+ getTokens
7
+ } = Authenticate;
8
+ const program = new FrodoCommand('frodo authz policy import');
9
+ program.description('Import authorization policies.').addOption(new Option('-i, --policy-id <policy-id>', 'Policy id. If specified, only one policy is imported and the options -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import.')).addOption(new Option('-a, --all', 'Import all policies from single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Import all policies from separate files (*.policy.authz.json) in the current directory. Ignored with -i or -a.')).action(
10
+ // implement command logic inside action handler
11
+ async (host, realm, user, password, options, command) => {
12
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
13
+ if (await getTokens()) {
14
+ const outcome = importPolicyFromFile(options.policyId, options.file, {
15
+ deps: options.deps
16
+ });
17
+ if (!outcome) process.exitCode = 1;
18
+ } else {
19
+ process.exitCode = 1;
20
+ }
21
+ }
22
+ // end command logic inside action handler
23
+ );
24
+
25
+ program.parse();
26
+ //# sourceMappingURL=authz-policy-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-policy-import.js","names":["FrodoCommand","Option","Authenticate","importPolicyFromFile","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","outcome","policyId","file","deps","process","exitCode","parse"],"sources":["cli/authz/authz-policy-import.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport { importPolicyFromFile } from '../../ops/PolicyOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo authz policy import');\n\nprogram\n .description('Import authorization policies.')\n .addOption(\n new Option(\n '-i, --policy-id <policy-id>',\n 'Policy id. If specified, only one policy is imported and the options -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Import all policies from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all policies from separate files (*.policy.authz.json) in the current directory. Ignored with -i or -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n const outcome = importPolicyFromFile(options.policyId, options.file, {\n deps: options.deps,\n });\n if (!outcome) process.exitCode = 1;\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,oBAAoB,QAAQ,qBAAqB;AAE1D,MAAM;EAAEC;AAAU,CAAC,GAAGF,YAAY;AAElC,MAAMG,OAAO,GAAG,IAAIL,YAAY,CAAC,2BAA2B,CAAC;AAE7DK,OAAO,CACJC,WAAW,CAAC,gCAAgC,CAAC,CAC7CC,SAAS,CACR,IAAIN,MAAM,CACR,6BAA6B,EAC7B,6FAA6F,CAC9F,CACF,CACAM,SAAS,CAAC,IAAIN,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CACzEM,SAAS,CACR,IAAIN,MAAM,CACR,WAAW,EACX,wDAAwD,CACzD,CACF,CACAM,SAAS,CACR,IAAIN,MAAM,CACR,oBAAoB,EACpB,gHAAgH,CACjH,CACF,CACAO,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD,IAAI,MAAMV,SAAS,EAAE,EAAE;IACrB,MAAMY,OAAO,GAAGb,oBAAoB,CAACU,OAAO,CAACI,QAAQ,EAAEJ,OAAO,CAACK,IAAI,EAAE;MACnEC,IAAI,EAAEN,OAAO,CAACM;IAChB,CAAC,CAAC;IACF,IAAI,CAACH,OAAO,EAAEI,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC,CAAC,MAAM;IACLD,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHhB,OAAO,CAACiB,KAAK,EAAE"}
@@ -0,0 +1,37 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { verboseMessage } from '../../utils/Console.js';
5
+ import { listPolicies, listPoliciesByPolicySet } from '../../ops/PolicyOps';
6
+ const {
7
+ getTokens
8
+ } = Authenticate;
9
+ const program = new FrodoCommand('frodo authz policy list');
10
+ program.description('List authorization policies.').addOption(new Option('--set-id <set-id>', 'Policy set id/name.')).addOption(new Option('-l, --long', 'Long with all fields.').default(false, 'false')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ // by policy set
15
+ if (options.setId && (await getTokens())) {
16
+ verboseMessage(`Listing authorization policies in policy set ${options.setId}...`);
17
+ const outcome = listPoliciesByPolicySet(options.setId, options.long);
18
+ if (!outcome) process.exitCode = 1;
19
+ }
20
+ // all policies
21
+ else if (await getTokens()) {
22
+ verboseMessage(`Listing authorization policies...`);
23
+ const outcome = listPolicies(options.long);
24
+ if (!outcome) process.exitCode = 1;
25
+ }
26
+ // unrecognized combination of options or no options
27
+ else {
28
+ verboseMessage('Unrecognized combination of options or no options...');
29
+ program.help();
30
+ process.exitCode = 1;
31
+ }
32
+ }
33
+ // end command logic inside action handler
34
+ );
35
+
36
+ program.parse();
37
+ //# sourceMappingURL=authz-policy-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-policy-list.js","names":["FrodoCommand","Option","Authenticate","verboseMessage","listPolicies","listPoliciesByPolicySet","getTokens","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","setId","outcome","long","process","exitCode","help","parse"],"sources":["cli/authz/authz-policy-list.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { listPolicies, listPoliciesByPolicySet } from '../../ops/PolicyOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo authz policy list');\n\nprogram\n .description('List authorization policies.')\n .addOption(new Option('--set-id <set-id>', 'Policy set id/name.'))\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // by policy set\n if (options.setId && (await getTokens())) {\n verboseMessage(\n `Listing authorization policies in policy set ${options.setId}...`\n );\n const outcome = listPoliciesByPolicySet(options.setId, options.long);\n if (!outcome) process.exitCode = 1;\n }\n // all policies\n else if (await getTokens()) {\n verboseMessage(`Listing authorization policies...`);\n const outcome = listPolicies(options.long);\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n verboseMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,YAAY,EAAEC,uBAAuB,QAAQ,qBAAqB;AAE3E,MAAM;EAAEC;AAAU,CAAC,GAAGJ,YAAY;AAElC,MAAMK,OAAO,GAAG,IAAIP,YAAY,CAAC,yBAAyB,CAAC;AAE3DO,OAAO,CACJC,WAAW,CAAC,8BAA8B,CAAC,CAC3CC,SAAS,CAAC,IAAIR,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC,CACjEQ,SAAS,CACR,IAAIR,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACS,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAC1E,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD;EACA,IAAID,OAAO,CAACG,KAAK,KAAK,MAAMb,SAAS,EAAE,CAAC,EAAE;IACxCH,cAAc,CACX,gDAA+Ca,OAAO,CAACG,KAAM,KAAI,CACnE;IACD,MAAMC,OAAO,GAAGf,uBAAuB,CAACW,OAAO,CAACG,KAAK,EAAEH,OAAO,CAACK,IAAI,CAAC;IACpE,IAAI,CAACD,OAAO,EAAEE,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IAAI,MAAMjB,SAAS,EAAE,EAAE;IAC1BH,cAAc,CAAE,mCAAkC,CAAC;IACnD,MAAMiB,OAAO,GAAGhB,YAAY,CAACY,OAAO,CAACK,IAAI,CAAC;IAC1C,IAAI,CAACD,OAAO,EAAEE,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK;IACHpB,cAAc,CAAC,sDAAsD,CAAC;IACtEI,OAAO,CAACiB,IAAI,EAAE;IACdF,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHhB,OAAO,CAACkB,KAAK,EAAE"}
@@ -0,0 +1,10 @@
1
+ import { FrodoStubCommand } from '../FrodoCommand';
2
+ const program = new FrodoStubCommand('frodo authz policy');
3
+ program.description('Manages authorization policies.');
4
+ program.command('delete', 'Delete authorization policies.');
5
+ program.command('describe', 'Describe authorization policies.');
6
+ program.command('export', 'Export authorization policies.');
7
+ program.command('import', 'Import authorization policies.');
8
+ program.command('list', 'List authorization policies.');
9
+ program.parse();
10
+ //# sourceMappingURL=authz-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-policy.js","names":["FrodoStubCommand","program","description","command","parse"],"sources":["cli/authz/authz-policy.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\n\nconst program = new FrodoStubCommand('frodo authz policy');\n\nprogram.description('Manages authorization policies.');\n\nprogram.command('delete', 'Delete authorization policies.');\n\nprogram.command('describe', 'Describe authorization policies.');\n\nprogram.command('export', 'Export authorization policies.');\n\nprogram.command('import', 'Import authorization policies.');\n\nprogram.command('list', 'List authorization policies.');\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,OAAO,GAAG,IAAID,gBAAgB,CAAC,oBAAoB,CAAC;AAE1DC,OAAO,CAACC,WAAW,CAAC,iCAAiC,CAAC;AAEtDD,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,gCAAgC,CAAC;AAE3DF,OAAO,CAACE,OAAO,CAAC,UAAU,EAAE,kCAAkC,CAAC;AAE/DF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,gCAAgC,CAAC;AAE3DF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,gCAAgC,CAAC;AAE3DF,OAAO,CAACE,OAAO,CAAC,MAAM,EAAE,8BAA8B,CAAC;AAEvDF,OAAO,CAACG,KAAK,EAAE"}
@@ -0,0 +1,37 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { printMessage, verboseMessage } from '../../utils/Console.js';
5
+ import { deletePolicySet, deletePolicySets } from '../../ops/PolicySetOps';
6
+ const {
7
+ getTokens
8
+ } = Authenticate;
9
+ const program = new FrodoCommand('frodo authz set delete');
10
+ program.description('Delete authorization policy sets.').addOption(new Option('-i, --set-id <set-id>', 'Policy set id/name.')).addOption(new Option('-a, --all', 'Delete all policy sets in a realm. Ignored with -i.')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ // delete by id
15
+ if (options.setId && (await getTokens())) {
16
+ verboseMessage('Deleting authorization policy set...');
17
+ const outcome = deletePolicySet(options.setId);
18
+ if (!outcome) process.exitCode = 1;
19
+ }
20
+ // --all -a
21
+ else if (options.all && (await getTokens())) {
22
+ verboseMessage('Deleting all authorization policy sets...');
23
+ const outcome = deletePolicySets();
24
+ if (!outcome) process.exitCode = 1;
25
+ }
26
+ // unrecognized combination of options or no options
27
+ else {
28
+ printMessage('Unrecognized combination of options or no options...');
29
+ program.help();
30
+ process.exitCode = 1;
31
+ }
32
+ }
33
+ // end command logic inside action handler
34
+ );
35
+
36
+ program.parse();
37
+ //# sourceMappingURL=authz-set-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-set-delete.js","names":["FrodoCommand","Option","Authenticate","printMessage","verboseMessage","deletePolicySet","deletePolicySets","getTokens","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","setId","outcome","process","exitCode","all","help","parse"],"sources":["cli/authz/authz-set-delete.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\nimport { deletePolicySet, deletePolicySets } from '../../ops/PolicySetOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo authz set delete');\n\nprogram\n .description('Delete authorization policy sets.')\n .addOption(new Option('-i, --set-id <set-id>', 'Policy set id/name.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Delete all policy sets in a realm. Ignored with -i.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // delete by id\n if (options.setId && (await getTokens())) {\n verboseMessage('Deleting authorization policy set...');\n const outcome = deletePolicySet(options.setId);\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage('Deleting all authorization policy sets...');\n const outcome = deletePolicySets();\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,YAAY,EAAEC,cAAc,QAAQ,wBAAwB;AACrE,SAASC,eAAe,EAAEC,gBAAgB,QAAQ,wBAAwB;AAE1E,MAAM;EAAEC;AAAU,CAAC,GAAGL,YAAY;AAElC,MAAMM,OAAO,GAAG,IAAIR,YAAY,CAAC,wBAAwB,CAAC;AAE1DQ,OAAO,CACJC,WAAW,CAAC,mCAAmC,CAAC,CAChDC,SAAS,CAAC,IAAIT,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC,CACrES,SAAS,CACR,IAAIT,MAAM,CACR,WAAW,EACX,qDAAqD,CACtD,CACF,CACAU,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD;EACA,IAAID,OAAO,CAACG,KAAK,KAAK,MAAMZ,SAAS,EAAE,CAAC,EAAE;IACxCH,cAAc,CAAC,sCAAsC,CAAC;IACtD,MAAMgB,OAAO,GAAGf,eAAe,CAACW,OAAO,CAACG,KAAK,CAAC;IAC9C,IAAI,CAACC,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IAAIN,OAAO,CAACO,GAAG,KAAK,MAAMhB,SAAS,EAAE,CAAC,EAAE;IAC3CH,cAAc,CAAC,2CAA2C,CAAC;IAC3D,MAAMgB,OAAO,GAAGd,gBAAgB,EAAE;IAClC,IAAI,CAACc,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK;IACHnB,YAAY,CAAC,sDAAsD,CAAC;IACpEK,OAAO,CAACgB,IAAI,EAAE;IACdH,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHd,OAAO,CAACiB,KAAK,EAAE"}
@@ -0,0 +1,30 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { verboseMessage } from '../../utils/Console.js';
5
+ import { describePolicySet } from '../../ops/PolicySetOps';
6
+ const {
7
+ getTokens
8
+ } = Authenticate;
9
+ const program = new FrodoCommand('frodo authz set describe');
10
+ program.description('Describe authorization policy sets.').addOption(new Option('-i, --set-id <set-id>', 'Policy set id/name.').makeOptionMandatory()).addOption(new Option('--json', 'Output in JSON format.')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ if (options.setId && (await getTokens())) {
15
+ verboseMessage(`Describing authorization policy set ${options.setId}...`);
16
+ const outcome = await describePolicySet(options.setId, options.json);
17
+ if (!outcome) process.exitCode = 1;
18
+ }
19
+ // unrecognized combination of options or no options
20
+ else {
21
+ verboseMessage('Unrecognized combination of options or no options...');
22
+ program.help();
23
+ process.exitCode = 1;
24
+ }
25
+ }
26
+ // end command logic inside action handler
27
+ );
28
+
29
+ program.parse();
30
+ //# sourceMappingURL=authz-set-describe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-set-describe.js","names":["FrodoCommand","Option","Authenticate","verboseMessage","describePolicySet","getTokens","program","description","addOption","makeOptionMandatory","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","setId","outcome","json","process","exitCode","help","parse"],"sources":["cli/authz/authz-set-describe.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { Authenticate } from '@rockcarver/frodo-lib';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { describePolicySet } from '../../ops/PolicySetOps';\n\nconst { getTokens } = Authenticate;\n\nconst program = new FrodoCommand('frodo authz set describe');\n\nprogram\n .description('Describe authorization policy sets.')\n .addOption(\n new Option(\n '-i, --set-id <set-id>',\n 'Policy set id/name.'\n ).makeOptionMandatory()\n )\n .addOption(new Option('--json', 'Output in JSON format.'))\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (options.setId && (await getTokens())) {\n verboseMessage(\n `Describing authorization policy set ${options.setId}...`\n );\n const outcome = await describePolicySet(options.setId, options.json);\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n verboseMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,iBAAiB,QAAQ,wBAAwB;AAE1D,MAAM;EAAEC;AAAU,CAAC,GAAGH,YAAY;AAElC,MAAMI,OAAO,GAAG,IAAIN,YAAY,CAAC,0BAA0B,CAAC;AAE5DM,OAAO,CACJC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,SAAS,CACR,IAAIP,MAAM,CACR,uBAAuB,EACvB,qBAAqB,CACtB,CAACQ,mBAAmB,EAAE,CACxB,CACAD,SAAS,CAAC,IAAIP,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CACzDS,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OAAO,CACR;EACD,IAAID,OAAO,CAACG,KAAK,KAAK,MAAMb,SAAS,EAAE,CAAC,EAAE;IACxCF,cAAc,CACX,uCAAsCY,OAAO,CAACG,KAAM,KAAI,CAC1D;IACD,MAAMC,OAAO,GAAG,MAAMf,iBAAiB,CAACW,OAAO,CAACG,KAAK,EAAEH,OAAO,CAACK,IAAI,CAAC;IACpE,IAAI,CAACD,OAAO,EAAEE,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK;IACHnB,cAAc,CAAC,sDAAsD,CAAC;IACtEG,OAAO,CAACiB,IAAI,EAAE;IACdF,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AAAA,CACD;;AAEHhB,OAAO,CAACkB,KAAK,EAAE"}
@@ -0,0 +1,52 @@
1
+ import { FrodoCommand } from '../FrodoCommand';
2
+ import { Option } from 'commander';
3
+ import { Authenticate } from '@rockcarver/frodo-lib';
4
+ import { exportPolicySetToFile, exportPolicySetsToFile, exportPolicySetsToFiles } from '../../ops/PolicySetOps';
5
+ import { verboseMessage } from '../../utils/Console';
6
+ const {
7
+ getTokens
8
+ } = Authenticate;
9
+ const program = new FrodoCommand('frodo authz set export');
10
+ program.description('Export authorization policy sets.').addOption(new Option('-i, --set-id <set-id>', 'Policy set id/name. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the export file.')).addOption(new Option('-a, --all', 'Export all applications/policy sets to a single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Export all applications/policy sets to separate files (*.authz.json) in the current directory. Ignored with -i or -a.')).addOption(new Option('--no-deps', 'Do not include any dependencies (policies, scripts, resource types).')).action(
11
+ // implement command logic inside action handler
12
+ async (host, realm, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
14
+ // export
15
+ if (options.setId && (await getTokens())) {
16
+ verboseMessage('Exporting authorization policy set to file...');
17
+ const outcome = exportPolicySetToFile(options.setId, options.file, {
18
+ useStringArrays: true,
19
+ deps: options.deps
20
+ });
21
+ if (!outcome) process.exitCode = 1;
22
+ }
23
+ // -a/--all
24
+ else if (options.all && (await getTokens())) {
25
+ verboseMessage('Exporting all authorization policy sets to file...');
26
+ const outcome = await exportPolicySetsToFile(options.file, {
27
+ useStringArrays: true,
28
+ deps: options.deps
29
+ });
30
+ if (!outcome) process.exitCode = 1;
31
+ }
32
+ // -A/--all-separate
33
+ else if (options.allSeparate && (await getTokens())) {
34
+ verboseMessage('Exporting all authorization policy sets to separate files...');
35
+ const outcome = await exportPolicySetsToFiles({
36
+ useStringArrays: true,
37
+ deps: options.deps
38
+ });
39
+ if (!outcome) process.exitCode = 1;
40
+ }
41
+ // unrecognized combination of options or no options
42
+ else {
43
+ verboseMessage('Unrecognized combination of options or no options...');
44
+ program.help();
45
+ process.exitCode = 1;
46
+ }
47
+ }
48
+ // end command logic inside action handler
49
+ );
50
+
51
+ program.parse();
52
+ //# sourceMappingURL=authz-set-export.js.map