@rockcarver/frodo-cli 2.0.0-2 → 2.0.0-21
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 +186 -3
- package/esm/app.js +14 -5
- package/esm/app.js.map +1 -1
- package/esm/cli/FrodoCommand.js +18 -4
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/_template/something-delete.js +7 -4
- package/esm/cli/_template/something-delete.js.map +1 -1
- package/esm/cli/_template/something-describe.js +7 -4
- package/esm/cli/_template/something-describe.js.map +1 -1
- package/esm/cli/_template/something-else-delete.js +7 -4
- package/esm/cli/_template/something-else-delete.js.map +1 -1
- package/esm/cli/_template/something-else-describe.js +7 -4
- package/esm/cli/_template/something-else-describe.js.map +1 -1
- package/esm/cli/_template/something-else-export.js +7 -4
- package/esm/cli/_template/something-else-export.js.map +1 -1
- package/esm/cli/_template/something-else-import.js +7 -4
- package/esm/cli/_template/something-else-import.js.map +1 -1
- package/esm/cli/_template/something-else-list.js +7 -4
- package/esm/cli/_template/something-else-list.js.map +1 -1
- package/esm/cli/_template/something-else.js +1 -1
- package/esm/cli/_template/something-else.js.map +1 -1
- package/esm/cli/_template/something-export.js +7 -4
- package/esm/cli/_template/something-export.js.map +1 -1
- package/esm/cli/_template/something-import.js +7 -4
- package/esm/cli/_template/something-import.js.map +1 -1
- package/esm/cli/_template/something-list.js +7 -4
- package/esm/cli/_template/something-list.js.map +1 -1
- package/esm/cli/_template/something-other-delete.js +7 -4
- package/esm/cli/_template/something-other-delete.js.map +1 -1
- package/esm/cli/_template/something-other-describe.js +7 -4
- package/esm/cli/_template/something-other-describe.js.map +1 -1
- package/esm/cli/_template/something-other-export.js +7 -4
- package/esm/cli/_template/something-other-export.js.map +1 -1
- package/esm/cli/_template/something-other-import.js +7 -4
- package/esm/cli/_template/something-other-import.js.map +1 -1
- package/esm/cli/_template/something-other-list.js +7 -4
- package/esm/cli/_template/something-other-list.js.map +1 -1
- package/esm/cli/_template/something-other.js +1 -1
- package/esm/cli/_template/something-other.js.map +1 -1
- package/esm/cli/_template/something.js +2 -2
- package/esm/cli/_template/something.js.map +1 -1
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -4
- package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -7
- package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-federation-export.js +45 -0
- package/esm/cli/admin/admin-federation-export.js.map +1 -0
- package/esm/cli/admin/admin-federation-import.js +49 -0
- package/esm/cli/admin/admin-federation-import.js.map +1 -0
- package/esm/cli/admin/admin-federation-list.js +29 -0
- package/esm/cli/admin/admin-federation-list.js.map +1 -0
- package/esm/cli/admin/admin-federation.js +13 -0
- package/esm/cli/admin/admin-federation.js.map +1 -0
- package/esm/cli/admin/admin-get-access-token.js +12 -6
- package/esm/cli/admin/admin-get-access-token.js.map +1 -1
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +12 -6
- package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +10 -4
- package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +10 -4
- package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
- package/esm/cli/admin/admin-list-static-user-mappings.js +11 -5
- package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
- package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -5
- package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
- package/esm/cli/admin/admin-repair-org-model.js +11 -5
- package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -6
- package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
- package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -5
- package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
- package/esm/cli/admin/admin.js +3 -2
- package/esm/cli/admin/admin.js.map +1 -1
- package/esm/cli/agent/agent-delete.js +13 -6
- package/esm/cli/agent/agent-delete.js.map +1 -1
- package/esm/cli/agent/agent-describe.js +7 -4
- package/esm/cli/agent/agent-describe.js.map +1 -1
- package/esm/cli/agent/agent-export.js +8 -5
- package/esm/cli/agent/agent-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-delete.js +13 -6
- package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
- package/esm/cli/agent/agent-gateway-describe.js +7 -4
- package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
- package/esm/cli/agent/agent-gateway-export.js +8 -5
- package/esm/cli/agent/agent-gateway-export.js.map +1 -1
- package/esm/cli/agent/agent-gateway-import.js +8 -5
- package/esm/cli/agent/agent-gateway-import.js.map +1 -1
- package/esm/cli/agent/agent-gateway-list.js +7 -4
- package/esm/cli/agent/agent-gateway-list.js.map +1 -1
- package/esm/cli/agent/agent-gateway.js +1 -1
- package/esm/cli/agent/agent-gateway.js.map +1 -1
- package/esm/cli/agent/agent-import.js +8 -5
- package/esm/cli/agent/agent-import.js.map +1 -1
- package/esm/cli/agent/agent-java-delete.js +13 -6
- package/esm/cli/agent/agent-java-delete.js.map +1 -1
- package/esm/cli/agent/agent-java-describe.js +7 -4
- package/esm/cli/agent/agent-java-describe.js.map +1 -1
- package/esm/cli/agent/agent-java-export.js +8 -5
- package/esm/cli/agent/agent-java-export.js.map +1 -1
- package/esm/cli/agent/agent-java-import.js +8 -5
- package/esm/cli/agent/agent-java-import.js.map +1 -1
- package/esm/cli/agent/agent-java-list.js +7 -4
- package/esm/cli/agent/agent-java-list.js.map +1 -1
- package/esm/cli/agent/agent-java.js +1 -1
- package/esm/cli/agent/agent-java.js.map +1 -1
- package/esm/cli/agent/agent-list.js +7 -4
- package/esm/cli/agent/agent-list.js.map +1 -1
- package/esm/cli/agent/agent-web-delete.js +13 -6
- package/esm/cli/agent/agent-web-delete.js.map +1 -1
- package/esm/cli/agent/agent-web-describe.js +7 -4
- package/esm/cli/agent/agent-web-describe.js.map +1 -1
- package/esm/cli/agent/agent-web-export.js +8 -5
- package/esm/cli/agent/agent-web-export.js.map +1 -1
- package/esm/cli/agent/agent-web-import.js +8 -5
- package/esm/cli/agent/agent-web-import.js.map +1 -1
- package/esm/cli/agent/agent-web-list.js +7 -4
- package/esm/cli/agent/agent-web-list.js.map +1 -1
- package/esm/cli/agent/agent-web.js +1 -1
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/agent/agent.js +2 -2
- package/esm/cli/agent/agent.js.map +1 -1
- package/esm/cli/app/app-delete.js +27 -8
- package/esm/cli/app/app-delete.js.map +1 -1
- package/esm/cli/app/app-describe.js +9 -5
- package/esm/cli/app/app-describe.js.map +1 -1
- package/esm/cli/app/app-export.js +17 -13
- package/esm/cli/app/app-export.js.map +1 -1
- package/esm/cli/app/app-import.js +21 -17
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/app/app-list.js +12 -8
- package/esm/cli/app/app-list.js.map +1 -1
- package/esm/cli/app/app.js +8 -12
- package/esm/cli/app/app.js.map +1 -1
- package/esm/cli/authz/authz-policy-delete.js +10 -7
- package/esm/cli/authz/authz-policy-delete.js.map +1 -1
- package/esm/cli/authz/authz-policy-describe.js +8 -5
- package/esm/cli/authz/authz-policy-describe.js.map +1 -1
- package/esm/cli/authz/authz-policy-export.js +12 -9
- package/esm/cli/authz/authz-policy-export.js.map +1 -1
- package/esm/cli/authz/authz-policy-import.js +10 -7
- package/esm/cli/authz/authz-policy-import.js.map +1 -1
- package/esm/cli/authz/authz-policy-list.js +9 -6
- package/esm/cli/authz/authz-policy-list.js.map +1 -1
- package/esm/cli/authz/authz-policy.js +1 -1
- package/esm/cli/authz/authz-policy.js.map +1 -1
- package/esm/cli/authz/authz-set-delete.js +9 -6
- package/esm/cli/authz/authz-set-delete.js.map +1 -1
- package/esm/cli/authz/authz-set-describe.js +8 -5
- package/esm/cli/authz/authz-set-describe.js.map +1 -1
- package/esm/cli/authz/authz-set-export.js +10 -7
- package/esm/cli/authz/authz-set-export.js.map +1 -1
- package/esm/cli/authz/authz-set-import.js +10 -7
- package/esm/cli/authz/authz-set-import.js.map +1 -1
- package/esm/cli/authz/authz-set-list.js +7 -4
- package/esm/cli/authz/authz-set-list.js.map +1 -1
- package/esm/cli/authz/authz-set.js +1 -1
- package/esm/cli/authz/authz-set.js.map +1 -1
- package/esm/cli/authz/authz-type-delete.js +10 -7
- package/esm/cli/authz/authz-type-delete.js.map +1 -1
- package/esm/cli/authz/authz-type-describe.js +9 -6
- package/esm/cli/authz/authz-type-describe.js.map +1 -1
- package/esm/cli/authz/authz-type-export.js +11 -8
- package/esm/cli/authz/authz-type-export.js.map +1 -1
- package/esm/cli/authz/authz-type-import.js +12 -9
- package/esm/cli/authz/authz-type-import.js.map +1 -1
- package/esm/cli/authz/authz-type-list.js +8 -5
- package/esm/cli/authz/authz-type-list.js.map +1 -1
- package/esm/cli/authz/authz-type.js +1 -1
- package/esm/cli/authz/authz-type.js.map +1 -1
- package/esm/cli/authz/authz.js +2 -2
- package/esm/cli/authz/authz.js.map +1 -1
- package/esm/cli/conn/conn-delete.js +2 -2
- package/esm/cli/conn/conn-delete.js.map +1 -1
- package/esm/cli/conn/conn-describe.js +2 -2
- package/esm/cli/conn/conn-describe.js.map +1 -1
- package/esm/cli/conn/conn-list.js +2 -2
- package/esm/cli/conn/conn-list.js.map +1 -1
- package/esm/cli/conn/conn-save.js +31 -15
- package/esm/cli/conn/conn-save.js.map +1 -1
- package/esm/cli/conn/conn.js +2 -2
- package/esm/cli/conn/conn.js.map +1 -1
- package/esm/cli/email/email-template-export.js +10 -7
- package/esm/cli/email/email-template-export.js.map +1 -1
- package/esm/cli/email/email-template-import.js +11 -8
- package/esm/cli/email/email-template-import.js.map +1 -1
- package/esm/cli/email/email-template-list.js +8 -5
- package/esm/cli/email/email-template-list.js.map +1 -1
- package/esm/cli/email/email-template.js +1 -1
- package/esm/cli/email/email-template.js.map +1 -1
- package/esm/cli/email/email.js +2 -2
- package/esm/cli/email/email.js.map +1 -1
- package/esm/cli/esv/esv-apply.js +18 -8
- package/esm/cli/esv/esv-apply.js.map +1 -1
- package/esm/cli/esv/esv-secret-create.js +8 -5
- package/esm/cli/esv/esv-secret-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-delete.js +9 -6
- package/esm/cli/esv/esv-secret-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-describe.js +8 -5
- package/esm/cli/esv/esv-secret-describe.js.map +1 -1
- package/esm/cli/esv/esv-secret-export.js +7 -4
- package/esm/cli/esv/esv-secret-export.js.map +1 -1
- package/esm/cli/esv/esv-secret-import.js +7 -4
- package/esm/cli/esv/esv-secret-import.js.map +1 -1
- package/esm/cli/esv/esv-secret-list.js +8 -5
- package/esm/cli/esv/esv-secret-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-set.js +8 -5
- package/esm/cli/esv/esv-secret-set.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-activate.js +8 -5
- package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-create.js +9 -6
- package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-deactivate.js +8 -5
- package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-delete.js +9 -6
- package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
- package/esm/cli/esv/esv-secret-version-list.js +8 -5
- package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
- package/esm/cli/esv/esv-secret-version.js +1 -1
- package/esm/cli/esv/esv-secret-version.js.map +1 -1
- package/esm/cli/esv/esv-secret.js +1 -1
- package/esm/cli/esv/esv-secret.js.map +1 -1
- package/esm/cli/esv/esv-variable-create.js +10 -6
- package/esm/cli/esv/esv-variable-create.js.map +1 -1
- package/esm/cli/esv/esv-variable-delete.js +9 -6
- package/esm/cli/esv/esv-variable-delete.js.map +1 -1
- package/esm/cli/esv/esv-variable-describe.js +8 -5
- package/esm/cli/esv/esv-variable-describe.js.map +1 -1
- package/esm/cli/esv/esv-variable-export.js +7 -4
- package/esm/cli/esv/esv-variable-export.js.map +1 -1
- package/esm/cli/esv/esv-variable-import.js +7 -4
- package/esm/cli/esv/esv-variable-import.js.map +1 -1
- package/esm/cli/esv/esv-variable-list.js +8 -5
- package/esm/cli/esv/esv-variable-list.js.map +1 -1
- package/esm/cli/esv/esv-variable-set.js +8 -5
- package/esm/cli/esv/esv-variable-set.js.map +1 -1
- package/esm/cli/esv/esv-variable.js +1 -1
- package/esm/cli/esv/esv-variable.js.map +1 -1
- package/esm/cli/esv/esv.js +2 -2
- package/esm/cli/esv/esv.js.map +1 -1
- package/esm/cli/idm/idm-count.js +9 -6
- package/esm/cli/idm/idm-count.js.map +1 -1
- package/esm/cli/idm/idm-export.js +10 -7
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +11 -8
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/idm/idm-list.js +7 -4
- package/esm/cli/idm/idm-list.js.map +1 -1
- package/esm/cli/idm/idm.js +2 -2
- package/esm/cli/idm/idm.js.map +1 -1
- package/esm/cli/idp/idp-export.js +11 -8
- package/esm/cli/idp/idp-export.js.map +1 -1
- package/esm/cli/idp/idp-import.js +15 -12
- package/esm/cli/idp/idp-import.js.map +1 -1
- package/esm/cli/idp/idp-list.js +7 -4
- package/esm/cli/idp/idp-list.js.map +1 -1
- package/esm/cli/idp/idp.js +2 -2
- package/esm/cli/idp/idp.js.map +1 -1
- package/esm/cli/info/info.js +16 -10
- package/esm/cli/info/info.js.map +1 -1
- package/esm/cli/journey/journey-delete.js +8 -5
- package/esm/cli/journey/journey-delete.js.map +1 -1
- package/esm/cli/journey/journey-describe.js +18 -10
- package/esm/cli/journey/journey-describe.js.map +1 -1
- package/esm/cli/journey/journey-disable.js +12 -6
- package/esm/cli/journey/journey-disable.js.map +1 -1
- package/esm/cli/journey/journey-enable.js +12 -6
- package/esm/cli/journey/journey-enable.js.map +1 -1
- package/esm/cli/journey/journey-export.js +10 -7
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/journey/journey-import.js +11 -8
- package/esm/cli/journey/journey-import.js.map +1 -1
- package/esm/cli/journey/journey-list.js +6 -3
- package/esm/cli/journey/journey-list.js.map +1 -1
- package/esm/cli/journey/journey-prune.js +23 -12
- package/esm/cli/journey/journey-prune.js.map +1 -1
- package/esm/cli/journey/journey.js +2 -2
- package/esm/cli/journey/journey.js.map +1 -1
- package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
- package/esm/cli/log/log-fetch.js.map +1 -0
- package/esm/cli/log/log-key-delete.js +35 -0
- package/esm/cli/log/log-key-delete.js.map +1 -0
- package/esm/cli/log/log-key-describe.js +22 -0
- package/esm/cli/log/log-key-describe.js.map +1 -0
- package/esm/cli/log/log-key-list.js +26 -0
- package/esm/cli/log/log-key-list.js.map +1 -0
- package/esm/cli/log/log-key.js +8 -0
- package/esm/cli/log/log-key.js.map +1 -0
- package/esm/cli/log/log-list.js +80 -0
- package/esm/cli/log/log-list.js.map +1 -0
- package/esm/cli/log/log-tail.js +77 -0
- package/esm/cli/log/log-tail.js.map +1 -0
- package/esm/cli/{logging/logs.js → log/log.js} +6 -3
- package/esm/cli/log/log.js.map +1 -0
- package/esm/cli/oauth/oauth-client-delete.js +22 -0
- package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
- package/esm/cli/oauth/oauth-client-describe.js +22 -0
- package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
- package/esm/cli/oauth/oauth-client-export.js +52 -0
- package/esm/cli/oauth/oauth-client-export.js.map +1 -0
- package/esm/cli/oauth/oauth-client-import.js +57 -0
- package/esm/cli/oauth/oauth-client-import.js.map +1 -0
- package/esm/cli/oauth/oauth-client-list.js +25 -0
- package/esm/cli/oauth/oauth-client-list.js.map +1 -0
- package/esm/cli/oauth/oauth-client.js +14 -0
- package/esm/cli/oauth/oauth-client.js.map +1 -0
- package/esm/cli/oauth/oauth.js +13 -0
- package/esm/cli/oauth/oauth.js.map +1 -0
- package/esm/cli/realm/realm-add-custom-domain.js +8 -5
- package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm-describe.js +8 -5
- package/esm/cli/realm/realm-describe.js.map +1 -1
- package/esm/cli/realm/realm-list.js +8 -5
- package/esm/cli/realm/realm-list.js.map +1 -1
- package/esm/cli/realm/realm-remove-custom-domain.js +11 -5
- package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
- package/esm/cli/realm/realm.js +2 -2
- package/esm/cli/realm/realm.js.map +1 -1
- package/esm/cli/saml/saml-cot-export.js +10 -7
- package/esm/cli/saml/saml-cot-export.js.map +1 -1
- package/esm/cli/saml/saml-cot-import.js +11 -8
- package/esm/cli/saml/saml-cot-import.js.map +1 -1
- package/esm/cli/saml/saml-cot-list.js +8 -5
- package/esm/cli/saml/saml-cot-list.js.map +1 -1
- package/esm/cli/saml/saml-cot.js +1 -1
- package/esm/cli/saml/saml-cot.js.map +1 -1
- package/esm/cli/saml/saml-delete.js +14 -7
- package/esm/cli/saml/saml-delete.js.map +1 -1
- package/esm/cli/saml/saml-describe.js +8 -5
- package/esm/cli/saml/saml-describe.js.map +1 -1
- package/esm/cli/saml/saml-export.js +10 -7
- package/esm/cli/saml/saml-export.js.map +1 -1
- package/esm/cli/saml/saml-import.js +11 -8
- package/esm/cli/saml/saml-import.js.map +1 -1
- package/esm/cli/saml/saml-list.js +8 -5
- package/esm/cli/saml/saml-list.js.map +1 -1
- package/esm/cli/saml/saml-metadata-export.js +9 -6
- package/esm/cli/saml/saml-metadata-export.js.map +1 -1
- package/esm/cli/saml/saml-metadata.js +1 -1
- package/esm/cli/saml/saml-metadata.js.map +1 -1
- package/esm/cli/saml/saml.js +2 -2
- package/esm/cli/saml/saml.js.map +1 -1
- package/esm/cli/script/script-delete.js +7 -4
- package/esm/cli/script/script-delete.js.map +1 -1
- package/esm/cli/script/script-describe.js +7 -4
- package/esm/cli/script/script-describe.js.map +1 -1
- package/esm/cli/script/script-export.js +8 -5
- package/esm/cli/script/script-export.js.map +1 -1
- package/esm/cli/script/script-import.js +9 -6
- package/esm/cli/script/script-import.js.map +1 -1
- package/esm/cli/script/script-list.js +8 -5
- package/esm/cli/script/script-list.js.map +1 -1
- package/esm/cli/script/script.js +2 -2
- package/esm/cli/script/script.js.map +1 -1
- package/esm/cli/service/service-delete.js +8 -5
- package/esm/cli/service/service-delete.js.map +1 -1
- package/esm/cli/service/service-export.js +9 -6
- package/esm/cli/service/service-export.js.map +1 -1
- package/esm/cli/service/service-import.js +10 -7
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/cli/service/service-list.js +7 -4
- package/esm/cli/service/service-list.js.map +1 -1
- package/esm/cli/service/service.js +2 -2
- package/esm/cli/service/service.js.map +1 -1
- package/esm/cli/shell/shell.js +57 -0
- package/esm/cli/shell/shell.js.map +1 -0
- package/esm/cli/theme/theme-delete.js +10 -7
- package/esm/cli/theme/theme-delete.js.map +1 -1
- package/esm/cli/theme/theme-export.js +11 -8
- package/esm/cli/theme/theme-export.js.map +1 -1
- package/esm/cli/theme/theme-import.js +12 -9
- package/esm/cli/theme/theme-import.js.map +1 -1
- package/esm/cli/theme/theme-list.js +7 -4
- package/esm/cli/theme/theme-list.js.map +1 -1
- package/esm/cli/theme/theme.js +2 -2
- package/esm/cli/theme/theme.js.map +1 -1
- package/esm/help/SampleData.js +7 -0
- package/esm/help/SampleData.js.map +1 -0
- package/esm/launch.js +1 -1
- package/esm/launch.js.map +1 -1
- package/esm/loader.js +2 -2
- package/esm/loader.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +216 -0
- package/esm/ops/AdminFederationOps.js.map +1 -0
- package/esm/ops/AgentOps.js +88 -54
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +309 -0
- package/esm/ops/ApplicationOps.js.map +1 -0
- package/esm/ops/CirclesOfTrustOps.js +25 -13
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/ConnectionProfileOps.js +13 -6
- package/esm/ops/ConnectionProfileOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +53 -47
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +58 -64
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +48 -25
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +108 -43
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/LogOps.js +92 -30
- package/esm/ops/LogOps.js.map +1 -1
- package/esm/ops/NodeOps.js +6 -3
- package/esm/ops/NodeOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +29 -16
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/OrganizationOps.js +14 -22
- package/esm/ops/OrganizationOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +60 -28
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +39 -22
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/RealmOps.js +15 -8
- package/esm/ops/RealmOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +43 -27
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +56 -42
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test_.js.map +1 -1
- package/esm/ops/ScriptOps.js +72 -18
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/SecretsOps.js +33 -18
- package/esm/ops/SecretsOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +49 -28
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +42 -22
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/VariablesOps.js +37 -28
- package/esm/ops/VariablesOps.js.map +1 -1
- package/esm/ops/utils/OpsUtils.js +1 -1
- package/esm/ops/utils/OpsUtils.js.map +1 -1
- package/esm/ops/utils/Wordwrap.js +1 -1
- package/esm/ops/utils/Wordwrap.js.map +1 -1
- package/esm/storage/StaticStorage.js +1 -1
- package/esm/storage/StaticStorage.js.map +1 -1
- package/esm/utils/Config.js +7 -4
- package/esm/utils/Config.js.map +1 -1
- package/esm/utils/Console.js +9 -5
- package/esm/utils/Console.js.map +1 -1
- package/esm/utils/ExportImportUtils.js +32 -66
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/esm/utils/Version.js +19 -16
- package/esm/utils/Version.js.map +1 -1
- package/package.json +45 -35
- package/esm/cli/logging/logs-fetch.js.map +0 -1
- package/esm/cli/logging/logs-list.js +0 -49
- package/esm/cli/logging/logs-list.js.map +0 -1
- package/esm/cli/logging/logs-tail.js +0 -46
- package/esm/cli/logging/logs-tail.js.map +0 -1
- package/esm/cli/logging/logs.js.map +0 -1
- package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
- package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
|
@@ -2,12 +2,25 @@ import { frodo, state } from '@rockcarver/frodo-lib';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
4
|
import { saveJsonToFile } from '../utils/ExportImportUtils';
|
|
5
|
+
const {
|
|
6
|
+
getTypedFilename,
|
|
7
|
+
titleCase
|
|
8
|
+
} = frodo.utils;
|
|
9
|
+
const {
|
|
10
|
+
readOAuth2Clients,
|
|
11
|
+
exportOAuth2Client,
|
|
12
|
+
exportOAuth2Clients,
|
|
13
|
+
importOAuth2Client,
|
|
14
|
+
importFirstOAuth2Client,
|
|
15
|
+
importOAuth2Clients
|
|
16
|
+
} = frodo.oauth2oidc.client;
|
|
17
|
+
|
|
5
18
|
/**
|
|
6
19
|
* List OAuth2 clients
|
|
7
20
|
*/
|
|
8
21
|
export async function listOAuth2Clients(long = false) {
|
|
9
22
|
try {
|
|
10
|
-
const clients = await
|
|
23
|
+
const clients = await readOAuth2Clients();
|
|
11
24
|
clients.sort((a, b) => a._id.localeCompare(b._id));
|
|
12
25
|
if (long) {
|
|
13
26
|
const table = createTable(['Client Id', 'Status', 'Client Type', 'Grant Types', 'Scopes', 'Redirect URIs'
|
|
@@ -28,7 +41,7 @@ export async function listOAuth2Clients(long = false) {
|
|
|
28
41
|
'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer'
|
|
29
42
|
};
|
|
30
43
|
clients.forEach(client => {
|
|
31
|
-
table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status
|
|
44
|
+
table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status['brightRed'], client.coreOAuth2ClientConfig.clientType, client.advancedOAuth2ClientConfig.grantTypes.map(type => grantTypesMap[type]).join('\n'), client.coreOAuth2ClientConfig.scopes.join('\n'), client.coreOAuth2ClientConfig.redirectionUris.join('\n')
|
|
32
45
|
// wordwrap(client.description, 30),
|
|
33
46
|
]);
|
|
34
47
|
});
|
|
@@ -40,7 +53,7 @@ export async function listOAuth2Clients(long = false) {
|
|
|
40
53
|
});
|
|
41
54
|
}
|
|
42
55
|
} catch (error) {
|
|
43
|
-
printMessage(`Error listing
|
|
56
|
+
printMessage(`Error listing oauth2 clients - ${error}`, 'error');
|
|
44
57
|
}
|
|
45
58
|
}
|
|
46
59
|
|
|
@@ -59,11 +72,11 @@ export async function exportOAuth2ClientToFile(clientId, file, options = {
|
|
|
59
72
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);
|
|
60
73
|
showSpinner(`Exporting ${clientId}...`);
|
|
61
74
|
try {
|
|
62
|
-
let fileName =
|
|
75
|
+
let fileName = getTypedFilename(clientId, 'oauth2.app');
|
|
63
76
|
if (file) {
|
|
64
77
|
fileName = file;
|
|
65
78
|
}
|
|
66
|
-
const exportData = await
|
|
79
|
+
const exportData = await exportOAuth2Client(clientId, options);
|
|
67
80
|
saveJsonToFile(exportData, fileName);
|
|
68
81
|
succeedSpinner(`Exported ${clientId} to ${fileName}.`);
|
|
69
82
|
outcome = true;
|
|
@@ -88,11 +101,11 @@ export async function exportOAuth2ClientsToFile(file, options = {
|
|
|
88
101
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);
|
|
89
102
|
showSpinner(`Exporting all clients...`);
|
|
90
103
|
try {
|
|
91
|
-
let fileName =
|
|
104
|
+
let fileName = getTypedFilename(`all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
|
|
92
105
|
if (file) {
|
|
93
106
|
fileName = file;
|
|
94
107
|
}
|
|
95
|
-
const exportData = await
|
|
108
|
+
const exportData = await exportOAuth2Clients(options);
|
|
96
109
|
saveJsonToFile(exportData, fileName);
|
|
97
110
|
succeedSpinner(`Exported all clients to ${fileName}.`);
|
|
98
111
|
outcome = true;
|
|
@@ -116,12 +129,12 @@ export async function exportOAuth2ClientsToFiles(options = {
|
|
|
116
129
|
debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);
|
|
117
130
|
const errors = [];
|
|
118
131
|
try {
|
|
119
|
-
const clients = await
|
|
132
|
+
const clients = await readOAuth2Clients();
|
|
120
133
|
createProgressBar(clients.length, 'Exporting clients...');
|
|
121
134
|
for (const client of clients) {
|
|
122
|
-
const file =
|
|
135
|
+
const file = getTypedFilename(client._id, 'oauth2.app');
|
|
123
136
|
try {
|
|
124
|
-
const exportData = await
|
|
137
|
+
const exportData = await exportOAuth2Client(client._id, options);
|
|
125
138
|
saveJsonToFile(exportData, file);
|
|
126
139
|
updateProgressBar(`Exported ${client._id}.`);
|
|
127
140
|
} catch (error) {
|
|
@@ -154,7 +167,7 @@ export async function importOAuth2ClientFromFile(clientId, file, options = {
|
|
|
154
167
|
try {
|
|
155
168
|
const data = fs.readFileSync(file, 'utf8');
|
|
156
169
|
const fileData = JSON.parse(data);
|
|
157
|
-
await
|
|
170
|
+
await importOAuth2Client(clientId, fileData, options);
|
|
158
171
|
outcome = true;
|
|
159
172
|
succeedSpinner(`Imported ${clientId}.`);
|
|
160
173
|
} catch (error) {
|
|
@@ -180,7 +193,7 @@ export async function importFirstOAuth2ClientFromFile(file, options = {
|
|
|
180
193
|
try {
|
|
181
194
|
const data = fs.readFileSync(file, 'utf8');
|
|
182
195
|
const fileData = JSON.parse(data);
|
|
183
|
-
await
|
|
196
|
+
await importFirstOAuth2Client(fileData, options);
|
|
184
197
|
outcome = true;
|
|
185
198
|
succeedSpinner(`Imported ${file}.`);
|
|
186
199
|
} catch (error) {
|
|
@@ -205,8 +218,8 @@ export async function importOAuth2ClientsFromFile(file, options = {
|
|
|
205
218
|
showSpinner(`Importing ${file}...`);
|
|
206
219
|
try {
|
|
207
220
|
const data = fs.readFileSync(file, 'utf8');
|
|
208
|
-
const
|
|
209
|
-
await
|
|
221
|
+
const clientData = JSON.parse(data);
|
|
222
|
+
await importOAuth2Clients(clientData, options);
|
|
210
223
|
outcome = true;
|
|
211
224
|
succeedSpinner(`Imported ${file}.`);
|
|
212
225
|
} catch (error) {
|
|
@@ -238,7 +251,7 @@ export async function importOAuth2ClientsFromFiles(options = {
|
|
|
238
251
|
const fileData = JSON.parse(data);
|
|
239
252
|
const count = Object.keys(fileData.application).length;
|
|
240
253
|
total += count;
|
|
241
|
-
await
|
|
254
|
+
await importOAuth2Clients(fileData, options);
|
|
242
255
|
updateProgressBar(`Imported ${count} client(s) from ${file}`);
|
|
243
256
|
} catch (error) {
|
|
244
257
|
errors.push(error);
|
|
@@ -255,4 +268,4 @@ export async function importOAuth2ClientsFromFiles(options = {
|
|
|
255
268
|
debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);
|
|
256
269
|
return 0 === errors.length;
|
|
257
270
|
}
|
|
258
|
-
//# sourceMappingURL=OAuth2ClientOps.js.map
|
|
271
|
+
//# sourceMappingURL=OAuth2ClientOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","listOAuth2Clients","long","clients","oauth2oidc","client","getOAuth2Clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","brightRed","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","options","useStringArrays","deps","outcome","fileName","utils","impex","getTypedFilename","exportData","exportOAuth2Client","message","exportOAuth2ClientsToFile","titleCase","helper","getRealmName","getRealm","exportOAuth2Clients","exportOAuth2ClientsToFiles","errors","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importOAuth2Client","importFirstOAuth2ClientFromFile","importFirstOAuth2Client","importOAuth2ClientsFromFile","applicationData","importOAuth2Clients","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await frodo.oauth2oidc.client.getOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : client.coreOAuth2ClientConfig.status.brightRed,\n client.coreOAuth2ClientConfig.clientType,\n client.advancedOAuth2ClientConfig.grantTypes\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n client.coreOAuth2ClientConfig.scopes.join('\\n'),\n client.coreOAuth2ClientConfig.redirectionUris.join('\\n'),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = frodo.utils.impex.getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.oauth2oidc.client.exportOAuth2Client(\n clientId,\n options\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${clientId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = frodo.utils.impex.getTypedFilename(\n `all${frodo.utils.impex.titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.oauth2oidc.client.exportOAuth2Clients(\n options\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all clients to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n try {\n const clients = await frodo.oauth2oidc.client.getOAuth2Clients();\n createProgressBar(clients.length, 'Exporting clients...');\n for (const client of clients) {\n const file = frodo.utils.impex.getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await frodo.oauth2oidc.client.exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${client._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.oauth2oidc.client.importOAuth2Client(\n clientId,\n fileData,\n options\n );\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.oauth2oidc.client.importFirstOAuth2Client(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const applicationData = JSON.parse(data);\n await frodo.oauth2oidc.client.importOAuth2Clients(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.oauth2.app.json')\n );\n createProgressBar(files.length, 'Importing clients...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await frodo.oauth2oidc.client.importOAuth2Clients(fileData, options);\n updateProgressBar(`Imported ${count} client(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing client(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing client(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","getTypedFilename","titleCase","utils","readOAuth2Clients","exportOAuth2Client","exportOAuth2Clients","importOAuth2Client","importFirstOAuth2Client","importOAuth2Clients","oauth2oidc","client","listOAuth2Clients","long","clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","options","useStringArrays","deps","outcome","fileName","exportData","message","exportOAuth2ClientsToFile","getRealmName","getRealm","exportOAuth2ClientsToFiles","errors","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importFirstOAuth2ClientFromFile","importOAuth2ClientsFromFile","clientData","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["../../src/ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { ReadableStrings } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\n\nconst { getTypedFilename, titleCase } = frodo.utils;\nconst {\n readOAuth2Clients,\n exportOAuth2Client,\n exportOAuth2Clients,\n importOAuth2Client,\n importFirstOAuth2Client,\n importOAuth2Clients,\n} = frodo.oauth2oidc.client;\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await readOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : (client.coreOAuth2ClientConfig.status as string)['brightRed'],\n client.coreOAuth2ClientConfig.clientType,\n (client.advancedOAuth2ClientConfig.grantTypes as ReadableStrings)\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n (client.coreOAuth2ClientConfig.scopes as ReadableStrings).join('\\n'),\n (client.coreOAuth2ClientConfig.redirectionUris as string[]).join(\n '\\n'\n ),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing oauth2 clients - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const exportData = await exportOAuth2Client(clientId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${clientId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportOAuth2Clients(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all clients to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n try {\n const clients = await readOAuth2Clients();\n createProgressBar(clients.length, 'Exporting clients...');\n for (const client of clients) {\n const file = getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${client._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importOAuth2Client(clientId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstOAuth2Client(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const clientData = JSON.parse(data);\n await importOAuth2Clients(clientData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.oauth2.app.json')\n );\n createProgressBar(files.length, 'Importing clients...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await importOAuth2Clients(fileData, options);\n updateProgressBar(`Imported ${count} client(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing client(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing client(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
import { frodo } from '@rockcarver/frodo-lib';
|
|
2
2
|
import { printMessage } from '../utils/Console';
|
|
3
|
+
const {
|
|
4
|
+
queryManagedObjects
|
|
5
|
+
} = frodo.idm.managed;
|
|
6
|
+
const {
|
|
7
|
+
getRealmManagedOrganization
|
|
8
|
+
} = frodo.idm.organization;
|
|
3
9
|
|
|
4
10
|
// unfinished work
|
|
5
11
|
export async function listOrganizationsTopDown() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
remainingPagedResults: -1
|
|
14
|
-
};
|
|
15
|
-
do {
|
|
16
|
-
try {
|
|
17
|
-
// eslint-disable-next-line no-await-in-loop
|
|
18
|
-
result = await frodo.idm.config.queryAllManagedObjectsByType(frodo.idm.organization.getRealmManagedOrganization(), ['name', 'parent/*/name', 'children/*/name'], result.pagedResultsCookie);
|
|
19
|
-
} catch (queryAllManagedObjectsByTypeError) {
|
|
20
|
-
printMessage(queryAllManagedObjectsByTypeError, 'error');
|
|
21
|
-
printMessage(`Error querying ${frodo.idm.organization.getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`, 'error');
|
|
22
|
-
}
|
|
23
|
-
orgs.concat(result.result);
|
|
24
|
-
printMessage('.', 'text', false);
|
|
25
|
-
} while (result.pagedResultsCookie);
|
|
26
|
-
return orgs;
|
|
12
|
+
try {
|
|
13
|
+
const orgs = await queryManagedObjects(getRealmManagedOrganization(), 'true', ['name', 'parent/*/name', 'children/*/name']);
|
|
14
|
+
return orgs;
|
|
15
|
+
} catch (queryAllManagedObjectsByTypeError) {
|
|
16
|
+
printMessage(queryAllManagedObjectsByTypeError, 'error');
|
|
17
|
+
printMessage(`Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`, 'error');
|
|
18
|
+
}
|
|
27
19
|
}
|
|
28
|
-
//# sourceMappingURL=OrganizationOps.js.map
|
|
20
|
+
//# sourceMappingURL=OrganizationOps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrganizationOps.js","names":["frodo","printMessage","
|
|
1
|
+
{"version":3,"file":"OrganizationOps.js","names":["frodo","printMessage","queryManagedObjects","idm","managed","getRealmManagedOrganization","organization","listOrganizationsTopDown","orgs","queryAllManagedObjectsByTypeError"],"sources":["../../src/ops/OrganizationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\n\nimport { printMessage } from '../utils/Console';\n\nconst { queryManagedObjects } = frodo.idm.managed;\nconst { getRealmManagedOrganization } = frodo.idm.organization;\n\n// unfinished work\nexport async function listOrganizationsTopDown() {\n try {\n const orgs = await queryManagedObjects(\n getRealmManagedOrganization(),\n 'true',\n ['name', 'parent/*/name', 'children/*/name']\n );\n return orgs;\n } catch (queryAllManagedObjectsByTypeError) {\n printMessage(queryAllManagedObjectsByTypeError, 'error');\n printMessage(\n `Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`,\n 'error'\n );\n }\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAE7C,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,MAAM;EAAEC;AAAoB,CAAC,GAAGF,KAAK,CAACG,GAAG,CAACC,OAAO;AACjD,MAAM;EAAEC;AAA4B,CAAC,GAAGL,KAAK,CAACG,GAAG,CAACG,YAAY;;AAE9D;AACA,OAAO,eAAeC,wBAAwBA,CAAA,EAAG;EAC/C,IAAI;IACF,MAAMC,IAAI,GAAG,MAAMN,mBAAmB,CACpCG,2BAA2B,CAAC,CAAC,EAC7B,MAAM,EACN,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAC7C,CAAC;IACD,OAAOG,IAAI;EACb,CAAC,CAAC,OAAOC,iCAAiC,EAAE;IAC1CR,YAAY,CAACQ,iCAAiC,EAAE,OAAO,CAAC;IACxDR,YAAY,CACT,kBAAiBI,2BAA2B,CAAC,CAAE,aAAYI,iCAAkC,EAAC,EAC/F,OACF,CAAC;EACH;AACF"}
|
package/esm/ops/PolicyOps.js
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
import { frodo, state } from '@rockcarver/frodo-lib';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import { createObjectTable, createProgressBar, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
3
|
+
import { createObjectTable, createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
4
|
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
5
|
+
const {
|
|
6
|
+
getRealmName
|
|
7
|
+
} = frodo.utils;
|
|
8
|
+
const {
|
|
9
|
+
readPolicies,
|
|
10
|
+
readPoliciesByPolicySet,
|
|
11
|
+
readPolicy,
|
|
12
|
+
exportPolicy,
|
|
13
|
+
exportPolicies,
|
|
14
|
+
exportPoliciesByPolicySet,
|
|
15
|
+
importPolicy,
|
|
16
|
+
importFirstPolicy,
|
|
17
|
+
importPolicies
|
|
18
|
+
} = frodo.authz.policy;
|
|
19
|
+
|
|
5
20
|
/**
|
|
6
21
|
* List policies
|
|
7
22
|
* @param {boolean} long list with details
|
|
@@ -10,13 +25,24 @@ import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImpo
|
|
|
10
25
|
export async function listPolicies(long = false) {
|
|
11
26
|
let outcome = false;
|
|
12
27
|
try {
|
|
13
|
-
const policies = await
|
|
28
|
+
const policies = await readPolicies();
|
|
14
29
|
policies.sort((a, b) => a._id.localeCompare(b._id));
|
|
15
30
|
for (const policy of policies) {
|
|
16
31
|
if (!long) {
|
|
17
32
|
printMessage(`${policy._id}`, 'data');
|
|
18
33
|
}
|
|
19
34
|
}
|
|
35
|
+
if (long) {
|
|
36
|
+
const table = createTable(['Id', 'Description', 'Status']);
|
|
37
|
+
for (const policy of policies) {
|
|
38
|
+
table.push([`${policy._id}`, `${policy.description}`, policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed']]);
|
|
39
|
+
}
|
|
40
|
+
printMessage(table.toString(), 'data');
|
|
41
|
+
} else {
|
|
42
|
+
for (const policy of policies) {
|
|
43
|
+
printMessage(`${policy._id}`, 'data');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
20
46
|
outcome = true;
|
|
21
47
|
} catch (err) {
|
|
22
48
|
printMessage(`listPolicies ERROR: ${err.message}`, 'error');
|
|
@@ -34,10 +60,16 @@ export async function listPolicies(long = false) {
|
|
|
34
60
|
export async function listPoliciesByPolicySet(policySetId, long = false) {
|
|
35
61
|
let outcome = false;
|
|
36
62
|
try {
|
|
37
|
-
const policies = await
|
|
63
|
+
const policies = await readPoliciesByPolicySet(policySetId);
|
|
38
64
|
policies.sort((a, b) => a._id.localeCompare(b._id));
|
|
39
|
-
|
|
40
|
-
|
|
65
|
+
if (long) {
|
|
66
|
+
const table = createTable(['Id', 'Description', 'Status']);
|
|
67
|
+
for (const policy of policies) {
|
|
68
|
+
table.push([`${policy._id}`, `${policy.description}`, policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed']]);
|
|
69
|
+
}
|
|
70
|
+
printMessage(table.toString(), 'data');
|
|
71
|
+
} else {
|
|
72
|
+
for (const policy of policies) {
|
|
41
73
|
printMessage(`${policy._id}`, 'data');
|
|
42
74
|
}
|
|
43
75
|
}
|
|
@@ -57,7 +89,7 @@ export async function listPoliciesByPolicySet(policySetId, long = false) {
|
|
|
57
89
|
*/
|
|
58
90
|
export async function describePolicy(policyId, json = false) {
|
|
59
91
|
let outcome = false;
|
|
60
|
-
const policySet = await
|
|
92
|
+
const policySet = await readPolicy(policyId);
|
|
61
93
|
outcome = true;
|
|
62
94
|
if (json) {
|
|
63
95
|
printMessage(policySet, 'data');
|
|
@@ -80,7 +112,7 @@ export async function deletePolicy(policyId) {
|
|
|
80
112
|
const errors = [];
|
|
81
113
|
try {
|
|
82
114
|
debugMessage(`Deleting policy ${policyId}`);
|
|
83
|
-
await
|
|
115
|
+
await deletePolicy(policyId);
|
|
84
116
|
} catch (error) {
|
|
85
117
|
printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');
|
|
86
118
|
}
|
|
@@ -107,7 +139,7 @@ export async function deletePolicies() {
|
|
|
107
139
|
try {
|
|
108
140
|
showSpinner(`Retrieving all policies...`);
|
|
109
141
|
try {
|
|
110
|
-
policies = await
|
|
142
|
+
policies = await readPolicies();
|
|
111
143
|
succeedSpinner(`Found ${policies.length} policies.`);
|
|
112
144
|
} catch (error) {
|
|
113
145
|
error.message = `Error retrieving all policies: ${error.message}`;
|
|
@@ -119,7 +151,7 @@ export async function deletePolicies() {
|
|
|
119
151
|
const policyId = policy._id;
|
|
120
152
|
try {
|
|
121
153
|
debugMessage(`Deleting policy ${policyId}`);
|
|
122
|
-
await
|
|
154
|
+
await deletePolicy(policyId);
|
|
123
155
|
updateProgressBar(`Deleted ${policyId}`);
|
|
124
156
|
} catch (error) {
|
|
125
157
|
error.message = `Error deleting policy ${policyId}: ${error}`;
|
|
@@ -156,7 +188,7 @@ export async function deletePoliciesByPolicySet(policySetId) {
|
|
|
156
188
|
try {
|
|
157
189
|
showSpinner(`Retrieving all policies from policy set ${policySetId}...`);
|
|
158
190
|
try {
|
|
159
|
-
policies = await
|
|
191
|
+
policies = await readPoliciesByPolicySet(policySetId);
|
|
160
192
|
succeedSpinner(`Found ${policies.length} policies in policy set ${policySetId}.`);
|
|
161
193
|
} catch (error) {
|
|
162
194
|
error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;
|
|
@@ -168,7 +200,7 @@ export async function deletePoliciesByPolicySet(policySetId) {
|
|
|
168
200
|
const policyId = policy._id;
|
|
169
201
|
try {
|
|
170
202
|
debugMessage(`Deleting policy ${policyId}`);
|
|
171
|
-
await
|
|
203
|
+
await deletePolicy(policyId);
|
|
172
204
|
updateProgressBar(`Deleted ${policyId}`);
|
|
173
205
|
} catch (error) {
|
|
174
206
|
error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;
|
|
@@ -212,7 +244,7 @@ export async function exportPolicyToFile(policyId, file, options = {
|
|
|
212
244
|
if (file) {
|
|
213
245
|
fileName = file;
|
|
214
246
|
}
|
|
215
|
-
const exportData = await
|
|
247
|
+
const exportData = await exportPolicy(policyId, options);
|
|
216
248
|
saveJsonToFile(exportData, fileName);
|
|
217
249
|
succeedSpinner(`Exported ${policyId} to ${fileName}.`);
|
|
218
250
|
outcome = true;
|
|
@@ -238,11 +270,11 @@ export async function exportPoliciesToFile(file, options = {
|
|
|
238
270
|
debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);
|
|
239
271
|
showSpinner(`Exporting all policy sets...`);
|
|
240
272
|
try {
|
|
241
|
-
let fileName = getTypedFilename(`all${titleCase(
|
|
273
|
+
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}Policies`, 'policy.authz');
|
|
242
274
|
if (file) {
|
|
243
275
|
fileName = file;
|
|
244
276
|
}
|
|
245
|
-
const exportData = await
|
|
277
|
+
const exportData = await exportPolicies(options);
|
|
246
278
|
saveJsonToFile(exportData, fileName);
|
|
247
279
|
succeedSpinner(`Exported all policy sets to ${fileName}.`);
|
|
248
280
|
outcome = true;
|
|
@@ -269,11 +301,11 @@ export async function exportPoliciesByPolicySetToFile(policySetId, file, options
|
|
|
269
301
|
debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);
|
|
270
302
|
showSpinner(`Exporting all policy sets...`);
|
|
271
303
|
try {
|
|
272
|
-
let fileName = getTypedFilename(`all${titleCase(
|
|
304
|
+
let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)}Policies`, 'policy.authz');
|
|
273
305
|
if (file) {
|
|
274
306
|
fileName = file;
|
|
275
307
|
}
|
|
276
|
-
const exportData = await
|
|
308
|
+
const exportData = await exportPoliciesByPolicySet(policySetId, options);
|
|
277
309
|
saveJsonToFile(exportData, fileName);
|
|
278
310
|
succeedSpinner(`Exported all policy sets to ${fileName}.`);
|
|
279
311
|
outcome = true;
|
|
@@ -297,12 +329,12 @@ export async function exportPoliciesToFiles(options = {
|
|
|
297
329
|
debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);
|
|
298
330
|
const errors = [];
|
|
299
331
|
try {
|
|
300
|
-
const policies = await
|
|
332
|
+
const policies = await readPolicies();
|
|
301
333
|
createProgressBar(policies.length, 'Exporting policy sets...');
|
|
302
334
|
for (const policy of policies) {
|
|
303
335
|
const file = getTypedFilename(policy._id, 'policy.authz');
|
|
304
336
|
try {
|
|
305
|
-
const exportData = await
|
|
337
|
+
const exportData = await exportPolicy(policy._id, options);
|
|
306
338
|
saveJsonToFile(exportData, file);
|
|
307
339
|
updateProgressBar(`Exported ${policy._id}.`);
|
|
308
340
|
} catch (error) {
|
|
@@ -332,12 +364,12 @@ export async function exportPoliciesByPolicySetToFiles(policySetId, options = {
|
|
|
332
364
|
debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);
|
|
333
365
|
const errors = [];
|
|
334
366
|
try {
|
|
335
|
-
const policies = await
|
|
367
|
+
const policies = await readPoliciesByPolicySet(policySetId);
|
|
336
368
|
createProgressBar(policies.length, `Exporting policies in policy set ${policySetId}...`);
|
|
337
369
|
for (const policy of policies) {
|
|
338
370
|
const file = getTypedFilename(policy._id, 'policy.authz');
|
|
339
371
|
try {
|
|
340
|
-
const exportData = await
|
|
372
|
+
const exportData = await exportPolicy(policy._id, options);
|
|
341
373
|
saveJsonToFile(exportData, file);
|
|
342
374
|
updateProgressBar(`Exported ${policy._id}.`);
|
|
343
375
|
} catch (error) {
|
|
@@ -371,7 +403,7 @@ export async function importPolicyFromFile(policyId, file, options = {
|
|
|
371
403
|
try {
|
|
372
404
|
const data = fs.readFileSync(file, 'utf8');
|
|
373
405
|
const fileData = JSON.parse(data);
|
|
374
|
-
await
|
|
406
|
+
await importPolicy(policyId, fileData, options);
|
|
375
407
|
outcome = true;
|
|
376
408
|
succeedSpinner(`Imported ${policyId}.`);
|
|
377
409
|
} catch (error) {
|
|
@@ -394,15 +426,15 @@ export async function importFirstPolicyFromFile(file, options = {
|
|
|
394
426
|
}) {
|
|
395
427
|
let outcome = false;
|
|
396
428
|
debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);
|
|
397
|
-
showSpinner(`Importing ${file}...`);
|
|
429
|
+
showSpinner(`Importing first policy from ${file}...`);
|
|
398
430
|
try {
|
|
399
431
|
const data = fs.readFileSync(file, 'utf8');
|
|
400
432
|
const fileData = JSON.parse(data);
|
|
401
|
-
await
|
|
433
|
+
const policy = await importFirstPolicy(fileData, options);
|
|
402
434
|
outcome = true;
|
|
403
|
-
succeedSpinner(`Imported ${file}.`);
|
|
435
|
+
succeedSpinner(`Imported first policy with id '${policy._id}' from ${file}.`);
|
|
404
436
|
} catch (error) {
|
|
405
|
-
failSpinner(`Error importing ${file}.`);
|
|
437
|
+
failSpinner(`Error importing first policy from ${file}.`);
|
|
406
438
|
printMessage(error, 'error');
|
|
407
439
|
}
|
|
408
440
|
debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);
|
|
@@ -425,7 +457,7 @@ export async function importPoliciesFromFile(file, options = {
|
|
|
425
457
|
try {
|
|
426
458
|
const data = fs.readFileSync(file, 'utf8');
|
|
427
459
|
const fileData = JSON.parse(data);
|
|
428
|
-
await
|
|
460
|
+
await importPolicies(fileData, options);
|
|
429
461
|
outcome = true;
|
|
430
462
|
succeedSpinner(`Imported ${file}${options.policySetName ? ' into policy set ' + options.policySetName : '.'}`);
|
|
431
463
|
} catch (error) {
|
|
@@ -458,7 +490,7 @@ export async function importPoliciesFromFiles(options = {
|
|
|
458
490
|
const fileData = JSON.parse(data);
|
|
459
491
|
const count = Object.keys(fileData.policyset).length;
|
|
460
492
|
total += count;
|
|
461
|
-
await
|
|
493
|
+
await importPolicies(fileData, options);
|
|
462
494
|
updateProgressBar(`Imported ${count} policies from ${file}`);
|
|
463
495
|
} catch (error) {
|
|
464
496
|
errors.push(error);
|
|
@@ -475,4 +507,4 @@ export async function importPoliciesFromFiles(options = {
|
|
|
475
507
|
debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);
|
|
476
508
|
return 0 === errors.length;
|
|
477
509
|
}
|
|
478
|
-
//# sourceMappingURL=PolicyOps.js.map
|
|
510
|
+
//# sourceMappingURL=PolicyOps.js.map
|