@rockcarver/frodo-lib 0.12.0 → 0.12.2-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/cjs/api/AuthenticateApi.js +44 -14
  3. package/cjs/api/AuthenticateApi.js.map +1 -1
  4. package/cjs/api/BaseApi.js +171 -90
  5. package/cjs/api/BaseApi.js.map +1 -1
  6. package/cjs/api/CirclesOfTrustApi.js +87 -31
  7. package/cjs/api/CirclesOfTrustApi.js.map +1 -1
  8. package/cjs/api/EmailTemplateApi.js +48 -9
  9. package/cjs/api/EmailTemplateApi.js.map +1 -1
  10. package/cjs/api/IdmConfigApi.js +91 -25
  11. package/cjs/api/IdmConfigApi.js.map +1 -1
  12. package/cjs/api/LogApi.js +84 -29
  13. package/cjs/api/LogApi.js.map +1 -1
  14. package/cjs/api/ManagedObjectApi.js +66 -19
  15. package/cjs/api/ManagedObjectApi.js.map +1 -1
  16. package/cjs/api/NodeApi.js +190 -0
  17. package/cjs/api/NodeApi.js.map +1 -0
  18. package/cjs/api/NodeApi.test.js.map +1 -0
  19. package/cjs/api/OAuth2ClientApi.js +73 -27
  20. package/cjs/api/OAuth2ClientApi.js.map +1 -1
  21. package/cjs/api/OAuth2OIDCApi.js +82 -31
  22. package/cjs/api/OAuth2OIDCApi.js.map +1 -1
  23. package/cjs/api/OAuth2ProviderApi.js +39 -14
  24. package/cjs/api/OAuth2ProviderApi.js.map +1 -1
  25. package/cjs/api/RealmApi.js +100 -36
  26. package/cjs/api/RealmApi.js.map +1 -1
  27. package/cjs/api/Saml2Api.js +162 -74
  28. package/cjs/api/Saml2Api.js.map +1 -1
  29. package/cjs/api/ScriptApi.js +84 -29
  30. package/cjs/api/ScriptApi.js.map +1 -1
  31. package/cjs/api/SecretsApi.js +188 -69
  32. package/cjs/api/SecretsApi.js.map +1 -1
  33. package/cjs/api/ServerInfoApi.js +48 -14
  34. package/cjs/api/ServerInfoApi.js.map +1 -1
  35. package/cjs/api/SocialIdentityProvidersApi.js +103 -37
  36. package/cjs/api/SocialIdentityProvidersApi.js.map +1 -1
  37. package/cjs/api/StartupApi.js +74 -26
  38. package/cjs/api/StartupApi.js.map +1 -1
  39. package/cjs/api/StartupApi.test.js.map +1 -0
  40. package/cjs/api/ThemeApi.js +188 -96
  41. package/cjs/api/ThemeApi.js.map +1 -1
  42. package/cjs/api/TreeApi.js +96 -113
  43. package/cjs/api/TreeApi.js.map +1 -1
  44. package/cjs/api/TreeApi.test.js.map +1 -0
  45. package/cjs/api/VariablesApi.js +106 -39
  46. package/cjs/api/VariablesApi.js.map +1 -1
  47. package/cjs/api/utils/ApiUtils.js +41 -21
  48. package/cjs/api/utils/ApiUtils.js.map +1 -1
  49. package/cjs/api/utils/ApiUtils.test.js.map +1 -1
  50. package/cjs/api/utils/Base64.js +35 -10
  51. package/cjs/api/utils/Base64.js.map +1 -1
  52. package/cjs/index.js +126 -41
  53. package/cjs/index.js.map +1 -1
  54. package/cjs/index.test.js.map +1 -1
  55. package/cjs/ops/AdminOps.js +649 -480
  56. package/cjs/ops/AdminOps.js.map +1 -1
  57. package/cjs/ops/AuthenticateOps.js +302 -211
  58. package/cjs/ops/AuthenticateOps.js.map +1 -1
  59. package/cjs/ops/AuthenticateOps.test.js.map +1 -1
  60. package/cjs/ops/CirclesOfTrustOps.js +356 -219
  61. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  62. package/cjs/ops/ConnectionProfileOps.js +200 -122
  63. package/cjs/ops/ConnectionProfileOps.js.map +1 -1
  64. package/cjs/ops/ConnectionProfileOps.test.js.map +1 -1
  65. package/cjs/ops/EmailTemplateOps.js +301 -192
  66. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  67. package/cjs/ops/IdmOps.js +190 -121
  68. package/cjs/ops/IdmOps.js.map +1 -1
  69. package/cjs/ops/IdpOps.js +327 -196
  70. package/cjs/ops/IdpOps.js.map +1 -1
  71. package/cjs/ops/JourneyOps.js +1402 -1131
  72. package/cjs/ops/JourneyOps.js.map +1 -1
  73. package/cjs/ops/LogOps.js +125 -75
  74. package/cjs/ops/LogOps.js.map +1 -1
  75. package/cjs/ops/ManagedObjectOps.js +43 -16
  76. package/cjs/ops/ManagedObjectOps.js.map +1 -1
  77. package/cjs/ops/OAuth2ClientOps.js +155 -87
  78. package/cjs/ops/OAuth2ClientOps.js.map +1 -1
  79. package/cjs/ops/OrganizationOps.js +89 -56
  80. package/cjs/ops/OrganizationOps.js.map +1 -1
  81. package/cjs/ops/RealmOps.js +131 -83
  82. package/cjs/ops/RealmOps.js.map +1 -1
  83. package/cjs/ops/SamlOps.js +497 -331
  84. package/cjs/ops/SamlOps.js.map +1 -1
  85. package/cjs/ops/ScriptOps.js +215 -133
  86. package/cjs/ops/ScriptOps.js.map +1 -1
  87. package/cjs/ops/SecretsOps.js +269 -156
  88. package/cjs/ops/SecretsOps.js.map +1 -1
  89. package/cjs/ops/StartupOps.js +100 -75
  90. package/cjs/ops/StartupOps.js.map +1 -1
  91. package/cjs/ops/ThemeOps.js +373 -221
  92. package/cjs/ops/ThemeOps.js.map +1 -1
  93. package/cjs/ops/VariablesOps.js +168 -90
  94. package/cjs/ops/VariablesOps.js.map +1 -1
  95. package/cjs/ops/utils/Console.js +68 -33
  96. package/cjs/ops/utils/Console.js.map +1 -1
  97. package/cjs/ops/utils/DataProtection.js +100 -64
  98. package/cjs/ops/utils/DataProtection.js.map +1 -1
  99. package/cjs/ops/utils/DataProtection.test.js.map +1 -1
  100. package/cjs/ops/utils/ExportImportUtils.js +86 -47
  101. package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
  102. package/cjs/ops/utils/ExportImportUtils.test.js.map +1 -1
  103. package/cjs/ops/utils/OpsUtils.js +47 -20
  104. package/cjs/ops/utils/OpsUtils.js.map +1 -1
  105. package/cjs/ops/utils/Wordwrap.js +10 -2
  106. package/cjs/ops/utils/Wordwrap.js.map +1 -1
  107. package/cjs/storage/SessionStorage.js +20 -8
  108. package/cjs/storage/SessionStorage.js.map +1 -1
  109. package/cjs/storage/StaticStorage.js +26 -10
  110. package/cjs/storage/StaticStorage.js.map +1 -1
  111. package/esm/api/BaseApi.mjs +35 -7
  112. package/esm/api/NodeApi.mjs +114 -0
  113. package/esm/api/NodeApi.test.mjs +105 -0
  114. package/esm/api/StartupApi.mjs +18 -8
  115. package/esm/api/StartupApi.test.mjs +56 -0
  116. package/esm/api/TreeApi.mjs +27 -99
  117. package/esm/api/TreeApi.test.mjs +175 -0
  118. package/esm/index.mjs +7 -5
  119. package/esm/ops/IdpOps.mjs +1 -1
  120. package/esm/ops/JourneyOps.mjs +165 -154
  121. package/esm/ops/StartupOps.mjs +59 -62
  122. package/esm/ops/utils/Console.mjs +3 -2
  123. package/package.json +7 -4
  124. package/types/api/AuthenticateApi.d.ts +2 -0
  125. package/types/api/AuthenticateApi.d.ts.map +1 -0
  126. package/types/api/BaseApi.d.ts +50 -0
  127. package/types/api/BaseApi.d.ts.map +1 -0
  128. package/types/api/CirclesOfTrustApi.d.ts +24 -0
  129. package/types/api/CirclesOfTrustApi.d.ts.map +1 -0
  130. package/types/api/EmailTemplateApi.d.ts +22 -0
  131. package/types/api/EmailTemplateApi.d.ts.map +1 -0
  132. package/types/api/IdmConfigApi.d.ts +39 -0
  133. package/types/api/IdmConfigApi.d.ts.map +1 -0
  134. package/types/api/LogApi.d.ts +4 -0
  135. package/types/api/LogApi.d.ts.map +1 -0
  136. package/types/api/ManagedObjectApi.d.ts +21 -0
  137. package/types/api/ManagedObjectApi.d.ts.map +1 -0
  138. package/types/api/NodeApi.d.ts +38 -0
  139. package/types/api/NodeApi.d.ts.map +1 -0
  140. package/types/api/OAuth2ClientApi.d.ts +18 -0
  141. package/types/api/OAuth2ClientApi.d.ts.map +1 -0
  142. package/types/api/OAuth2OIDCApi.d.ts +22 -0
  143. package/types/api/OAuth2OIDCApi.d.ts.map +1 -0
  144. package/types/api/OAuth2ProviderApi.d.ts +5 -0
  145. package/types/api/OAuth2ProviderApi.d.ts.map +1 -0
  146. package/types/api/RealmApi.d.ts +30 -0
  147. package/types/api/RealmApi.d.ts.map +1 -0
  148. package/types/api/Saml2Api.d.ts +52 -0
  149. package/types/api/Saml2Api.d.ts.map +1 -0
  150. package/types/api/ScriptApi.d.ts +24 -0
  151. package/types/api/ScriptApi.d.ts.map +1 -0
  152. package/types/api/SecretsApi.d.ts +10 -0
  153. package/types/api/SecretsApi.d.ts.map +1 -0
  154. package/types/api/ServerInfoApi.d.ts +10 -0
  155. package/types/api/ServerInfoApi.d.ts.map +1 -0
  156. package/types/api/SocialIdentityProvidersApi.d.ts +31 -0
  157. package/types/api/SocialIdentityProvidersApi.d.ts.map +1 -0
  158. package/types/api/StartupApi.d.ts +14 -0
  159. package/types/api/StartupApi.d.ts.map +1 -0
  160. package/types/api/ThemeApi.d.ts +54 -0
  161. package/types/api/ThemeApi.d.ts.map +1 -0
  162. package/types/api/TreeApi.d.ts +24 -0
  163. package/types/api/TreeApi.d.ts.map +1 -0
  164. package/types/api/VariablesApi.d.ts +32 -0
  165. package/types/api/VariablesApi.d.ts.map +1 -0
  166. package/types/api/utils/ApiUtils.d.ts +29 -0
  167. package/types/api/utils/ApiUtils.d.ts.map +1 -0
  168. package/types/api/utils/Base64.d.ts +30 -0
  169. package/types/api/utils/Base64.d.ts.map +1 -0
  170. package/types/index.d.ts +26 -0
  171. package/types/index.d.ts.map +1 -0
  172. package/types/ops/AdminOps.d.ts +11 -0
  173. package/types/ops/AdminOps.d.ts.map +1 -0
  174. package/types/ops/AuthenticateOps.d.ts +6 -0
  175. package/types/ops/AuthenticateOps.d.ts.map +1 -0
  176. package/types/ops/CirclesOfTrustOps.d.ts +40 -0
  177. package/types/ops/CirclesOfTrustOps.d.ts.map +1 -0
  178. package/types/ops/ConnectionProfileOps.d.ts +47 -0
  179. package/types/ops/ConnectionProfileOps.d.ts.map +1 -0
  180. package/types/ops/EmailTemplateOps.d.ts +40 -0
  181. package/types/ops/EmailTemplateOps.d.ts.map +1 -0
  182. package/types/ops/IdmOps.d.ts +27 -0
  183. package/types/ops/IdmOps.d.ts.map +1 -0
  184. package/types/ops/IdpOps.d.ts +45 -0
  185. package/types/ops/IdpOps.d.ts.map +1 -0
  186. package/types/ops/JourneyOps.d.ts +145 -0
  187. package/types/ops/JourneyOps.d.ts.map +1 -0
  188. package/types/ops/LogOps.d.ts +5 -0
  189. package/types/ops/LogOps.d.ts.map +1 -0
  190. package/types/ops/ManagedObjectOps.d.ts +14 -0
  191. package/types/ops/ManagedObjectOps.d.ts.map +1 -0
  192. package/types/ops/OAuth2ClientOps.d.ts +24 -0
  193. package/types/ops/OAuth2ClientOps.d.ts.map +1 -0
  194. package/types/ops/OrganizationOps.d.ts +11 -0
  195. package/types/ops/OrganizationOps.d.ts.map +1 -0
  196. package/types/ops/RealmOps.d.ts +22 -0
  197. package/types/ops/RealmOps.d.ts.map +1 -0
  198. package/types/ops/SamlOps.d.ts +51 -0
  199. package/types/ops/SamlOps.d.ts.map +1 -0
  200. package/types/ops/ScriptOps.d.ts +30 -0
  201. package/types/ops/ScriptOps.d.ts.map +1 -0
  202. package/types/ops/SecretsOps.d.ts +63 -0
  203. package/types/ops/SecretsOps.d.ts.map +1 -0
  204. package/types/ops/StartupOps.d.ts +25 -0
  205. package/types/ops/StartupOps.d.ts.map +1 -0
  206. package/types/ops/ThemeOps.d.ts +66 -0
  207. package/types/ops/ThemeOps.d.ts.map +1 -0
  208. package/types/ops/VariablesOps.d.ts +39 -0
  209. package/types/ops/VariablesOps.d.ts.map +1 -0
  210. package/types/ops/utils/Console.d.ts +63 -0
  211. package/types/ops/utils/Console.d.ts.map +1 -0
  212. package/types/ops/utils/DataProtection.d.ts +6 -0
  213. package/types/ops/utils/DataProtection.d.ts.map +1 -0
  214. package/types/ops/utils/ExportImportUtils.d.ts +22 -0
  215. package/types/ops/utils/ExportImportUtils.d.ts.map +1 -0
  216. package/types/ops/utils/OpsUtils.d.ts +27 -0
  217. package/types/ops/utils/OpsUtils.d.ts.map +1 -0
  218. package/types/ops/utils/Wordwrap.d.ts +1 -0
  219. package/types/ops/utils/Wordwrap.d.ts.map +1 -0
  220. package/types/storage/SessionStorage.d.ts +47 -0
  221. package/types/storage/SessionStorage.d.ts.map +1 -0
  222. package/types/storage/StaticStorage.d.ts +14 -0
  223. package/types/storage/StaticStorage.d.ts.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"SamlOps.js","names":["fs","_","decode","encode","encodeBase64Url","createTable","printMessage","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","createObjectTable","getProviders","findProviders","getProviderByLocationAndId","getProviderMetadata","createProvider","getProviderMetadataUrl","getScript","convertBase64TextToArray","convertBase64UrlTextToArray","convertTextArrayToBase64","convertTextArrayToBase64Url","getRealmString","getTypedFilename","saveJsonToFile","saveTextToFile","validateImport","createOrUpdateScript","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getFileDataTemplate","meta","script","saml","hosted","remote","metadata","listProviders","long","providerList","data","result","sort","a","b","_id","localeCompare","forEach","item","entityId","table","provider","push","location","roles","map","role","join","toString","exportDependencies","providerData","fileData","attrMapperScriptId","get","scriptData","idpAdapterScriptId","metaDataResponse","exportProvider","file","fileName","found","resultCount","id","then","response","brightCyan","catch","err","exportMetadata","metaData","describeProvider","rawProviderData","_rev","metadataUrl","exportProvidersToFile","status","stubData","exportProvidersToFiles","importDependencies","getLocation","entityId64","undefined","importProvider","readFile","JSON","parse","createProviderErr","importFirstProvider","providerIds","keys","length","importProvidersFromFile","hostedIds","remoteIds","concat","includes","importProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","totalErrors","readFileSync","errors"],"sources":["ops/SamlOps.ts"],"sourcesContent":["import fs from 'fs';\nimport _ from 'lodash';\nimport { decode, encode, encodeBase64Url } from '../api/utils/Base64';\nimport {\n createTable,\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n createObjectTable,\n} from './utils/Console';\nimport {\n getProviders,\n findProviders,\n getProviderByLocationAndId,\n getProviderMetadata,\n createProvider,\n getProviderMetadataUrl,\n} from '../api/Saml2Api';\nimport { getScript } from '../api/ScriptApi';\nimport {\n convertBase64TextToArray,\n convertBase64UrlTextToArray,\n convertTextArrayToBase64,\n convertTextArrayToBase64Url,\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n saveTextToFile,\n validateImport,\n} from './utils/ExportImportUtils';\nimport { createOrUpdateScript } from './ScriptOps';\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n },\n };\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n */\nexport async function listProviders(long = false) {\n const providerList = (await getProviders()).data.result;\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n providerList.forEach((item) => {\n printMessage(`${item.entityId}`, 'data');\n });\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n providerList.forEach((provider) => {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n });\n printMessage(table.toString());\n }\n}\n\n/**\n * Include dependencies in the export file\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {Object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = (await getScript(attrMapperScriptId)).data;\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[attrMapperScriptId] = scriptData;\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = (await getScript(idpAdapterScriptId)).data;\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[idpAdapterScriptId] = scriptData;\n }\n const metaDataResponse = await getProviderMetadata(providerData.entityId);\n // eslint-disable-next-line no-param-reassign\n fileData.saml.metadata[providerData._id] = convertBase64UrlTextToArray(\n encodeBase64Url(metaDataResponse.data)\n );\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportProvider(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'saml');\n }\n createProgressIndicator(1, `Exporting provider ${entityId}`);\n const found = await findProviders(`entityId eq '${entityId}'`, 'location');\n switch (found.data.resultCount) {\n case 0:\n printMessage(`No provider with entity id '${entityId}' found`, 'error');\n break;\n case 1:\n {\n const { location } = found.data.result[0];\n const id = found.data.result[0]._id;\n getProviderByLocationAndId(location, id)\n .then(async (response) => {\n const providerData = response.data;\n updateProgressIndicator(`Writing file ${fileName}`);\n const fileData = getFileDataTemplate();\n fileData.saml[location][providerData._id] = providerData;\n await exportDependencies(providerData, fileData);\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`\n );\n })\n .catch((err) => {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n });\n }\n break;\n default:\n printMessage(\n `Multiple providers with entity id '${entityId}' found`,\n 'error'\n );\n }\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportMetadata(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'metadata', 'xml');\n }\n createProgressIndicator(1, `Exporting metadata for: ${entityId}`);\n getProviderMetadata(entityId)\n .then(async (response) => {\n updateProgressIndicator(`Writing file ${fileName}`);\n // printMessage(response.data, 'error');\n const metaData = response.data;\n saveTextToFile(metaData, fileName);\n stopProgressIndicator(\n `Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`\n );\n })\n .catch((err) => {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n });\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n */\nexport async function describeProvider(entityId) {\n const found = await findProviders(\n `entityId eq '${entityId}'`,\n 'location,roles'\n );\n switch (found.data.resultCount) {\n case 0:\n printMessage(`No provider with entity id '${entityId}' found`, 'error');\n break;\n case 1:\n {\n const { location } = found.data.result[0];\n const id = found.data.result[0]._id;\n const roles = found.data.result[0].roles\n .map((role) => roleMap[role])\n .join(', ');\n getProviderByLocationAndId(location, id)\n .then(async (response) => {\n const rawProviderData = response.data;\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getProviderMetadataUrl(entityId);\n // const fullProviderData = getFileDataTemplate();\n // fullProviderData.saml[location][rawProviderData._id] =\n // rawProviderData;\n // await exportDependencies(rawProviderData, fullProviderData);\n // describe the provider\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString());\n })\n .catch((err) => {\n printMessage(err, 'error');\n });\n }\n break;\n default:\n printMessage(\n `Multiple providers with entity id '${entityId}' found`,\n 'error'\n );\n }\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n */\nexport async function exportProvidersToFile(file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n const fileData = getFileDataTemplate();\n const found = await getProviders();\n if (found.status < 200 || found.status > 399) {\n printMessage(found, 'data');\n printMessage(`exportProvidersToFile: ${found.status}`, 'error');\n } else if (found.data.resultCount > 0) {\n createProgressIndicator(found.data.resultCount, 'Exporting providers');\n for (const stubData of found.data.result) {\n updateProgressIndicator(`Exporting provider ${stubData.entityId}`);\n // eslint-disable-next-line no-await-in-loop\n const response = await getProviderByLocationAndId(\n stubData.location,\n stubData._id\n );\n const providerData = response.data;\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(providerData, fileData);\n fileData.saml[stubData.location][providerData._id] = providerData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${found.data.resultCount} providers exported to ${fileName}.`\n );\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Export all entity providers to individual files\n */\nexport async function exportProvidersToFiles() {\n const found = await getProviders();\n if (found.data.resultCount > 0) {\n createProgressIndicator(found.data.resultCount, 'Exporting providers');\n for (const stubData of found.data.result) {\n updateProgressIndicator(`Exporting provider ${stubData.entityId}`);\n const fileName = getTypedFilename(stubData.entityId, 'saml');\n const fileData = getFileDataTemplate();\n // eslint-disable-next-line no-await-in-loop\n const response = await getProviderByLocationAndId(\n stubData.location,\n stubData._id\n );\n const providerData = response.data;\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(providerData, fileData);\n fileData.saml[stubData.location][providerData._id] = providerData;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${found.data.resultCount} providers exported.`);\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Include dependencies from the import file\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {Object} fileData File data object to read dependencies from\n */\nasync function importDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = _.get(fileData, ['script', attrMapperScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await createOrUpdateScript(attrMapperScriptId, scriptData);\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = _.get(fileData, ['script', idpAdapterScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await createOrUpdateScript(attrMapperScriptId, scriptData);\n }\n}\n\n/**\n * Find provider in import file and return its location\n * @param {String} entityId64 Base64-encoded provider entity id\n * @param {Object} fileData Import file json data\n * @returns {String} 'hosted' or 'remote' if found, undefined otherwise\n */\nfunction getLocation(entityId64, fileData) {\n if (_.get(fileData, ['saml', 'hosted', entityId64])) {\n return 'hosted';\n }\n if (_.get(fileData, ['saml', 'remote', entityId64])) {\n return 'remote';\n }\n return undefined;\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n */\nexport async function importProvider(entityId, file) {\n const entityId64 = encode(entityId, false);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n const location = getLocation(entityId64, fileData);\n if (location) {\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n updateProgressIndicator(`Importing ${entityId}`);\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n createProvider(location, providerData, metaData)\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${entityId}.`\n );\n })\n .catch((createProviderErr) => {\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response, 'error');\n });\n } else {\n stopProgressIndicator(\n `Provider ${entityId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first SAML entity provider from file\n * @param {String} file Import file name\n */\nexport async function importFirstProvider(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n // find providers in hosted and if none exist in remote\n let location = 'hosted';\n let providerIds = _.keys(fileData.saml[location]);\n if (providerIds.length === 0) {\n location = 'remote';\n providerIds = _.keys(fileData.saml[location]);\n if (providerIds.length === 0) {\n location = null;\n }\n }\n if (location) {\n const entityId64 = providerIds[0];\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n updateProgressIndicator(`Importing ${entityId}`);\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n createProvider(location, providerData, metaData)\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${entityId}.`\n );\n })\n .catch((createProviderErr) => {\n stopProgressIndicator(`Error importing provider ${entityId}`);\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n });\n } else {\n stopProgressIndicator(`No providers found in ${file.brightCyan}!`);\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n */\nexport async function importProvidersFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n // find providers in hosted and in remote and map locations\n const hostedIds = _.keys(fileData.saml.hosted);\n const remoteIds = _.keys(fileData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n createProgressIndicator(providerIds.length, 'Importing providers...');\n for (const entityId64 of providerIds) {\n const location = hostedIds.includes(entityId64) ? 'hosted' : 'remote';\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n await createProvider(location, providerData, metaData);\n updateProgressIndicator(`Imported ${entityId}`);\n } catch (createProviderErr) {\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n }\n stopProgressIndicator(`Providers imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n */\nexport async function importProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.saml.json')\n );\n createProgressIndicator(jsonFiles.length, 'Importing providers...');\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n // find providers in hosted and in remote and map locations\n const hostedIds = _.keys(fileData.saml.hosted);\n const remoteIds = _.keys(fileData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n total += providerIds.length;\n let errors = 0;\n for (const entityId64 of providerIds) {\n const location = hostedIds.includes(entityId64) ? 'hosted' : 'remote';\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n await createProvider(location, providerData, metaData);\n // updateProgressIndicator(`Imported ${entityId}`);\n } catch (createProviderErr) {\n errors += 1;\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n }\n totalErrors += errors;\n updateProgressIndicator(\n `Imported ${providerIds.length - errors} provider(s) from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} provider(s) from ${\n jsonFiles.length\n } file(s).`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SamlOps.js","names":["roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getFileDataTemplate","meta","script","saml","hosted","remote","metadata","listProviders","long","providerList","getProviders","data","result","sort","a","b","_id","localeCompare","forEach","item","printMessage","entityId","table","createTable","provider","push","location","roles","map","role","join","toString","exportDependencies","providerData","fileData","attrMapperScriptId","_","get","scriptData","getScript","convertBase64TextToArray","idpAdapterScriptId","metaDataResponse","getProviderMetadata","convertBase64UrlTextToArray","encodeBase64Url","exportProvider","file","fileName","getTypedFilename","createProgressIndicator","found","findProviders","resultCount","id","getProviderByLocationAndId","then","response","updateProgressIndicator","saveJsonToFile","stopProgressIndicator","brightCyan","catch","err","exportMetadata","metaData","saveTextToFile","describeProvider","rawProviderData","_rev","metadataUrl","getProviderMetadataUrl","createObjectTable","exportProvidersToFile","getRealmString","status","stubData","exportProvidersToFiles","importDependencies","convertTextArrayToBase64","createOrUpdateScript","getLocation","entityId64","undefined","importProvider","encode","fs","readFile","JSON","parse","validateImport","convertTextArrayToBase64Url","createProvider","createProviderErr","importFirstProvider","providerIds","keys","length","decode","importProvidersFromFile","hostedIds","remoteIds","concat","includes","importProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","totalErrors","readFileSync","errors"],"sources":["ops/SamlOps.ts"],"sourcesContent":["import fs from 'fs';\nimport _ from 'lodash';\nimport { decode, encode, encodeBase64Url } from '../api/utils/Base64';\nimport {\n createTable,\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n createObjectTable,\n} from './utils/Console';\nimport {\n getProviders,\n findProviders,\n getProviderByLocationAndId,\n getProviderMetadata,\n createProvider,\n getProviderMetadataUrl,\n} from '../api/Saml2Api';\nimport { getScript } from '../api/ScriptApi';\nimport {\n convertBase64TextToArray,\n convertBase64UrlTextToArray,\n convertTextArrayToBase64,\n convertTextArrayToBase64Url,\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n saveTextToFile,\n validateImport,\n} from './utils/ExportImportUtils';\nimport { createOrUpdateScript } from './ScriptOps';\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n },\n };\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n */\nexport async function listProviders(long = false) {\n const providerList = (await getProviders()).data.result;\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n providerList.forEach((item) => {\n printMessage(`${item.entityId}`, 'data');\n });\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n providerList.forEach((provider) => {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n });\n printMessage(table.toString());\n }\n}\n\n/**\n * Include dependencies in the export file\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {Object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = (await getScript(attrMapperScriptId)).data;\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[attrMapperScriptId] = scriptData;\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = (await getScript(idpAdapterScriptId)).data;\n scriptData.script = convertBase64TextToArray(scriptData.script);\n // eslint-disable-next-line no-param-reassign\n fileData.script[idpAdapterScriptId] = scriptData;\n }\n const metaDataResponse = await getProviderMetadata(providerData.entityId);\n // eslint-disable-next-line no-param-reassign\n fileData.saml.metadata[providerData._id] = convertBase64UrlTextToArray(\n encodeBase64Url(metaDataResponse.data)\n );\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportProvider(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'saml');\n }\n createProgressIndicator(1, `Exporting provider ${entityId}`);\n const found = await findProviders(`entityId eq '${entityId}'`, 'location');\n switch (found.data.resultCount) {\n case 0:\n printMessage(`No provider with entity id '${entityId}' found`, 'error');\n break;\n case 1:\n {\n const { location } = found.data.result[0];\n const id = found.data.result[0]._id;\n getProviderByLocationAndId(location, id)\n .then(async (response) => {\n const providerData = response.data;\n updateProgressIndicator(`Writing file ${fileName}`);\n const fileData = getFileDataTemplate();\n fileData.saml[location][providerData._id] = providerData;\n await exportDependencies(providerData, fileData);\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${entityId.brightCyan} to ${fileName.brightCyan}.`\n );\n })\n .catch((err) => {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n });\n }\n break;\n default:\n printMessage(\n `Multiple providers with entity id '${entityId}' found`,\n 'error'\n );\n }\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n */\nexport async function exportMetadata(entityId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(entityId, 'metadata', 'xml');\n }\n createProgressIndicator(1, `Exporting metadata for: ${entityId}`);\n getProviderMetadata(entityId)\n .then(async (response) => {\n updateProgressIndicator(`Writing file ${fileName}`);\n // printMessage(response.data, 'error');\n const metaData = response.data;\n saveTextToFile(metaData, fileName);\n stopProgressIndicator(\n `Exported ${entityId.brightCyan} metadata to ${fileName.brightCyan}.`\n );\n })\n .catch((err) => {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n });\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n */\nexport async function describeProvider(entityId) {\n const found = await findProviders(\n `entityId eq '${entityId}'`,\n 'location,roles'\n );\n switch (found.data.resultCount) {\n case 0:\n printMessage(`No provider with entity id '${entityId}' found`, 'error');\n break;\n case 1:\n {\n const { location } = found.data.result[0];\n const id = found.data.result[0]._id;\n const roles = found.data.result[0].roles\n .map((role) => roleMap[role])\n .join(', ');\n getProviderByLocationAndId(location, id)\n .then(async (response) => {\n const rawProviderData = response.data;\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getProviderMetadataUrl(entityId);\n // const fullProviderData = getFileDataTemplate();\n // fullProviderData.saml[location][rawProviderData._id] =\n // rawProviderData;\n // await exportDependencies(rawProviderData, fullProviderData);\n // describe the provider\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString());\n })\n .catch((err) => {\n printMessage(err, 'error');\n });\n }\n break;\n default:\n printMessage(\n `Multiple providers with entity id '${entityId}' found`,\n 'error'\n );\n }\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n */\nexport async function exportProvidersToFile(file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n const fileData = getFileDataTemplate();\n const found = await getProviders();\n if (found.status < 200 || found.status > 399) {\n printMessage(found, 'data');\n printMessage(`exportProvidersToFile: ${found.status}`, 'error');\n } else if (found.data.resultCount > 0) {\n createProgressIndicator(found.data.resultCount, 'Exporting providers');\n for (const stubData of found.data.result) {\n updateProgressIndicator(`Exporting provider ${stubData.entityId}`);\n // eslint-disable-next-line no-await-in-loop\n const response = await getProviderByLocationAndId(\n stubData.location,\n stubData._id\n );\n const providerData = response.data;\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(providerData, fileData);\n fileData.saml[stubData.location][providerData._id] = providerData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${found.data.resultCount} providers exported to ${fileName}.`\n );\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Export all entity providers to individual files\n */\nexport async function exportProvidersToFiles() {\n const found = await getProviders();\n if (found.data.resultCount > 0) {\n createProgressIndicator(found.data.resultCount, 'Exporting providers');\n for (const stubData of found.data.result) {\n updateProgressIndicator(`Exporting provider ${stubData.entityId}`);\n const fileName = getTypedFilename(stubData.entityId, 'saml');\n const fileData = getFileDataTemplate();\n // eslint-disable-next-line no-await-in-loop\n const response = await getProviderByLocationAndId(\n stubData.location,\n stubData._id\n );\n const providerData = response.data;\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(providerData, fileData);\n fileData.saml[stubData.location][providerData._id] = providerData;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${found.data.resultCount} providers exported.`);\n } else {\n printMessage('No entity providers found.', 'info');\n }\n}\n\n/**\n * Include dependencies from the import file\n * @param {Object} providerData Object representing a SAML entity provider\n * @param {Object} fileData File data object to read dependencies from\n */\nasync function importDependencies(providerData, fileData) {\n const attrMapperScriptId = _.get(providerData, [\n 'identityProvider',\n 'assertionProcessing',\n 'attributeMapper',\n 'attributeMapperScript',\n ]);\n if (attrMapperScriptId && attrMapperScriptId !== '[Empty]') {\n const scriptData = _.get(fileData, ['script', attrMapperScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await createOrUpdateScript(attrMapperScriptId, scriptData);\n }\n const idpAdapterScriptId = _.get(providerData, [\n 'identityProvider',\n 'advanced',\n 'idpAdapter',\n 'idpAdapterScript',\n ]);\n if (idpAdapterScriptId && idpAdapterScriptId !== '[Empty]') {\n const scriptData = _.get(fileData, ['script', idpAdapterScriptId]);\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await createOrUpdateScript(attrMapperScriptId, scriptData);\n }\n}\n\n/**\n * Find provider in import file and return its location\n * @param {String} entityId64 Base64-encoded provider entity id\n * @param {Object} fileData Import file json data\n * @returns {String} 'hosted' or 'remote' if found, undefined otherwise\n */\nfunction getLocation(entityId64, fileData) {\n if (_.get(fileData, ['saml', 'hosted', entityId64])) {\n return 'hosted';\n }\n if (_.get(fileData, ['saml', 'remote', entityId64])) {\n return 'remote';\n }\n return undefined;\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n */\nexport async function importProvider(entityId, file) {\n const entityId64 = encode(entityId, false);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n const location = getLocation(entityId64, fileData);\n if (location) {\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n updateProgressIndicator(`Importing ${entityId}`);\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n createProvider(location, providerData, metaData)\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${entityId}.`\n );\n })\n .catch((createProviderErr) => {\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response, 'error');\n });\n } else {\n stopProgressIndicator(\n `Provider ${entityId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first SAML entity provider from file\n * @param {String} file Import file name\n */\nexport async function importFirstProvider(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing provider...');\n // find providers in hosted and if none exist in remote\n let location = 'hosted';\n let providerIds = _.keys(fileData.saml[location]);\n if (providerIds.length === 0) {\n location = 'remote';\n providerIds = _.keys(fileData.saml[location]);\n if (providerIds.length === 0) {\n location = null;\n }\n }\n if (location) {\n const entityId64 = providerIds[0];\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n updateProgressIndicator(`Importing ${entityId}`);\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n createProvider(location, providerData, metaData)\n .then(() => {\n stopProgressIndicator(\n `Successfully imported provider ${entityId}.`\n );\n })\n .catch((createProviderErr) => {\n stopProgressIndicator(`Error importing provider ${entityId}`);\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n });\n } else {\n stopProgressIndicator(`No providers found in ${file.brightCyan}!`);\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n */\nexport async function importProvidersFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n // find providers in hosted and in remote and map locations\n const hostedIds = _.keys(fileData.saml.hosted);\n const remoteIds = _.keys(fileData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n createProgressIndicator(providerIds.length, 'Importing providers...');\n for (const entityId64 of providerIds) {\n const location = hostedIds.includes(entityId64) ? 'hosted' : 'remote';\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n await createProvider(location, providerData, metaData);\n updateProgressIndicator(`Imported ${entityId}`);\n } catch (createProviderErr) {\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n }\n stopProgressIndicator(`Providers imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n */\nexport async function importProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.saml.json')\n );\n createProgressIndicator(jsonFiles.length, 'Importing providers...');\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n // find providers in hosted and in remote and map locations\n const hostedIds = _.keys(fileData.saml.hosted);\n const remoteIds = _.keys(fileData.saml.remote);\n const providerIds = hostedIds.concat(remoteIds);\n total += providerIds.length;\n let errors = 0;\n for (const entityId64 of providerIds) {\n const location = hostedIds.includes(entityId64) ? 'hosted' : 'remote';\n const entityId = decode(entityId64);\n const providerData = _.get(fileData, ['saml', location, entityId64]);\n importDependencies(providerData, fileData);\n let metaData = null;\n if (location === 'remote') {\n metaData = convertTextArrayToBase64Url(\n fileData.saml.metadata[entityId64]\n );\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n await createProvider(location, providerData, metaData);\n // updateProgressIndicator(`Imported ${entityId}`);\n } catch (createProviderErr) {\n errors += 1;\n printMessage(`\\nError importing provider ${entityId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n }\n }\n totalErrors += errors;\n updateProgressIndicator(\n `Imported ${providerIds.length - errors} provider(s) from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} provider(s) from ${\n jsonFiles.length\n } file(s).`\n );\n}\n"],"mappings":"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"}
