passbolt-styleguide 3.8.4 → 3.9.0-alpha2

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 (318) hide show
  1. package/build/css/help.min.css +3 -3
  2. package/build/css/public.min.css +3 -3
  3. package/build/css/themes/default/api_authentication.min.css +3 -3
  4. package/build/css/themes/default/api_cloud.min.css +3 -3
  5. package/build/css/themes/default/api_main.min.css +3 -3
  6. package/build/css/themes/default/api_reports.min.css +3 -3
  7. package/build/css/themes/default/api_webinstaller.min.css +3 -3
  8. package/build/css/themes/default/ext_app.min.css +3 -3
  9. package/build/css/themes/default/ext_authentication.min.css +3 -3
  10. package/build/css/themes/default/ext_external.min.css +2 -2
  11. package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
  12. package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
  13. package/build/css/themes/default/ext_quickaccess.min.css +3 -3
  14. package/build/css/themes/midgar/api_authentication.min.css +3 -3
  15. package/build/css/themes/midgar/api_main.min.css +3 -3
  16. package/build/css/themes/midgar/api_reports.min.css +3 -3
  17. package/build/css/themes/midgar/ext_app.min.css +3 -3
  18. package/build/css/themes/midgar/ext_authentication.min.css +3 -3
  19. package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
  20. package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
  21. package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
  22. package/build/css/themes/solarized_dark/api_authentication.min.css +1 -1
  23. package/build/css/themes/solarized_dark/api_main.min.css +1 -1
  24. package/build/css/themes/solarized_dark/api_reports.min.css +1 -1
  25. package/build/css/themes/solarized_dark/ext_app.min.css +1 -1
  26. package/build/css/themes/solarized_dark/ext_authentication.min.css +1 -1
  27. package/build/css/themes/solarized_dark/ext_in_form_cta.min.css +1 -1
  28. package/build/css/themes/solarized_dark/ext_in_form_menu.min.css +1 -1
  29. package/build/css/themes/solarized_dark/ext_quickaccess.min.css +1 -1
  30. package/build/css/themes/solarized_light/api_authentication.min.css +1 -1
  31. package/build/css/themes/solarized_light/api_main.min.css +1 -1
  32. package/build/css/themes/solarized_light/api_reports.min.css +1 -1
  33. package/build/css/themes/solarized_light/ext_app.min.css +1 -1
  34. package/build/css/themes/solarized_light/ext_authentication.min.css +1 -1
  35. package/build/css/themes/solarized_light/ext_in_form_cta.min.css +1 -1
  36. package/build/css/themes/solarized_light/ext_in_form_menu.min.css +1 -1
  37. package/build/css/themes/solarized_light/ext_quickaccess.min.css +1 -1
  38. package/build/js/dist/api-account-recovery.js +1 -1
  39. package/build/js/dist/api-app.js +1 -1
  40. package/build/js/dist/api-app.js.LICENSE.txt +75 -5
  41. package/build/js/dist/api-feedback.js +2 -0
  42. package/build/js/dist/api-feedback.js.LICENSE.txt +45 -0
  43. package/build/js/dist/api-recover.js +1 -1
  44. package/build/js/dist/api-setup.js +1 -1
  45. package/build/js/dist/api-triage.js +1 -1
  46. package/build/js/dist/api-vendors.js +1 -1
  47. package/build/js/dist/api-vendors.js.LICENSE.txt +19 -9
  48. package/build/js/dist/src/locales/de-DE/common.json +995 -0
  49. package/build/js/dist/src/locales/en-UK/common.json +1061 -0
  50. package/build/js/dist/src/locales/es-ES/common.json +995 -0
  51. package/build/js/dist/src/locales/fr-FR/common.json +995 -0
  52. package/build/js/dist/src/locales/ja-JP/common.json +980 -0
  53. package/build/js/dist/src/locales/lt-LT/common.json +1025 -0
  54. package/build/js/dist/src/locales/nl-NL/common.json +995 -0
  55. package/build/js/dist/src/locales/pl-PL/common.json +1025 -0
  56. package/build/js/dist/src/locales/sv-SE/common.json +995 -0
  57. package/package.json +18 -1
  58. package/src/img/controls/attention.svg +1 -0
  59. package/src/locales/en-UK/common.json +80 -16
  60. package/src/react-extension/ApiApp.js +17 -5
  61. package/src/react-extension/ApiFeedback.entry.js +24 -0
  62. package/src/react-extension/ExtApp.js +12 -5
  63. package/src/react-extension/ExtAuthenticationLogin.js +17 -15
  64. package/src/react-extension/ExtAuthenticationLogin.test.stories.js +59 -0
  65. package/src/react-extension/ExtBootstrapApp.js +1 -0
  66. package/src/react-extension/components/Administration/AdministrationWorkspace.js +24 -0
  67. package/src/react-extension/components/Administration/AdministrationWorkspace.test.data.js +3 -3
  68. package/src/react-extension/components/Administration/AdministrationWorkspace.test.js +13 -1
  69. package/src/react-extension/components/Administration/AdministrationWorkspace.test.page.js +7 -0
  70. package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.js +101 -0
  71. package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.data.js +23 -0
  72. package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.stories.js +27 -0
  73. package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +1 -1
  74. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +78 -2
  75. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.data.js +3 -1
  76. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +60 -0
  77. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.page.js +23 -4
  78. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationInternationalisationActions/DisplayAdministrationInternationalisationActions.js +125 -0
  79. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationMfaActions/DisplayAdministrationMfaActions.js +131 -0
  80. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSelfRegistrationActions/DisplayAdministrationSelfRegistrationActions.js +103 -0
  81. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSsoActions/DisplayAdministrationSsoActions.js +91 -0
  82. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSubscriptionActions/DisplayAdministrationSubscriptionActions.js +85 -0
  83. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationUserDirectoryActions/DisplayAdministrationUserDirectoryActions.js +228 -0
  84. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +4 -0
  85. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +9 -0
  86. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +3 -3
  87. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.data.js +14 -0
  88. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.page.js +0 -17
  89. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +18 -115
  90. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.data.js +11 -13
  91. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.js +38 -43
  92. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.page.js +47 -10
  93. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.stories.js +10 -43
  94. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +82 -367
  95. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.data.js +128 -42
  96. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.js +75 -121
  97. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.page.js +46 -16
  98. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +18 -14
  99. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.js +103 -0
  100. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.js +53 -0
  101. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.page.js +81 -0
  102. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.stories.js +34 -0
  103. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.js +125 -0
  104. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.data.js +63 -0
  105. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.js +54 -0
  106. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.page.js +88 -0
  107. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.stories.js +35 -0
  108. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.js +381 -0
  109. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.data.js +69 -0
  110. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.js +332 -0
  111. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.page.js +247 -0
  112. package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.stories.js +72 -0
  113. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +19 -19
  114. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.data.js +1717 -1729
  115. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +11 -3
  116. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.page.js +4 -1
  117. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
  118. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +41 -140
  119. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +15 -3
  120. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +22 -49
  121. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.page.js +19 -11
  122. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.stories.js +9 -3
  123. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +5 -6
  124. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.data.js +1717 -1728
  125. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +11 -3
  126. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.page.js +4 -1
  127. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
  128. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +362 -835
  129. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data.js +427 -418
  130. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.js +134 -175
  131. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.page.js +108 -11
  132. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +17 -25
  133. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +4 -2
  134. package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +3 -3
  135. package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.js +1 -1
  136. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.js +32 -7
  137. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.data.js +0 -3
  138. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.js +145 -1
  139. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.page.js +52 -1
  140. package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.stories.js +15 -0
  141. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.js +340 -0
  142. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.data.js +56 -0
  143. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.js +223 -0
  144. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.page.js +235 -0
  145. package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.stories.js +55 -0
  146. package/src/react-extension/components/Administration/ManageSsoSettings/SsoProviders.data.js +34 -0
  147. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +12 -3
  148. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +27 -0
  149. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +8 -0
  150. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.js +197 -0
  151. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.data.js +37 -0
  152. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.js +187 -0
  153. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.page.js +120 -0
  154. package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.stories.js +31 -0
  155. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +9 -5
  156. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.data.js +4 -0
  157. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.js +11 -42
  158. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.page.js +1 -0
  159. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +9 -5
  160. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.data.js +4 -0
  161. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +16 -2
  162. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.page.js +17 -1
  163. package/src/react-extension/components/AuthenticationLogin/Login/Login.js +159 -61
  164. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.data.js +14 -11
  165. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.js +79 -0
  166. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.page.js +16 -0
  167. package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +2 -0
  168. package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +4 -0
  169. package/src/react-extension/components/Common/Error/ApiError/ApiError.js +119 -0
  170. package/src/react-extension/components/Common/Error/ApiError/ApiError.test.js +43 -0
  171. package/src/react-extension/components/Common/Error/ApiError/ApiError.test.page.js +108 -0
  172. package/src/react-extension/components/Common/Error/ApiError/ApiError.test.stories.js +39 -0
  173. package/src/react-extension/components/Common/Inputs/Autocomplete/Autocomplete.test.js +12 -0
  174. package/src/react-extension/components/Common/Inputs/Autocomplete/AutocompleteItem.js +2 -2
  175. package/src/react-extension/components/Common/Legacy/HandleLegacyAppjs.js +1 -1
  176. package/src/react-extension/components/Common/Navigation/Header/Logo.js +13 -1
  177. package/src/react-extension/components/Resource/CreateResource/CreateResource.js +103 -30
  178. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +44 -10
  179. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.page.js +35 -7
  180. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +3 -3
  181. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesListContextualMenu.js +6 -5
  182. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +5 -4
  183. package/src/react-extension/components/Resource/EditResource/EditResource.js +95 -23
  184. package/src/react-extension/components/Resource/EditResource/EditResource.test.js +45 -13
  185. package/src/react-extension/components/Resource/EditResource/EditResource.test.page.js +35 -2
  186. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetails.js +2 -1
  187. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.js +3 -2
  188. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +23 -2
  189. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.js +8 -0
  190. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.page.js +26 -2
  191. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +22 -1
  192. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.js +8 -0
  193. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.page.js +25 -2
  194. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetails.js +2 -1
  195. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +2 -1
  196. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +14 -1
  197. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.js +8 -0
  198. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.page.js +12 -0
  199. package/src/react-extension/components/User/CreateUser/CreateUser.js +42 -3
  200. package/src/react-extension/components/User/CreateUser/CreateUser.test.js +16 -0
  201. package/src/react-extension/components/User/CreateUser/CreateUser.test.page.js +26 -0
  202. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +2 -1
  203. package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.js +5 -5
  204. package/src/react-extension/components/User/EditUser/EditUser.js +29 -2
  205. package/src/react-extension/components/User/EditUser/EditUser.test.js +12 -0
  206. package/src/react-extension/components/User/EditUser/EditUser.test.page.js +26 -0
  207. package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +2 -1
  208. package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.data.js +1332 -1331
  209. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +2 -1
  210. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +19 -1
  211. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.js +9 -0
  212. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.page.js +12 -0
  213. package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.js +2 -1
  214. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +16 -1
  215. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +8 -0
  216. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +26 -1
  217. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
  218. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +6 -4
  219. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +4 -1
  220. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +21 -11
  221. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +10 -1
  222. package/src/react-extension/contexts/AdminSmtpSettingsContext.js +2 -0
  223. package/src/react-extension/contexts/AdminSmtpSettingsContext.test.data.js +13 -0
  224. package/src/react-extension/contexts/AdminSmtpSettingsContext.test.js +3 -1
  225. package/src/react-extension/contexts/AdminSsoContext.js +558 -0
  226. package/src/react-extension/contexts/AdminSsoContext.test.data.js +51 -0
  227. package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.js +194 -0
  228. package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.test.js +111 -0
  229. package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.js +265 -0
  230. package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.test.js +178 -0
  231. package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.js +453 -0
  232. package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.test.js +218 -0
  233. package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.js +168 -0
  234. package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.test.js +73 -0
  235. package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.js +353 -0
  236. package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.test.js +220 -0
  237. package/src/react-extension/contexts/AdministrationWorkspaceContext.js +17 -178
  238. package/src/react-extension/contexts/AdministrationWorkspaceContext.test.js +0 -26
  239. package/src/react-extension/contexts/ApiAppContext.test.data.js +4 -2
  240. package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.js +54 -4
  241. package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.data.js +10 -1
  242. package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.js +92 -14
  243. package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.js +1 -0
  244. package/src/react-extension/contexts/NavigationContext.js +34 -0
  245. package/src/react-extension/contexts/SsoContext.js +151 -0
  246. package/src/react-extension/contexts/SsoContext.test.data.js +36 -0
  247. package/src/react-extension/contexts/SsoContext.test.js +104 -0
  248. package/src/react-extension/lib/Domain/DomainUtil.js +70 -0
  249. package/src/react-extension/lib/Domain/DomainUtil.test.js +129 -0
  250. package/src/react-extension/lib/Domain/Domains.js +6113 -0
  251. package/src/react-extension/lib/Error/InputValidator.js +24 -0
  252. package/src/react-extension/lib/Map/DynamicRef.js +49 -0
  253. package/src/react-extension/lib/Map/DynamicRef.test.js +56 -0
  254. package/src/react-extension/lib/Map/MapObject.js +48 -0
  255. package/src/react-extension/lib/Map/MapObject.test.js +43 -0
  256. package/src/react-quickaccess/ExtQuickAccess.js +7 -4
  257. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +3 -1
  258. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.data.js +4 -0
  259. package/src/react-quickaccess/components/LoginPage/LoginPage.js +115 -4
  260. package/src/react-quickaccess/components/LoginPage/LoginPage.test.data.js +10 -0
  261. package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +30 -3
  262. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +33 -1
  263. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +25 -0
  264. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.js +60 -0
  265. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.page.js +60 -0
  266. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +33 -1
  267. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +36 -7
  268. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +3 -2
  269. package/src/react-quickaccess/contexts/SsoContext.js +150 -0
  270. package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +5 -0
  271. package/src/shared/constants/inputs.const.js +30 -0
  272. package/src/shared/lib/Browser/clipBoard.js +45 -0
  273. package/src/shared/lib/Browser/clipBoard.test.js +59 -0
  274. package/src/shared/models/Mfa/Duo.js +36 -0
  275. package/src/shared/models/Mfa/Duo.test.js +59 -0
  276. package/src/shared/models/Mfa/MfaDTO.js +51 -0
  277. package/src/shared/models/Mfa/MfaDTO.test.js +48 -0
  278. package/src/shared/models/Mfa/MfaEnumeration.js +17 -0
  279. package/src/shared/models/Mfa/MfaModel.js +48 -0
  280. package/src/shared/models/Mfa/MfaModel.test.js +37 -0
  281. package/src/shared/models/Mfa/Yubikey.js +35 -0
  282. package/src/shared/models/Mfa/Yubikey.test.js +47 -0
  283. package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.js +55 -0
  284. package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.test.js +37 -0
  285. package/src/shared/models/selfRegistration/SelfRegistrationDto.js +42 -0
  286. package/src/shared/models/selfRegistration/SelfRegistrationDto.test.js +48 -0
  287. package/src/shared/models/selfRegistration/SelfRegistrationEnumeration.js +17 -0
  288. package/src/shared/models/subscription/SubscriptionDto.js +34 -0
  289. package/src/shared/models/subscription/SubscriptionDto.test.js +31 -0
  290. package/src/shared/models/subscription/SubscriptionModel.js +33 -0
  291. package/src/shared/models/subscription/SubscriptionModel.test.js +48 -0
  292. package/src/shared/models/user/UserModel.js +37 -0
  293. package/src/shared/models/userDirectory/UserDirectoryDTO.js +57 -0
  294. package/src/shared/models/userDirectory/UserDirectoryDTO.test.js +40 -0
  295. package/src/shared/models/userDirectory/UserDirectoryEnum.js +22 -0
  296. package/src/shared/models/userDirectory/UserDirectoryModel.js +64 -0
  297. package/src/shared/models/userDirectory/UserDirectoryModel.test.js +37 -0
  298. package/src/shared/services/actions/subscription/SubscriptionActionService.js +69 -0
  299. package/src/shared/services/actions/subscription/SubscriptionActionService.test.js +73 -0
  300. package/src/shared/services/api/Internationalisation/InternationalisationService.js +46 -0
  301. package/src/shared/services/api/Mfa/MfaService.js +54 -0
  302. package/src/shared/services/{accountRecovery → api/accountRecovery}/ApiAppAccountRecoveryUserService.js +2 -2
  303. package/src/shared/services/{accountRecovery → api/accountRecovery}/ExtAppAccountRecoveryUserService.js +0 -0
  304. package/src/shared/services/api/secrets/pownedService.js +64 -0
  305. package/src/shared/services/api/secrets/pownedService.test.js +63 -0
  306. package/src/shared/services/api/selfRegistration/selfRegistrationService.js +64 -0
  307. package/src/shared/services/api/user/UserService.js +45 -0
  308. package/src/shared/services/api/userDirectory/UserDirectoryService.js +108 -0
  309. package/src/shared/services/forms/Mfa/MfaFormService.js +195 -0
  310. package/src/shared/services/forms/Mfa/MfaFormService.test.js +341 -0
  311. package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.js +92 -0
  312. package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.test.js +101 -0
  313. package/src/shared/services/forms/userDirectory/UserDirectoryFormService.js +118 -0
  314. package/src/shared/services/forms/userDirectory/UserDirectoryFormService.test.js +128 -0
  315. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.js +0 -205
  316. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.data.js +0 -37
  317. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.js +0 -197
  318. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.page.js +0 -133
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
4
+ *
5
+ * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
+ * For full copyright and license information, please see the LICENSE.txt
7
+ * Redistributions of files must retain the above copyright notice.
8
+ *
9
+ * @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
10
+ * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
+ * @link https://www.passbolt.com Passbolt(tm)
12
+ * @since 3.8.0
13
+ */
14
+
15
+ import React from "react";
16
+ import PropTypes from "prop-types";
17
+ import {withAppContext} from "../../AppContext";
18
+ import InternationalisationService from '../../../../shared/services/api/Internationalisation/InternationalisationService';
19
+
20
+ /**
21
+ * The Administration Internationalization Context
22
+ * @type {React.Context<Object>}
23
+ */
24
+ export const AdminInternationalizationContext = React.createContext({
25
+ getCurrentLocale: () => {}, // Returns settings saved
26
+ getLocale: () => {}, // Returns settings for UI changes
27
+ supportedLocales: () => {}, // Return supported locales
28
+ setLocale: () => {}, // Set the settings object with changes
29
+ hasLocaleChanges: () => {}, // Check if the settings has changes
30
+ findLocale: () => {}, // Find the current Internalisation settings and store it in the state
31
+ save: () => {}, // Save settings
32
+ setProcessing: () => {}, //Update processing object
33
+ isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
34
+ clearContext: () => {}, // put the data to its default state value
35
+ });
36
+
37
+ /**
38
+ * The Administration Internationalization context provider
39
+ */
40
+ export class AdminInternationalizationContextProvider extends React.Component {
41
+ /**
42
+ * Default constructor
43
+ * @param props The component props
44
+ */
45
+ constructor(props) {
46
+ super(props);
47
+ this.state = this.defaultState;
48
+ const apiClientOptions = props.context.getApiClientOptions();
49
+ this.internalisationService = new InternationalisationService(apiClientOptions);
50
+ }
51
+
52
+ /**
53
+ * Returns the default component state
54
+ */
55
+ get defaultState() {
56
+ return {
57
+ currentLocale: null, // The current locale
58
+ locale: "en-UK", // Change done to the current
59
+ processing: true, // Context is processing data
60
+ getCurrentLocale: this.getCurrentLocale.bind(this), // Returns locale saved
61
+ getLocale: this.getLocale.bind(this), // Returns locale for UI changes
62
+ setLocale: this.setLocale.bind(this), // Set the locale with changes
63
+ findLocale: this.findLocale.bind(this), // Find the current settings and store it in the state
64
+ hasLocaleChanges: this.hasLocaleChanges.bind(this), // Check if locale has changes
65
+ isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
66
+ setProcessing: this.setProcessing.bind(this),
67
+ save: this.save.bind(this), // Save the policy changes
68
+ clearContext: this.clearContext.bind(this), // put the data to its default state value
69
+ };
70
+ }
71
+
72
+ /**
73
+ * Find locale from API
74
+ * @returns {string}
75
+ */
76
+ findLocale() {
77
+ this.setProcessing(true);
78
+ const result = this.props.context.siteSettings.locale;
79
+ //Init saved locale
80
+ this.setState({currentLocale: result});
81
+ //Init locale which will interact with UI
82
+ this.setState({locale: result});
83
+
84
+ this.setProcessing(false);
85
+ }
86
+
87
+ /**
88
+ * Returns the locale actually saved
89
+ * @returns {object}
90
+ */
91
+ getCurrentLocale() {
92
+ return this.state.currentLocale;
93
+ }
94
+
95
+ /**
96
+ * Returns the locale that have been fetch previously.
97
+ * @returns {object}
98
+ */
99
+ getLocale() {
100
+ return this.state.locale;
101
+ }
102
+
103
+ /**
104
+ * Handle locale changes.
105
+ * @params {ReactEvent} The react event
106
+ * @returns {void}
107
+ */
108
+ async setLocale(locale) {
109
+ await this.setState({locale});
110
+ }
111
+
112
+ /**
113
+ * Returns true when the data is under processing
114
+ * @returns {boolean}
115
+ *
116
+ */
117
+ isProcessing() {
118
+ return this.state.processing;
119
+ }
120
+
121
+ /**
122
+ * Handle processing change.
123
+ * @params {Boolean} processing value
124
+ * @returns {void}
125
+ */
126
+ setProcessing(processing) {
127
+ this.setState({processing});
128
+ }
129
+
130
+ /**
131
+ * Check if there are changes to apply
132
+ * @returns {Boolean}
133
+ */
134
+ hasLocaleChanges() {
135
+ return this.state.locale !== this.state.currentLocale;
136
+ }
137
+
138
+ /**
139
+ * Puts the state to its default in order to avoid keeping the data users didn't want to save.
140
+ */
141
+ clearContext() {
142
+ const {currentLocale, locale, processing} = this.defaultState;
143
+ this.setState({
144
+ currentLocale, locale, processing
145
+ });
146
+ }
147
+
148
+ /**
149
+ * Whenever the save has been requested
150
+ */
151
+ async save() {
152
+ this.setProcessing(true);
153
+ await this.internalisationService.save({value: this.state.locale});
154
+ this.props.context.onRefreshLocaleRequested(this.state.locale);
155
+ this.findLocale();
156
+ }
157
+
158
+ /**
159
+ * Render the component
160
+ * @returns {JSX}
161
+ */
162
+ render() {
163
+ return (
164
+ <AdminInternationalizationContext.Provider value={this.state}>
165
+ {this.props.children}
166
+ </AdminInternationalizationContext.Provider>
167
+ );
168
+ }
169
+ }
170
+
171
+ AdminInternationalizationContextProvider.propTypes = {
172
+ context: PropTypes.any, // The application context
173
+ children: PropTypes.any, // The children components
174
+ };
175
+
176
+ export default withAppContext(AdminInternationalizationContextProvider);
177
+
178
+ /**
179
+ * Resource Workspace Context Consumer HOC
180
+ * @param WrappedComponent
181
+ */
182
+ export function withAdminInternationalization(WrappedComponent) {
183
+ return class WithAdminInternationalization extends React.Component {
184
+ render() {
185
+ return (
186
+ <AdminInternationalizationContext.Consumer>
187
+ {
188
+ adminInternationalizationContext => <WrappedComponent adminInternationalizationContext={adminInternationalizationContext} {...this.props} />
189
+ }
190
+ </AdminInternationalizationContext.Consumer>
191
+ );
192
+ }
193
+ };
194
+ }
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
4
+ *
5
+ * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
+ * For full copyright and license information, please see the LICENSE.txt
7
+ * Redistributions of files must retain the above copyright notice.
8
+ *
9
+ * @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
10
+ * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
+ * @link https://www.passbolt.com Passbolt(tm)
12
+ * @since 3.8.0
13
+ */
14
+
15
+ import {defaultLocale, defaultProps} from "../../../../react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.data";
16
+ import {AdminInternationalizationContextProvider} from './AdministrationInternationalizationContext';
17
+ import {mockApiResponse} from '../../../../../test/mocks/mockApiResponse';
18
+ import {enableFetchMocks} from 'jest-fetch-mock';
19
+
20
+ const frLocale = "fr-Fr";
21
+
22
+ describe("AdministrationInternationalizationContext", () => {
23
+ let adminInternationalizationContext; // The AdministrationInternationalizationContext to test
24
+ const props = defaultProps(); // The props to pass
25
+
26
+ beforeEach(() => {
27
+ jest.resetAllMocks();
28
+ adminInternationalizationContext = new AdminInternationalizationContextProvider(props);
29
+ const setStateMock = state => adminInternationalizationContext.state = Object.assign(adminInternationalizationContext.state, state);
30
+ jest.spyOn(adminInternationalizationContext, "setState").mockImplementation(setStateMock);
31
+ enableFetchMocks();
32
+ });
33
+
34
+
35
+ describe("AdministrationInternationalizationContext::findLocale", () => {
36
+ it("should get the current locale and store it in its state", async() => {
37
+ await adminInternationalizationContext.findLocale();
38
+
39
+ expect.assertions(3);
40
+
41
+ expect(adminInternationalizationContext.getLocale()).toEqual(defaultLocale);
42
+ expect(adminInternationalizationContext.getCurrentLocale()).toEqual(defaultLocale);
43
+ expect(adminInternationalizationContext.isProcessing()).toBeFalsy();
44
+ });
45
+ });
46
+
47
+
48
+ describe("AdministrationInternationalizationContext::hasLocaleChanges", () => {
49
+ it("should return true if settings is different then current setting", () => {
50
+ adminInternationalizationContext.setLocale(frLocale);
51
+
52
+ expect.assertions(1);
53
+
54
+ expect(adminInternationalizationContext.hasLocaleChanges()).toBeTruthy();
55
+ });
56
+
57
+ it("should return false if settings is different then current setting", async() => {
58
+ await adminInternationalizationContext.findLocale();
59
+
60
+ adminInternationalizationContext.setLocale(frLocale);
61
+ adminInternationalizationContext.setLocale(defaultLocale);
62
+
63
+ expect.assertions(1);
64
+
65
+ expect(adminInternationalizationContext.hasLocaleChanges()).toBeFalsy();
66
+ });
67
+ });
68
+
69
+
70
+ describe("AdministrationInternationalizationContext::clearContext", () => {
71
+ it("should clear the context and set it by default", () => {
72
+ adminInternationalizationContext.setLocale(frLocale);
73
+
74
+ adminInternationalizationContext.clearContext();
75
+
76
+ expect.assertions(3);
77
+
78
+ expect(adminInternationalizationContext.isProcessing()).toBeTruthy();
79
+ expect(adminInternationalizationContext.getCurrentLocale()).toBe(null);
80
+ expect(adminInternationalizationContext.getLocale()).toBe(defaultLocale);
81
+ });
82
+ });
83
+
84
+ describe("AdministrationInternationalizationContext::setLocale", () => {
85
+ it("should update locale object and not the current object", async() => {
86
+ await adminInternationalizationContext.findLocale();
87
+ adminInternationalizationContext.setLocale(frLocale);
88
+
89
+ expect.assertions(2);
90
+
91
+ expect(adminInternationalizationContext.getCurrentLocale()).toBe(defaultLocale);
92
+ expect(adminInternationalizationContext.getLocale()).toBe(frLocale);
93
+ });
94
+ });
95
+
96
+ describe("AdministrationInternationalizationContext::save", () => {
97
+ it("should save locale and refresh texts", async() => {
98
+ fetch.doMockOnceIf(/locale\/settings/, () => mockApiResponse({}));
99
+ const findLocale = jest.spyOn(adminInternationalizationContext, "findLocale").mockImplementation();
100
+
101
+ await adminInternationalizationContext.save();
102
+
103
+ expect.assertions(3);
104
+
105
+ expect(adminInternationalizationContext.isProcessing()).toBeTruthy();
106
+ expect(findLocale).toHaveBeenCalled();
107
+ expect(JSON.parse(fetch.mock.calls[0][1].body)).toEqual({value: defaultLocale});
108
+ });
109
+ });
110
+ });
111
+
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
4
+ *
5
+ * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
+ * For full copyright and license information, please see the LICENSE.txt
7
+ * Redistributions of files must retain the above copyright notice.
8
+ *
9
+ * @copyright Copyright (c) 2022 Passbolt SA (https://www.passbolt.com)
10
+ * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
+ * @link https://www.passbolt.com Passbolt(tm)
12
+ * @since 3.8.0
13
+ */
14
+
15
+ import React from "react";
16
+ import PropTypes from "prop-types";
17
+ import {withAppContext} from "../../AppContext";
18
+ import MfaModel from '../../../../shared/models/Mfa/MfaModel';
19
+ import MfaDTO from '../../../../shared/models/Mfa/MfaDTO';
20
+ import MfaService from "../../../../shared/services/api/Mfa/MfaService";
21
+
22
+ /**
23
+ * The Administration Email Notification Context
24
+ * @type {React.Context<Object>}
25
+ */
26
+ export const AdminMfaContext = React.createContext({
27
+ getCurrentSettings: () => {}, // Returns settings saved
28
+ getSettings: () => {}, // Returns settings for UI changes
29
+ setSettings: () => {}, // Set the settings object with changes
30
+ hasSettingsChanges: () => {}, // Check if the policy has changes
31
+ findMfaSettings: () => {}, // Find the current Mfa settings and store it in the state
32
+ save: () => {}, // Save settings
33
+ setProcessing: () => {}, //Update processing object
34
+ isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
35
+ getErrors: () => {}, // Return current errors
36
+ setError: () => {}, // Init errors object message
37
+ isSubmitted: () => {}, // returns the value submitted
38
+ setSubmitted: () => {}, // Set the submitted variab
39
+ setErrors: () => {}, // Set errors to object object
40
+ clearContext: () => {}, // put the data to its default state value
41
+ });
42
+
43
+ /**
44
+ * The Administration Mfa context provider
45
+ */
46
+ export class AdminMfaContextProvider extends React.Component {
47
+ /**
48
+ * Default constructor
49
+ * @param props The component props
50
+ */
51
+ constructor(props) {
52
+ super(props);
53
+ this.state = this.defaultState;
54
+ const apiClientOptions = props.context.getApiClientOptions();
55
+ this.mfaService = new MfaService(apiClientOptions);
56
+ }
57
+
58
+ /**
59
+ * Returns the default component state
60
+ */
61
+ get defaultState() {
62
+ return {
63
+ errors: this.initErrors(),
64
+ currentSettings: null, // The current settings
65
+ settings: new MfaModel(), // Change done to the settings object
66
+ submitted: false, // The informations about the form state
67
+ processing: true, // Context is processing data
68
+ getCurrentSettings: this.getCurrentSettings.bind(this), // Returns settings saved
69
+ getSettings: this.getSettings.bind(this), // Returns settings for UI changes
70
+ setSettings: this.setSettings.bind(this), // Set the settings object with changes
71
+ findMfaSettings: this.findMfaSettings.bind(this), // Find the current settings and store it in the state
72
+ hasSettingsChanges: this.hasSettingsChanges.bind(this), // Check if setting has changes
73
+ isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
74
+ isSubmitted: this.isSubmitted.bind(this), // returns the value submitted
75
+ setSubmitted: this.setSubmitted.bind(this), // Set the submitted variable
76
+ setProcessing: this.setProcessing.bind(this),
77
+ save: this.save.bind(this), // Save the policy changes
78
+ getErrors: this.getErrors.bind(this), // Return current errors
79
+ setError: this.setError.bind(this), // Set an error to object object
80
+ setErrors: this.setErrors.bind(this), // Set errors to object object
81
+ clearContext: this.clearContext.bind(this), // put the data to its default state value
82
+ };
83
+ }
84
+
85
+ /**
86
+ * init the errors object
87
+ * @return {Promise<void>}
88
+ */
89
+ initErrors() {
90
+ return {
91
+ yubikeyClientIdentifierError: null, // yubikey client identifier error
92
+ yubikeySecretKeyError: null, // yubikey secret key error
93
+ duoHostnameError: null, // duo hostname error
94
+ duoIntegrationKeyError: null, // duo integration key error
95
+ duoSaltError: null, // duo salt error
96
+ duoSecretKeyError: null, // duo secret key error
97
+ };
98
+ }
99
+
100
+ /**
101
+ * Find the Mfa settings
102
+ * @return {Promise<void>}
103
+ */
104
+ async findMfaSettings() {
105
+ this.setProcessing(true);
106
+ const result = await this.mfaService.findAllSettings();
107
+ const currentSettings = new MfaModel(result);
108
+ //Init saved setting
109
+ this.setState({currentSettings});
110
+ //Init setting which will interact with UI
111
+ this.setState({settings: Object.assign({}, currentSettings)});
112
+
113
+ this.setProcessing(false);
114
+ }
115
+
116
+ /**
117
+ * Returns the setting actually saved inside DB
118
+ * @returns {object}
119
+ */
120
+ getCurrentSettings() {
121
+ return this.state.currentSettings;
122
+ }
123
+
124
+ /**
125
+ * Returns the Mfa settings that have been fetch previously.
126
+ * @returns {object}
127
+ */
128
+ getSettings() {
129
+ return this.state.settings;
130
+ }
131
+
132
+ /**
133
+ * Handle settings changes.
134
+ * @params {ReactEvent} The react event
135
+ * @returns {void}
136
+ */
137
+ async setSettings(key, value) {
138
+ const newSettings = Object.assign({}, this.state.settings, {[key]: value});
139
+ await this.setState({settings: newSettings});
140
+ }
141
+
142
+ /**
143
+ * Returns true when the data is under processing
144
+ * @returns {boolean}
145
+ *
146
+ */
147
+ isProcessing() {
148
+ return this.state.processing;
149
+ }
150
+
151
+ /**
152
+ * Handle processing change.
153
+ * @params {Boolean} processing value
154
+ * @returns {void}
155
+ */
156
+ setProcessing(processing) {
157
+ this.setState({processing});
158
+ }
159
+
160
+ /**
161
+ * Check if there are changes to apply
162
+ * @returns {Boolean}
163
+ */
164
+ hasSettingsChanges() {
165
+ return JSON.stringify(this.state.currentSettings) !== JSON.stringify(this.state.settings);
166
+ }
167
+
168
+ /**
169
+ * return true if the form has been submitted
170
+ * @returns {Boolean}
171
+ */
172
+ isSubmitted() {
173
+ return this.state.submitted;
174
+ }
175
+
176
+ /**
177
+ * rchange value for submitted
178
+ * @returns {Boolean}
179
+ */
180
+ setSubmitted(submitted) {
181
+ this.setState({submitted});
182
+ }
183
+
184
+ /**
185
+ * Puts the state to its default in order to avoid keeping the data users didn't want to save.
186
+ */
187
+ clearContext() {
188
+ const {currentSettings, settings, processing} = this.defaultState;
189
+ this.setState({
190
+ currentSettings, settings, processing
191
+ });
192
+ }
193
+
194
+ /**
195
+ * Whenever the save has been requested
196
+ */
197
+ async save() {
198
+ this.setProcessing(true);
199
+ const newSettings = new MfaDTO(this.state.settings);
200
+ await this.mfaService.save(newSettings);
201
+ await this.findMfaSettings();
202
+ }
203
+
204
+ /**
205
+ * return the errors object
206
+ */
207
+ getErrors() {
208
+ return this.state.errors;
209
+ }
210
+
211
+ /**
212
+ * set an error to object
213
+ */
214
+ setError(key, value) {
215
+ const errors = Object.assign({}, this.state.errors, {[key]: value});
216
+ this.setState({errors});
217
+ }
218
+
219
+
220
+ /**
221
+ * set errors to object
222
+ */
223
+ setErrors(newErrors, callback = () => {}) {
224
+ const errors = Object.assign({}, this.state.errors, newErrors);
225
+ return this.setState({errors}, callback);
226
+ }
227
+
228
+ /**
229
+ * Render the component
230
+ * @returns {JSX}
231
+ */
232
+ render() {
233
+ return (
234
+ <AdminMfaContext.Provider value={this.state}>
235
+ {this.props.children}
236
+ </AdminMfaContext.Provider>
237
+ );
238
+ }
239
+ }
240
+
241
+ AdminMfaContextProvider.propTypes = {
242
+ context: PropTypes.any, // The application context
243
+ children: PropTypes.any, // The children components
244
+ };
245
+
246
+ export default withAppContext(AdminMfaContextProvider);
247
+
248
+
249
+ /**
250
+ * Resource Workspace Context Consumer HOC
251
+ * @param WrappedComponent
252
+ */
253
+ export function withAdminMfa(WrappedComponent) {
254
+ return class WithAdminMfa extends React.Component {
255
+ render() {
256
+ return (
257
+ <AdminMfaContext.Consumer>
258
+ {
259
+ adminMfaContext => <WrappedComponent adminMfaContext={adminMfaContext} {...this.props} />
260
+ }
261
+ </AdminMfaContext.Consumer>
262
+ );
263
+ }
264
+ };
265
+ }