@rockcarver/frodo-cli 2.0.0-21 → 2.0.0-23
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 +9 -1
- package/esm/cli/FrodoCommand.js +3 -1
- package/esm/cli/FrodoCommand.js.map +1 -1
- package/esm/cli/agent/agent-web.js +2 -2
- package/esm/cli/agent/agent-web.js.map +1 -1
- package/esm/cli/app/app-import.js +1 -1
- package/esm/cli/app/app-import.js.map +1 -1
- package/esm/cli/idm/idm-export.js +14 -8
- package/esm/cli/idm/idm-export.js.map +1 -1
- package/esm/cli/idm/idm-import.js +14 -8
- package/esm/cli/idm/idm-import.js.map +1 -1
- package/esm/cli/journey/journey-export.js +2 -3
- package/esm/cli/journey/journey-export.js.map +1 -1
- package/esm/cli/oauth/oauth-client-import.js +1 -1
- package/esm/cli/oauth/oauth-client-import.js.map +1 -1
- package/esm/cli/service/service-import.js +2 -3
- package/esm/cli/service/service-import.js.map +1 -1
- package/esm/ops/AdminFederationOps.js +29 -20
- package/esm/ops/AdminFederationOps.js.map +1 -1
- package/esm/ops/AgentOps.js +41 -34
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/ApplicationOps.js +23 -17
- package/esm/ops/ApplicationOps.js.map +1 -1
- package/esm/ops/CirclesOfTrustOps.js +27 -20
- package/esm/ops/CirclesOfTrustOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +19 -14
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/IdmOps.js +14 -22
- package/esm/ops/IdmOps.js.map +1 -1
- package/esm/ops/IdpOps.js +27 -19
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/JourneyOps.js +18 -51
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/OAuth2ClientOps.js +23 -17
- package/esm/ops/OAuth2ClientOps.js.map +1 -1
- package/esm/ops/PolicyOps.js +27 -20
- package/esm/ops/PolicyOps.js.map +1 -1
- package/esm/ops/PolicySetOps.js +23 -17
- package/esm/ops/PolicySetOps.js.map +1 -1
- package/esm/ops/ResourceTypeOps.js +27 -20
- package/esm/ops/ResourceTypeOps.js.map +1 -1
- package/esm/ops/Saml2Ops.js +22 -14
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/ScriptOps.js +22 -15
- package/esm/ops/ScriptOps.js.map +1 -1
- package/esm/ops/ServiceOps.js +21 -16
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +21 -15
- package/esm/ops/ThemeOps.js.map +1 -1
- package/package.json +2 -2
package/esm/ops/PolicyOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","utils","readPolicies","readPoliciesByPolicySet","readPolicy","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","authz","policy","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","table","push","description","active","toString","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","deletePolicy","errors","error","length","errorMessages","map","join","deletePolicies","deletePoliciesByPolicySet","exportPolicyToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport type {\n PolicyExportInterface,\n PolicyExportOptions,\n PolicyImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName } = frodo.utils;\nconst {\n readPolicies,\n readPoliciesByPolicySet,\n readPolicy,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n} = frodo.authz.policy;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicy(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n } catch (error) {\n printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policyId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await readPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(`Error deleting all policies: ${errorMessages}`);\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await readPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policyId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await readPolicies();\n createProgressBar(policies.length, 'Exporting policy sets...');\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n createProgressBar(\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n showSpinner(`Importing first policy from ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const policy = await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy with id '${policy._id}' from ${file}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy from ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policy.authz.json')\n );\n createProgressBar(files.length, 'Importing policies...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressBar(`Imported ${count} policies from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policies from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PolicyOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","readPolicies","readPoliciesByPolicySet","readPolicy","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","authz","policy","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","table","push","description","active","toString","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","deletePolicy","errors","error","length","errorMessages","map","join","deletePolicies","deletePoliciesByPolicySet","exportPolicyToFile","file","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport type {\n PolicyExportInterface,\n PolicyExportOptions,\n PolicyImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName, getFilePath, getWorkingDirectory } = frodo.utils;\nconst {\n readPolicies,\n readPoliciesByPolicySet,\n readPolicy,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n} = frodo.authz.policy;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await readPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Id', 'Description', 'Status']);\n for (const policy of policies) {\n table.push([\n `${policy._id}`,\n `${policy.description}`,\n policy.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const policy of policies) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicy(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n } catch (error) {\n printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policyId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await readPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(`Error deleting all policies: ${errorMessages}`);\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await readPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported ${policyId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await readPolicies();\n createProgressBar(policies.length, 'Exporting policy sets...');\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n createProgressBar(\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing first policy from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policy = await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy with id '${policy._id}' from ${filePath}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy from ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${filePath}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policy.authz.json'))\n .map((name) => getFilePath(name));\n createProgressBar(files.length, 'Importing policies...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressBar(`Imported ${count} policies from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policies from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
package/esm/ops/PolicySetOps.js
CHANGED
|
@@ -3,7 +3,9 @@ import fs from 'fs';
|
|
|
3
3
|
import { createObjectTable, createProgressBar, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
|
|
4
4
|
import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
|
|
5
5
|
const {
|
|
6
|
-
getRealmName
|
|
6
|
+
getRealmName,
|
|
7
|
+
getFilePath,
|
|
8
|
+
getWorkingDirectory
|
|
7
9
|
} = frodo.utils;
|
|
8
10
|
const {
|
|
9
11
|
readPoliciesByPolicySet,
|
|
@@ -179,9 +181,10 @@ export async function exportPolicySetToFile(policySetId, file, options = {
|
|
|
179
181
|
if (file) {
|
|
180
182
|
fileName = file;
|
|
181
183
|
}
|
|
184
|
+
const filePath = getFilePath(fileName, true);
|
|
182
185
|
const exportData = await exportPolicySet(policySetId, options);
|
|
183
|
-
saveJsonToFile(exportData,
|
|
184
|
-
succeedSpinner(`Exported ${policySetId} to ${
|
|
186
|
+
saveJsonToFile(exportData, filePath);
|
|
187
|
+
succeedSpinner(`Exported ${policySetId} to ${filePath}.`);
|
|
185
188
|
outcome = true;
|
|
186
189
|
} catch (error) {
|
|
187
190
|
failSpinner(`Error exporting ${policySetId}: ${error.message}`);
|
|
@@ -209,9 +212,10 @@ export async function exportPolicySetsToFile(file, options = {
|
|
|
209
212
|
if (file) {
|
|
210
213
|
fileName = file;
|
|
211
214
|
}
|
|
215
|
+
const filePath = getFilePath(fileName, true);
|
|
212
216
|
const exportData = await exportPolicySets(options);
|
|
213
|
-
saveJsonToFile(exportData,
|
|
214
|
-
succeedSpinner(`Exported all policy sets to ${
|
|
217
|
+
saveJsonToFile(exportData, filePath);
|
|
218
|
+
succeedSpinner(`Exported all policy sets to ${filePath}.`);
|
|
215
219
|
outcome = true;
|
|
216
220
|
} catch (error) {
|
|
217
221
|
failSpinner(`Error exporting policy sets: ${error.message}`);
|
|
@@ -239,7 +243,7 @@ export async function exportPolicySetsToFiles(options = {
|
|
|
239
243
|
const file = getTypedFilename(policySet.name, 'policyset.authz');
|
|
240
244
|
try {
|
|
241
245
|
const exportData = await exportPolicySet(policySet.name, options);
|
|
242
|
-
saveJsonToFile(exportData, file);
|
|
246
|
+
saveJsonToFile(exportData, getFilePath(file, true));
|
|
243
247
|
updateProgressBar(`Exported ${policySet.name}.`);
|
|
244
248
|
} catch (error) {
|
|
245
249
|
errors.push(error);
|
|
@@ -270,7 +274,7 @@ export async function importPolicySetFromFile(policySetId, file, options = {
|
|
|
270
274
|
debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);
|
|
271
275
|
showSpinner(`Importing ${policySetId}...`);
|
|
272
276
|
try {
|
|
273
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
277
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
274
278
|
const fileData = JSON.parse(data);
|
|
275
279
|
await importPolicySet(policySetId, fileData, options);
|
|
276
280
|
outcome = true;
|
|
@@ -295,15 +299,16 @@ export async function importFirstPolicySetFromFile(file, options = {
|
|
|
295
299
|
}) {
|
|
296
300
|
let outcome = false;
|
|
297
301
|
debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);
|
|
298
|
-
|
|
302
|
+
const filePath = getFilePath(file);
|
|
303
|
+
showSpinner(`Importing first policy set from ${filePath}...`);
|
|
299
304
|
try {
|
|
300
|
-
const data = fs.readFileSync(
|
|
305
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
301
306
|
const fileData = JSON.parse(data);
|
|
302
307
|
const policySet = await importFirstPolicySet(fileData, options);
|
|
303
308
|
outcome = true;
|
|
304
|
-
succeedSpinner(`Imported first policy set with name '${policySet.name}' from ${
|
|
309
|
+
succeedSpinner(`Imported first policy set with name '${policySet.name}' from ${filePath}.`);
|
|
305
310
|
} catch (error) {
|
|
306
|
-
failSpinner(`Error importing first policy set from ${
|
|
311
|
+
failSpinner(`Error importing first policy set from ${filePath}.`);
|
|
307
312
|
printMessage(error, 'error');
|
|
308
313
|
}
|
|
309
314
|
debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);
|
|
@@ -322,15 +327,16 @@ export async function importPolicySetsFromFile(file, options = {
|
|
|
322
327
|
}) {
|
|
323
328
|
let outcome = false;
|
|
324
329
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);
|
|
325
|
-
|
|
330
|
+
const filePath = getFilePath(file);
|
|
331
|
+
showSpinner(`Importing ${filePath}...`);
|
|
326
332
|
try {
|
|
327
|
-
const data = fs.readFileSync(
|
|
333
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
328
334
|
const fileData = JSON.parse(data);
|
|
329
335
|
await importPolicySets(fileData, options);
|
|
330
336
|
outcome = true;
|
|
331
|
-
succeedSpinner(`Imported ${
|
|
337
|
+
succeedSpinner(`Imported ${filePath}.`);
|
|
332
338
|
} catch (error) {
|
|
333
|
-
failSpinner(`Error importing ${
|
|
339
|
+
failSpinner(`Error importing ${filePath}.`);
|
|
334
340
|
printMessage(error, 'error');
|
|
335
341
|
}
|
|
336
342
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);
|
|
@@ -349,8 +355,8 @@ export async function importPolicySetsFromFiles(options = {
|
|
|
349
355
|
const errors = [];
|
|
350
356
|
try {
|
|
351
357
|
debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);
|
|
352
|
-
const names = fs.readdirSync(
|
|
353
|
-
const files = names.filter(name => name.toLowerCase().endsWith('.policyset.authz.json'));
|
|
358
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
359
|
+
const files = names.filter(name => name.toLowerCase().endsWith('.policyset.authz.json')).map(name => getFilePath(name));
|
|
354
360
|
createProgressBar(files.length, 'Importing policy sets...');
|
|
355
361
|
let total = 0;
|
|
356
362
|
for (const file of files) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicySetOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","utils","readPoliciesByPolicySet","deletePolicy","authz","policy","readPolicySets","readPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","policySet","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","err","message","describePolicySet","policySetId","json","table","toString","deletePolicySet","errors","policies","_id","error","push","length","errorMessages","map","join","deletePolicySets","exportPolicySetToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicySetOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport { type PolicySetSkeleton } from '@rockcarver/frodo-lib/types/api/PolicySetApi';\nimport {\n type PolicySetExportInterface,\n type PolicySetExportOptions,\n type PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName } = frodo.utils;\nconst { readPoliciesByPolicySet, deletePolicy } = frodo.authz.policy;\nconst {\n readPolicySets,\n readPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n} = frodo.authz.policySet;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await readPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySet(policySetId: string): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n showSpinner(`Deleting ${policySetId}...`);\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n } catch (error) {\n printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policySetId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policySetId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n try {\n showSpinner(`Retrieving all policy sets...`);\n try {\n policySets = await readPolicySets();\n succeedSpinner(`Found ${policySets.length} policy sets.`);\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policySets.length)\n createProgressBar(\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n updateProgressBar(`Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressBar(`Error deleting all policy sets: ${errorMessages}`);\n } else {\n if (policySets.length)\n stopProgressBar(`Deleted ${policySets.length} policy sets.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n showSpinner(`Exporting ${policySetId}...`);\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policySetId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policySetId}: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n try {\n const policySets: PolicySetSkeleton[] = await readPolicySets();\n createProgressBar(policySets.length, 'Exporting policy sets...');\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policySet.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n showSpinner(`Importing ${policySetId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policySetId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policySetId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n showSpinner(`Importing first policy set from ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const policySet = await importFirstPolicySet(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy set with name '${policySet.name}' from ${file}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy set from ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(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.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policyset.authz.json')\n );\n createProgressBar(files.length, 'Importing policy sets...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressBar(`Imported ${count} policy sets from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policy sets from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policy sets from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PolicySetOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","getFilePath","getWorkingDirectory","utils","readPoliciesByPolicySet","deletePolicy","authz","policy","readPolicySets","readPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","policySet","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","err","message","describePolicySet","policySetId","json","table","toString","deletePolicySet","errors","policies","_id","error","push","length","errorMessages","map","join","deletePolicySets","exportPolicySetToFile","file","options","deps","prereqs","useStringArrays","fileName","filePath","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicySetOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type PolicySkeleton } from '@rockcarver/frodo-lib/types/api/PoliciesApi';\nimport { type PolicySetSkeleton } from '@rockcarver/frodo-lib/types/api/PolicySetApi';\nimport {\n type PolicySetExportInterface,\n type PolicySetExportOptions,\n type PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\n\nconst { getRealmName, getFilePath, getWorkingDirectory } = frodo.utils;\nconst { readPoliciesByPolicySet, deletePolicy } = frodo.authz.policy;\nconst {\n readPolicySets,\n readPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n} = frodo.authz.policySet;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await readPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await readPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySet(policySetId: string): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n showSpinner(`Deleting ${policySetId}...`);\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n } catch (error) {\n printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policySetId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policySetId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n try {\n showSpinner(`Retrieving all policy sets...`);\n try {\n policySets = await readPolicySets();\n succeedSpinner(`Found ${policySets.length} policy sets.`);\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policySets.length)\n createProgressBar(\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] =\n await readPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n updateProgressBar(`Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressBar(`Error deleting all policy sets: ${errorMessages}`);\n } else {\n if (policySets.length)\n stopProgressBar(`Deleted ${policySets.length} policy sets.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n showSpinner(`Exporting ${policySetId}...`);\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported ${policySetId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policySetId}: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all policy sets to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n try {\n const policySets: PolicySetSkeleton[] = await readPolicySets();\n createProgressBar(policySets.length, 'Exporting policy sets...');\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressBar(`Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policySet.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n showSpinner(`Importing ${policySetId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policySetId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policySetId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing first policy set from ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n const policySet = await importFirstPolicySet(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported first policy set with name '${policySet.name}' from ${filePath}.`\n );\n } catch (error) {\n failSpinner(`Error importing first policy set from ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.policyset.authz.json'))\n .map((name) => getFilePath(name));\n createProgressBar(files.length, 'Importing policy sets...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressBar(`Imported ${count} policy sets from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policy sets from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policy sets from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
|
|
@@ -3,7 +3,9 @@ import fs from 'fs';
|
|
|
3
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
5
|
const {
|
|
6
|
-
getRealmName
|
|
6
|
+
getRealmName,
|
|
7
|
+
getFilePath,
|
|
8
|
+
getWorkingDirectory
|
|
7
9
|
} = frodo.utils;
|
|
8
10
|
const {
|
|
9
11
|
readResourceTypes,
|
|
@@ -228,9 +230,10 @@ export async function exportResourceTypeToFile(resourceTypeUuid, file) {
|
|
|
228
230
|
if (file) {
|
|
229
231
|
fileName = file;
|
|
230
232
|
}
|
|
233
|
+
const filePath = getFilePath(fileName, true);
|
|
231
234
|
const exportData = await exportResourceType(resourceTypeUuid);
|
|
232
|
-
saveJsonToFile(exportData,
|
|
233
|
-
succeedSpinner(`Exported ${resourceTypeUuid} to ${
|
|
235
|
+
saveJsonToFile(exportData, filePath);
|
|
236
|
+
succeedSpinner(`Exported ${resourceTypeUuid} to ${filePath}.`);
|
|
234
237
|
outcome = true;
|
|
235
238
|
} catch (error) {
|
|
236
239
|
failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);
|
|
@@ -254,9 +257,10 @@ export async function exportResourceTypeByNameToFile(resourceTypeName, file) {
|
|
|
254
257
|
if (file) {
|
|
255
258
|
fileName = file;
|
|
256
259
|
}
|
|
260
|
+
const filePath = getFilePath(fileName, true);
|
|
257
261
|
const exportData = await exportResourceTypeByName(resourceTypeName);
|
|
258
|
-
saveJsonToFile(exportData,
|
|
259
|
-
succeedSpinner(`Exported ${resourceTypeName} to ${
|
|
262
|
+
saveJsonToFile(exportData, filePath);
|
|
263
|
+
succeedSpinner(`Exported ${resourceTypeName} to ${filePath}.`);
|
|
260
264
|
outcome = true;
|
|
261
265
|
} catch (error) {
|
|
262
266
|
failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);
|
|
@@ -279,9 +283,10 @@ export async function exportResourceTypesToFile(file) {
|
|
|
279
283
|
if (file) {
|
|
280
284
|
fileName = file;
|
|
281
285
|
}
|
|
286
|
+
const filePath = getFilePath(fileName, true);
|
|
282
287
|
const exportData = await exportResourceTypes();
|
|
283
|
-
saveJsonToFile(exportData,
|
|
284
|
-
succeedSpinner(`Exported all resource types to ${
|
|
288
|
+
saveJsonToFile(exportData, filePath);
|
|
289
|
+
succeedSpinner(`Exported all resource types to ${filePath}.`);
|
|
285
290
|
outcome = true;
|
|
286
291
|
} catch (error) {
|
|
287
292
|
failSpinner(`Error exporting resource types: ${error.message}`);
|
|
@@ -304,7 +309,7 @@ export async function exportResourceTypesToFiles() {
|
|
|
304
309
|
const file = getTypedFilename(resourceType.name, 'resourcetype.authz');
|
|
305
310
|
try {
|
|
306
311
|
const exportData = await exportResourceType(resourceType.uuid);
|
|
307
|
-
saveJsonToFile(exportData, file);
|
|
312
|
+
saveJsonToFile(exportData, getFilePath(file, true));
|
|
308
313
|
updateProgressBar(`Exported ${resourceType.name}.`);
|
|
309
314
|
} catch (error) {
|
|
310
315
|
errors.push(error);
|
|
@@ -331,7 +336,7 @@ export async function importResourceTypeFromFile(resourceTypeId, file) {
|
|
|
331
336
|
debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);
|
|
332
337
|
showSpinner(`Importing ${resourceTypeId}...`);
|
|
333
338
|
try {
|
|
334
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
339
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
335
340
|
const fileData = JSON.parse(data);
|
|
336
341
|
await importResourceType(resourceTypeId, fileData);
|
|
337
342
|
outcome = true;
|
|
@@ -355,7 +360,7 @@ export async function importResourceTypeByNameFromFile(resourceTypeName, file) {
|
|
|
355
360
|
debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);
|
|
356
361
|
showSpinner(`Importing ${resourceTypeName}...`);
|
|
357
362
|
try {
|
|
358
|
-
const data = fs.readFileSync(file, 'utf8');
|
|
363
|
+
const data = fs.readFileSync(getFilePath(file), 'utf8');
|
|
359
364
|
const fileData = JSON.parse(data);
|
|
360
365
|
await importResourceTypeByName(resourceTypeName, fileData);
|
|
361
366
|
outcome = true;
|
|
@@ -376,15 +381,16 @@ export async function importResourceTypeByNameFromFile(resourceTypeName, file) {
|
|
|
376
381
|
export async function importFirstResourceTypeFromFile(file) {
|
|
377
382
|
let outcome = false;
|
|
378
383
|
debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);
|
|
379
|
-
|
|
384
|
+
const filePath = getFilePath(file);
|
|
385
|
+
showSpinner(`Importing ${filePath}...`);
|
|
380
386
|
try {
|
|
381
|
-
const data = fs.readFileSync(
|
|
387
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
382
388
|
const fileData = JSON.parse(data);
|
|
383
389
|
await importFirstResourceType(fileData);
|
|
384
390
|
outcome = true;
|
|
385
|
-
succeedSpinner(`Imported ${
|
|
391
|
+
succeedSpinner(`Imported ${filePath}.`);
|
|
386
392
|
} catch (error) {
|
|
387
|
-
failSpinner(`Error importing ${
|
|
393
|
+
failSpinner(`Error importing ${filePath}.`);
|
|
388
394
|
printMessage(error, 'error');
|
|
389
395
|
}
|
|
390
396
|
debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);
|
|
@@ -399,15 +405,16 @@ export async function importFirstResourceTypeFromFile(file) {
|
|
|
399
405
|
export async function importResourceTypesFromFile(file) {
|
|
400
406
|
let outcome = false;
|
|
401
407
|
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);
|
|
402
|
-
|
|
408
|
+
const filePath = getFilePath(file);
|
|
409
|
+
showSpinner(`Importing ${filePath}...`);
|
|
403
410
|
try {
|
|
404
|
-
const data = fs.readFileSync(
|
|
411
|
+
const data = fs.readFileSync(filePath, 'utf8');
|
|
405
412
|
const fileData = JSON.parse(data);
|
|
406
413
|
await importResourceTypes(fileData);
|
|
407
414
|
outcome = true;
|
|
408
|
-
succeedSpinner(`Imported ${
|
|
415
|
+
succeedSpinner(`Imported ${filePath}.`);
|
|
409
416
|
} catch (error) {
|
|
410
|
-
failSpinner(`Error importing ${
|
|
417
|
+
failSpinner(`Error importing ${filePath}.`);
|
|
411
418
|
printMessage(error, 'error');
|
|
412
419
|
}
|
|
413
420
|
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);
|
|
@@ -422,8 +429,8 @@ export async function importResourceTypesFromFiles() {
|
|
|
422
429
|
const errors = [];
|
|
423
430
|
try {
|
|
424
431
|
debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);
|
|
425
|
-
const names = fs.readdirSync(
|
|
426
|
-
const files = names.filter(name => name.toLowerCase().endsWith('.resourcetype.authz.json'));
|
|
432
|
+
const names = fs.readdirSync(getWorkingDirectory());
|
|
433
|
+
const files = names.filter(name => name.toLowerCase().endsWith('.resourcetype.authz.json')).map(name => getFilePath(name));
|
|
427
434
|
createProgressBar(files.length, 'Importing resource types...');
|
|
428
435
|
let total = 0;
|
|
429
436
|
for (const file of files) {
|