@@ -1,38 +1,42 @@
1
- import fs from 'fs';
2
- import { v4 as uuidv4 } from 'uuid';
3
- import { applyNameCollisionPolicy } from './utils/OpsUtils';
4
- import { createProgressIndicator, createTable, printMessage, stopProgressIndicator, updateProgressIndicator } from './utils/Console';
5
- import { getScriptByName, getScripts, putScript } from '../api/ScriptApi';
6
- import wordwrap from './utils/Wordwrap';
7
- import { convertBase64TextToArray, convertTextArrayToBase64, getTypedFilename, saveToFile, titleCase, validateImport } from './utils/ExportImportUtils';
8
- import storage from '../storage/SessionStorage';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createOrUpdateScript = createOrUpdateScript;
7
+ exports.exportScriptByName = exportScriptByName;
8
+ exports.exportScriptsToFile = exportScriptsToFile;
9
+ exports.exportScriptsToFiles = exportScriptsToFiles;
10
+ exports.importScriptsFromFile = importScriptsFromFile;
11
+ exports.listScripts = listScripts;
12
+
13
+ var _fs = _interopRequireDefault(require("fs"));
14
+
15
+ var _uuid = require("uuid");
16
+
17
+ var _OpsUtils = require("./utils/OpsUtils");
18
+
19
+ var _Console = require("./utils/Console");
20
+
21
+ var _ScriptApi = require("../api/ScriptApi");
22
+
23
+ var _Wordwrap = _interopRequireDefault(require("./utils/Wordwrap"));
24
+
25
+ var _ExportImportUtils = require("./utils/ExportImportUtils");
26
+
27
+ var _SessionStorage = _interopRequireDefault(require("../storage/SessionStorage"));
28
+
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+
31
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
32
+
33
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
34
+
9
35
  /**
10
36
  * List scripts
11
37
  */
12
-
13
- export async function listScripts(long = false) {
14
- try {
15
- const scripts = (await getScripts()).data.result;
16
- scripts.sort((a, b) => a.name.localeCompare(b.name));
17
-
18
- if (long) {
19
- const table = createTable(['Name', 'UUID', 'Language', 'Context', 'Description']);
20
- const langMap = {
21
- JAVASCRIPT: 'JS',
22
- GROOVY: 'Groovy'
23
- };
24
- scripts.forEach(script => {
25
- table.push([wordwrap(script.name, 25, ' '), script._id, langMap[script.language], wordwrap(titleCase(script.context.split('_').join(' ')), 25), wordwrap(script.description, 30)]);
26
- });
27
- printMessage(table.toString(), 'data');
28
- } else {
29
- scripts.forEach(script => {
30
- printMessage(`${script.name}`, 'data');
31
- });
32
- }
33
- } catch (error) {
34
- printMessage(`Error listing scripts - ${error}`, 'error');
35
- }
38
+ function listScripts() {
39
+ return _listScripts.apply(this, arguments);
36
40
  }
37
41
  /**
38
42
  * Export script to file
@@ -40,79 +44,110 @@ export async function listScripts(long = false) {
40
44
  * @param {String} file file name
41
45
  */
42
46
 
43
- export async function exportScriptByName(name, file) {
44
- let fileName = getTypedFilename(name, 'script');
45
-
46
- if (file) {
47
- fileName = file;
48
- }
49
-
50
- const scriptData = (await getScriptByName(name)).data.result;
51
-
52
- if (scriptData.length > 1) {
53
- printMessage(`Multiple scripts with name ${name} found...`, 'error');
54
- }
55
-
56
- scriptData.forEach(element => {
57
- const scriptTextArray = convertBase64TextToArray(element.script); // eslint-disable-next-line no-param-reassign
58
47
 
59
- element.script = scriptTextArray;
48
+ function _listScripts() {
49
+ _listScripts = _asyncToGenerator(function* () {
50
+ var long = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
51
+
52
+ try {
53
+ var scripts = (yield (0, _ScriptApi.getScripts)()).data.result;
54
+ scripts.sort((a, b) => a.name.localeCompare(b.name));
55
+
56
+ if (long) {
57
+ var table = (0, _Console.createTable)(['Name', 'UUID', 'Language', 'Context', 'Description']);
58
+ var langMap = {
59
+ JAVASCRIPT: 'JS',
60
+ GROOVY: 'Groovy'
61
+ };
62
+ scripts.forEach(script => {
63
+ table.push([(0, _Wordwrap.default)(script.name, 25, ' '), script._id, langMap[script.language], (0, _Wordwrap.default)((0, _ExportImportUtils.titleCase)(script.context.split('_').join(' ')), 25), (0, _Wordwrap.default)(script.description, 30)]);
64
+ });
65
+ (0, _Console.printMessage)(table.toString(), 'data');
66
+ } else {
67
+ scripts.forEach(script => {
68
+ (0, _Console.printMessage)("".concat(script.name), 'data');
69
+ });
70
+ }
71
+ } catch (error) {
72
+ (0, _Console.printMessage)("Error listing scripts - ".concat(error), 'error');
73
+ }
60
74
  });
61
- saveToFile('script', scriptData, '_id', fileName);
75
+ return _listScripts.apply(this, arguments);
76
+ }
77
+
78
+ function exportScriptByName(_x, _x2) {
79
+ return _exportScriptByName.apply(this, arguments);
62
80
  }
63
81
  /**
64
82
  * Export all scripts to single file
65
83
  * @param {String} file file name
66
84
  */
67
85
 
68
- export async function exportScriptsToFile(file) {
69
- let fileName = getTypedFilename(`all${storage.session.getRealm()}Scripts`, 'script');
70
86
 
71
- if (file) {
72
- fileName = file;
73
- }
87
+ function _exportScriptByName() {
88
+ _exportScriptByName = _asyncToGenerator(function* (name, file) {
89
+ var fileName = (0, _ExportImportUtils.getTypedFilename)(name, 'script');
74
90
 
75
- const scriptList = (await getScripts()).data.result;
76
- const allScriptsData = [];
77
- createProgressIndicator(scriptList.length, 'Exporting script');
91
+ if (file) {
92
+ fileName = file;
93
+ }
94
+
95
+ var scriptData = (yield (0, _ScriptApi.getScriptByName)(name)).data.result;
78
96
 
79
- for (const item of scriptList) {
80
- updateProgressIndicator(`Reading script ${item.name}`); // eslint-disable-next-line no-await-in-loop
97
+ if (scriptData.length > 1) {
98
+ (0, _Console.printMessage)("Multiple scripts with name ".concat(name, " found..."), 'error');
99
+ }
81
100
 
82
- const scriptData = (await getScriptByName(item.name)).data.result;
83
101
  scriptData.forEach(element => {
84
- const scriptTextArray = convertBase64TextToArray(element.script); // eslint-disable-next-line no-param-reassign
102
+ var scriptTextArray = (0, _ExportImportUtils.convertBase64TextToArray)(element.script); // eslint-disable-next-line no-param-reassign
85
103
 
86
104
  element.script = scriptTextArray;
87
- allScriptsData.push(element);
88
105
  });
89
- }
106
+ (0, _ExportImportUtils.saveToFile)('script', scriptData, '_id', fileName);
107
+ });
108
+ return _exportScriptByName.apply(this, arguments);
109
+ }
90
110
 
91
- stopProgressIndicator('Done');
92
- saveToFile('script', allScriptsData, '_id', fileName);
111
+ function exportScriptsToFile(_x3) {
112
+ return _exportScriptsToFile.apply(this, arguments);
93
113
  }
94
114
  /**
95
115
  * Export all scripts to individual files
96
116
  */
97
117
 
98
- export async function exportScriptsToFiles() {
99
- const scriptList = (await getScripts()).data.result;
100
- createProgressIndicator(scriptList.length, 'Exporting script');
101
118
 
102
- for (const item of scriptList) {
103
- updateProgressIndicator(`Reading script ${item.name}`); // eslint-disable-next-line no-await-in-loop
119
+ function _exportScriptsToFile() {
120
+ _exportScriptsToFile = _asyncToGenerator(function* (file) {
121
+ var fileName = (0, _ExportImportUtils.getTypedFilename)("all".concat(_SessionStorage.default.session.getRealm(), "Scripts"), 'script');
104
122
 
105
- const scriptData = (await getScriptByName(item.name)).data.result;
106
- scriptData.forEach(element => {
107
- const scriptTextArray = convertBase64TextToArray(element.script); // eslint-disable-next-line no-param-reassign
123
+ if (file) {
124
+ fileName = file;
125
+ }
108
126
 
109
- element.script = scriptTextArray;
110
- });
111
- const fileName = getTypedFilename(item.name, 'script');
112
- saveToFile('script', scriptData, '_id', fileName);
113
- }
127
+ var scriptList = (yield (0, _ScriptApi.getScripts)()).data.result;
128
+ var allScriptsData = [];
129
+ (0, _Console.createProgressIndicator)(scriptList.length, 'Exporting script');
114
130
 
115
- stopProgressIndicator('Done');
131
+ for (var item of scriptList) {
132
+ (0, _Console.updateProgressIndicator)("Reading script ".concat(item.name)); // eslint-disable-next-line no-await-in-loop
133
+
134
+ var scriptData = (yield (0, _ScriptApi.getScriptByName)(item.name)).data.result;
135
+ scriptData.forEach(element => {
136
+ var scriptTextArray = (0, _ExportImportUtils.convertBase64TextToArray)(element.script); // eslint-disable-next-line no-param-reassign
137
+
138
+ element.script = scriptTextArray;
139
+ allScriptsData.push(element);
140
+ });
141
+ }
142
+
143
+ (0, _Console.stopProgressIndicator)('Done');
144
+ (0, _ExportImportUtils.saveToFile)('script', allScriptsData, '_id', fileName);
145
+ });
146
+ return _exportScriptsToFile.apply(this, arguments);
147
+ }
148
+
149
+ function exportScriptsToFiles() {
150
+ return _exportScriptsToFiles.apply(this, arguments);
116
151
  }
117
152
  /**
118
153
  * Import script
@@ -121,78 +156,125 @@ export async function exportScriptsToFiles() {
121
156
  * @returns {Object} a status object
122
157
  */
123
158
 
124
- export async function createOrUpdateScript(id, data) {
125
- try {
126
- await putScript(id, data);
127
- return {
128
- error: false,
129
- name: data.name
130
- };
131
- } catch (e) {
132
- if (e.response.status === 409) {
133
- printMessage(`createOrUpdateScript WARNING: script with name ${data.name} already exists, using renaming policy... <name> => <name - imported (n)>`, 'warn');
134
- const newName = applyNameCollisionPolicy(data.name); // console.log(newName);
135
-
136
- printMessage(`Trying to save script as ${newName}`, 'warn'); // eslint-disable-next-line no-param-reassign
137
-
138
- data.name = newName;
139
- await createOrUpdateScript(id, data);
159
+
160
+ function _exportScriptsToFiles() {
161
+ _exportScriptsToFiles = _asyncToGenerator(function* () {
162
+ var scriptList = (yield (0, _ScriptApi.getScripts)()).data.result;
163
+ (0, _Console.createProgressIndicator)(scriptList.length, 'Exporting script');
164
+
165
+ for (var item of scriptList) {
166
+ (0, _Console.updateProgressIndicator)("Reading script ".concat(item.name)); // eslint-disable-next-line no-await-in-loop
167
+
168
+ var scriptData = (yield (0, _ScriptApi.getScriptByName)(item.name)).data.result;
169
+ scriptData.forEach(element => {
170
+ var scriptTextArray = (0, _ExportImportUtils.convertBase64TextToArray)(element.script); // eslint-disable-next-line no-param-reassign
171
+
172
+ element.script = scriptTextArray;
173
+ });
174
+ var fileName = (0, _ExportImportUtils.getTypedFilename)(item.name, 'script');
175
+ (0, _ExportImportUtils.saveToFile)('script', scriptData, '_id', fileName);
176
+ }
177
+
178
+ (0, _Console.stopProgressIndicator)('Done');
179
+ });
180
+ return _exportScriptsToFiles.apply(this, arguments);
181
+ }
182
+
183
+ function createOrUpdateScript(_x4, _x5) {
184
+ return _createOrUpdateScript.apply(this, arguments);
185
+ }
186
+
187
+ function _createOrUpdateScript() {
188
+ _createOrUpdateScript = _asyncToGenerator(function* (id, data) {
189
+ try {
190
+ yield (0, _ScriptApi.putScript)(id, data);
140
191
  return {
141
192
  error: false,
142
193
  name: data.name
143
194
  };
195
+ } catch (e) {
196
+ if (e.response.status === 409) {
197
+ (0, _Console.printMessage)("createOrUpdateScript WARNING: script with name ".concat(data.name, " already exists, using renaming policy... <name> => <name - imported (n)>"), 'warn');
198
+ var newName = (0, _OpsUtils.applyNameCollisionPolicy)(data.name); // console.log(newName);
199
+
200
+ (0, _Console.printMessage)("Trying to save script as ".concat(newName), 'warn'); // eslint-disable-next-line no-param-reassign
201
+
202
+ data.name = newName;
203
+ yield createOrUpdateScript(id, data);
204
+ return {
205
+ error: false,
206
+ name: data.name
207
+ };
208
+ }
209
+
210
+ (0, _Console.printMessage)("createOrUpdateScript ERROR: put script error, script ".concat(id, " - ").concat(e.message), 'error');
211
+ return {
212
+ error: true,
213
+ name: data.name
214
+ };
144
215
  }
216
+ });
217
+ return _createOrUpdateScript.apply(this, arguments);
218
+ }
145
219
 
146
- printMessage(`createOrUpdateScript ERROR: put script error, script ${id} - ${e.message}`, 'error');
147
- return {
148
- error: true,
149
- name: data.name
150
- };
151
- }
220
+ function importScriptsFromFile(_x6, _x7) {
221
+ return _importScriptsFromFile.apply(this, arguments);
152
222
  }
153
- export async function importScriptsFromFile(name, file, reUuid = false) {
154
- fs.readFile(file, 'utf8', (err, data) => {
155
- if (err) throw err;
156
- const scriptData = JSON.parse(data);
157
223
 
158
- if (validateImport(scriptData.meta)) {
159
- createProgressIndicator(Object.keys(scriptData.script).length, '');
224
+ function _importScriptsFromFile() {
225
+ _importScriptsFromFile = _asyncToGenerator(function* (name, file) {
226
+ var reUuid = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
160
227
 
161
- for (const existingId in scriptData.script) {
162
- if ({}.hasOwnProperty.call(scriptData.script, existingId)) {
163
- let newId = existingId; // console.log(id);
228
+ _fs.default.readFile(file, 'utf8', (err, data) => {
229
+ if (err) throw err;
230
+ var scriptData = JSON.parse(data);
164
231
 
165
- const encodedScript = convertTextArrayToBase64(scriptData.script[existingId].script);
166
- scriptData.script[existingId].script = encodedScript;
232
+ if ((0, _ExportImportUtils.validateImport)(scriptData.meta)) {
233
+ (0, _Console.createProgressIndicator)(Object.keys(scriptData.script).length, '');
167
234
 
168
- if (reUuid) {
169
- newId = uuidv4(); // printMessage(
170
- // `Re-uuid-ing script ${scriptData.script[existingId].name} ${existingId} => ${newId}...`
171
- // );
235
+ var _loop = function _loop(existingId) {
236
+ if ({}.hasOwnProperty.call(scriptData.script, existingId)) {
237
+ var newId = existingId; // console.log(id);
172
238
 
173
- scriptData.script[existingId]._id = newId;
174
- }
239
+ var encodedScript = (0, _ExportImportUtils.convertTextArrayToBase64)(scriptData.script[existingId].script);
240
+ scriptData.script[existingId].script = encodedScript;
241
+
242
+ if (reUuid) {
243
+ newId = (0, _uuid.v4)(); // printMessage(
244
+ // `Re-uuid-ing script ${scriptData.script[existingId].name} ${existingId} => ${newId}...`
245
+ // );
246
+
247
+ scriptData.script[existingId]._id = newId;
248
+ }
249
+
250
+ if (name) {
251
+ // printMessage(
252
+ // `Renaming script ${scriptData.script[existingId].name} => ${options.script}...`
253
+ // );
254
+ scriptData.script[existingId].name = name;
255
+ }
256
+
257
+ (0, _Console.updateProgressIndicator)("Importing ".concat(scriptData.script[existingId].name)); // console.log(scriptData.script[id]);
175
258
 
176
- if (name) {
177
- // printMessage(
178
- // `Renaming script ${scriptData.script[existingId].name} => ${options.script}...`
179
- // );
180
- scriptData.script[existingId].name = name;
259
+ createOrUpdateScript(newId, scriptData.script[existingId]).then(result => {
260
+ if (result == null) (0, _Console.printMessage)("Error importing ".concat(scriptData.script[existingId].name), 'error');
261
+ });
262
+ if (name) return "break";
181
263
  }
264
+ };
182
265
 
183
- updateProgressIndicator(`Importing ${scriptData.script[existingId].name}`); // console.log(scriptData.script[id]);
266
+ for (var existingId in scriptData.script) {
267
+ var _ret = _loop(existingId);
184
268
 
185
- createOrUpdateScript(newId, scriptData.script[existingId]).then(result => {
186
- if (result == null) printMessage(`Error importing ${scriptData.script[existingId].name}`, 'error');
187
- });
188
- if (name) break;
269
+ if (_ret === "break") break;
189
270
  }
190
- }
191
271
 
192
- stopProgressIndicator('Done'); // printMessage('Done');
193
- } else {
194
- printMessage('Import validation failed...', 'error');
195
- }
272
+ (0, _Console.stopProgressIndicator)('Done'); // printMessage('Done');
273
+ } else {
274
+ (0, _Console.printMessage)('Import validation failed...', 'error');
275
+ }
276
+ });
196
277
  });
278
+ return _importScriptsFromFile.apply(this, arguments);
197
279
  }
198
280
  //# sourceMappingURL=ScriptOps.js.map