@strapi/admin 5.48.0 → 5.49.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 (414) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +41 -25
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +15 -7
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/Filters.js +3 -2
  12. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +9 -5
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  16. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  19. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  20. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  21. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  22. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  24. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  25. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  26. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  28. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  30. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  31. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  32. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  33. package/dist/admin/admin/src/components/LeftMenu.js +4 -3
  34. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  35. package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
  36. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  38. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  39. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  40. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  41. package/dist/admin/admin/src/components/Pagination.js +3 -2
  42. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  43. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  44. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  45. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  46. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  47. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  48. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  49. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  50. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  51. package/dist/admin/admin/src/components/Table.js +3 -2
  52. package/dist/admin/admin/src/components/Table.js.map +1 -1
  53. package/dist/admin/admin/src/components/Theme.js +3 -2
  54. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  55. package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
  56. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  57. package/dist/admin/admin/src/components/UpsellBanner.mjs +1 -1
  58. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  59. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  60. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  61. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  62. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  63. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  64. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  65. package/dist/admin/admin/src/core/apis/router.js +20 -16
  66. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  67. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  68. package/dist/admin/admin/src/features/Auth.js +78 -6
  69. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  70. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  71. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  72. package/dist/admin/admin/src/features/BackButton.js +3 -2
  73. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  74. package/dist/admin/admin/src/features/Configuration.js +3 -2
  75. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  76. package/dist/admin/admin/src/features/Notifications.js +3 -2
  77. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  78. package/dist/admin/admin/src/features/Tracking.js +7 -3
  79. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  80. package/dist/admin/admin/src/features/Widgets.js +3 -2
  81. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  82. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  83. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  84. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  85. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  86. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  87. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  88. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  89. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  90. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  91. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  92. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  93. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  94. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  95. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  96. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  97. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  98. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  99. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  100. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  101. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  102. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  103. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  104. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  105. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  106. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  107. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  108. package/dist/admin/admin/src/hooks/useMenu.js +47 -8
  109. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  110. package/dist/admin/admin/src/hooks/useMenu.mjs +40 -6
  111. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  112. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  113. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  114. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  115. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  116. package/dist/admin/admin/src/hooks/useSettingsMenu.js +68 -4
  117. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  118. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs +61 -2
  119. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
  120. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  121. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  122. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +11 -5
  123. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  125. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  126. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  127. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  128. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  129. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  130. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  131. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  132. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  133. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Home/HomePage.js +9 -4
  135. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  136. package/dist/admin/admin/src/pages/Home/HomePage.mjs +6 -2
  137. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  138. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  139. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +8 -4
  141. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  143. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  144. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  145. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  146. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  147. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  148. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  149. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  151. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  153. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  155. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  157. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  159. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  161. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  163. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  165. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  169. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  171. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +5 -2
  173. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -0
  175. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  176. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  177. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  179. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +4 -3
  181. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +4 -3
  183. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  185. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -6
  187. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  189. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  191. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  193. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  195. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +33 -25
  197. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  198. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  199. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  200. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  201. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  202. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +8 -3
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  211. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  212. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  213. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  214. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  215. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  216. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  217. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  218. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  219. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  220. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  221. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  222. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  223. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  224. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  225. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  226. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  227. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  228. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  229. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  230. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  231. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  232. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  233. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  234. package/dist/admin/admin/src/translations/ar.json.js +1 -1
  235. package/dist/admin/admin/src/translations/ar.json.mjs +1 -1
  236. package/dist/admin/admin/src/translations/cs.json.js +1 -1
  237. package/dist/admin/admin/src/translations/cs.json.mjs +1 -1
  238. package/dist/admin/admin/src/translations/de.json.js +1 -1
  239. package/dist/admin/admin/src/translations/de.json.mjs +1 -1
  240. package/dist/admin/admin/src/translations/en.json.js +1 -1
  241. package/dist/admin/admin/src/translations/en.json.mjs +1 -1
  242. package/dist/admin/admin/src/translations/es.json.js +1 -1
  243. package/dist/admin/admin/src/translations/es.json.mjs +1 -1
  244. package/dist/admin/admin/src/translations/fi.json.js +1 -1
  245. package/dist/admin/admin/src/translations/fi.json.mjs +1 -1
  246. package/dist/admin/admin/src/translations/fr.json.js +1 -1
  247. package/dist/admin/admin/src/translations/fr.json.mjs +1 -1
  248. package/dist/admin/admin/src/translations/it.json.js +1 -1
  249. package/dist/admin/admin/src/translations/it.json.mjs +1 -1
  250. package/dist/admin/admin/src/translations/ko.json.js +1 -1
  251. package/dist/admin/admin/src/translations/ko.json.mjs +1 -1
  252. package/dist/admin/admin/src/translations/nl.json.js +1 -1
  253. package/dist/admin/admin/src/translations/nl.json.mjs +1 -1
  254. package/dist/admin/admin/src/translations/pl.json.js +1 -1
  255. package/dist/admin/admin/src/translations/pl.json.mjs +1 -1
  256. package/dist/admin/admin/src/translations/ru.json.js +1 -1
  257. package/dist/admin/admin/src/translations/ru.json.mjs +1 -1
  258. package/dist/admin/admin/src/translations/tr.json.js +1 -1
  259. package/dist/admin/admin/src/translations/tr.json.mjs +1 -1
  260. package/dist/admin/admin/src/translations/uk.json.js +1 -1
  261. package/dist/admin/admin/src/translations/uk.json.mjs +1 -1
  262. package/dist/admin/admin/src/translations/vi.json.js +1 -1
  263. package/dist/admin/admin/src/translations/vi.json.mjs +1 -1
  264. package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -1
  265. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -1
  266. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  267. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  268. package/dist/admin/admin/src/utils/locales.js +3 -2
  269. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  270. package/dist/admin/admin/src/utils/objects.js +9 -4
  271. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  272. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  273. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  274. package/dist/admin/admin/src/utils/urls.js +5 -1
  275. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  276. package/dist/admin/admin/src/utils/widgetVisibility.js +25 -0
  277. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -0
  278. package/dist/admin/admin/src/utils/widgetVisibility.mjs +22 -0
  279. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -0
  280. package/dist/admin/admin/tests/utils.js +3 -2
  281. package/dist/admin/admin/tests/utils.js.map +1 -1
  282. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  283. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  284. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  285. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  286. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  287. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  288. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +6 -4
  289. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  290. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +6 -4
  291. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  292. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  293. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  294. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  295. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  296. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  297. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  298. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  299. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  300. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  301. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  302. package/dist/admin/src/StrapiApp.d.ts +7 -1
  303. package/dist/admin/src/core/apis/router.d.ts +1 -2
  304. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  305. package/dist/admin/src/hooks/useMenu.d.ts +2 -1
  306. package/dist/admin/src/hooks/useSettingsMenu.d.ts +2 -1
  307. package/dist/admin/src/utils/widgetVisibility.d.ts +18 -0
  308. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  309. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  310. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  311. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  312. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  313. package/dist/server/ee/server/src/controllers/user.js +12 -7
  314. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  315. package/dist/server/ee/server/src/controllers/user.mjs +7 -6
  316. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  317. package/dist/server/ee/server/src/services/auth.js +5 -1
  318. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  319. package/dist/server/ee/server/src/services/user.js +8 -4
  320. package/dist/server/ee/server/src/services/user.js.map +1 -1
  321. package/dist/server/index.js +6 -2
  322. package/dist/server/index.js.map +1 -1
  323. package/dist/server/server/src/ai/services/ai.js +10 -4
  324. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  325. package/dist/server/server/src/controllers/admin.js +9 -4
  326. package/dist/server/server/src/controllers/admin.js.map +1 -1
  327. package/dist/server/server/src/controllers/authenticated-user.js +25 -4
  328. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  329. package/dist/server/server/src/controllers/authenticated-user.mjs +25 -4
  330. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  331. package/dist/server/server/src/controllers/authentication.js +8 -18
  332. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  333. package/dist/server/server/src/controllers/authentication.mjs +1 -16
  334. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  335. package/dist/server/server/src/controllers/user.js +9 -7
  336. package/dist/server/server/src/controllers/user.js.map +1 -1
  337. package/dist/server/server/src/controllers/user.mjs +6 -5
  338. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  339. package/dist/server/server/src/controllers/webhooks.js +7 -2
  340. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  341. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  342. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  343. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  344. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  345. package/dist/server/server/src/routes/authentication.js +4 -1
  346. package/dist/server/server/src/routes/authentication.js.map +1 -1
  347. package/dist/server/server/src/routes/authentication.mjs +4 -1
  348. package/dist/server/server/src/routes/authentication.mjs.map +1 -1
  349. package/dist/server/server/src/routes/serve-admin-panel.js +8 -3
  350. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  351. package/dist/server/server/src/services/api-token.js +7 -3
  352. package/dist/server/server/src/services/api-token.js.map +1 -1
  353. package/dist/server/server/src/services/auth.js +8 -3
  354. package/dist/server/server/src/services/auth.js.map +1 -1
  355. package/dist/server/server/src/services/content-type.js +6 -2
  356. package/dist/server/server/src/services/content-type.js.map +1 -1
  357. package/dist/server/server/src/services/encryption.js +8 -4
  358. package/dist/server/server/src/services/encryption.js.map +1 -1
  359. package/dist/server/server/src/services/passport.js +6 -2
  360. package/dist/server/server/src/services/passport.js.map +1 -1
  361. package/dist/server/server/src/services/permission/engine.js +5 -1
  362. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  363. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  364. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  365. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +20 -11
  366. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  367. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +21 -12
  368. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  369. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  370. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  371. package/dist/server/server/src/services/permission/queries.js +5 -1
  372. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  373. package/dist/server/server/src/services/project-settings.js +6 -2
  374. package/dist/server/server/src/services/project-settings.js.map +1 -1
  375. package/dist/server/server/src/services/role.js +8 -4
  376. package/dist/server/server/src/services/role.js.map +1 -1
  377. package/dist/server/server/src/services/token.js +7 -2
  378. package/dist/server/server/src/services/token.js.map +1 -1
  379. package/dist/server/server/src/services/transfer/permission.js +5 -1
  380. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  381. package/dist/server/server/src/services/transfer/token.js +10 -5
  382. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  383. package/dist/server/server/src/services/user.js +50 -9
  384. package/dist/server/server/src/services/user.js.map +1 -1
  385. package/dist/server/server/src/services/user.mjs +40 -3
  386. package/dist/server/server/src/services/user.mjs.map +1 -1
  387. package/dist/server/server/src/utils/normalize-email.js +24 -0
  388. package/dist/server/server/src/utils/normalize-email.js.map +1 -0
  389. package/dist/server/server/src/utils/normalize-email.mjs +22 -0
  390. package/dist/server/server/src/utils/normalize-email.mjs.map +1 -0
  391. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  392. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  393. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  394. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  395. package/dist/server/server/src/validation/common-validators.js +6 -2
  396. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  397. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  398. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  399. package/dist/server/shared/utils/session-auth.js +5 -1
  400. package/dist/server/shared/utils/session-auth.js.map +1 -1
  401. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  402. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  403. package/dist/server/src/controllers/user.d.ts.map +1 -1
  404. package/dist/server/src/index.d.ts +1 -0
  405. package/dist/server/src/index.d.ts.map +1 -1
  406. package/dist/server/src/routes/authentication.d.ts.map +1 -1
  407. package/dist/server/src/services/index.d.ts +1 -0
  408. package/dist/server/src/services/index.d.ts.map +1 -1
  409. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  410. package/dist/server/src/services/user.d.ts +1 -0
  411. package/dist/server/src/services/user.d.ts.map +1 -1
  412. package/dist/server/src/utils/normalize-email.d.ts +12 -0
  413. package/dist/server/src/utils/normalize-email.d.ts.map +1 -0
  414. package/package.json +11 -13
@@ -1 +1 @@
1
- {"version":3,"file":"Permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport {\n createFieldPermissionChecker,\n createDynamicActionPermissionChecker,\n} from '../utils/createPermissionChecker';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues, updateValuesWithPermissions } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n userPermissions?: AuthPermission[];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [], userPermissions }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = React.useCallback(\n (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeCollectionTypeGlobalActionCheckbox = React.useCallback(\n (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeConditions = React.useCallback(\n (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions, userPermissions });\n },\n [userPermissions]\n );\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\nconst buildInheritedConditionsFromExisting = (\n existing: unknown,\n enabledConditions: string[] = []\n): Record<string, boolean> | undefined => {\n if (!isObject(existing)) {\n return undefined;\n }\n\n const enabled = new Set(enabledConditions);\n\n return Object.keys(existing).reduce<Record<string, boolean>>((acc, key) => {\n acc[key] = enabled.has(key);\n\n return acc;\n }, {});\n};\n\nconst inheritConditionsAtPath = (\n data: unknown,\n pathToActionObject: string[],\n actionId: string,\n subject: string | null,\n userPermissions: AuthPermission[] | undefined\n) => {\n if (userPermissions === undefined) {\n return;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === actionId && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return;\n }\n\n const obj = data as Record<string, unknown>;\n const existingConditions = get(obj, [...pathToActionObject, 'conditions'], undefined);\n const nextConditions = buildInheritedConditionsFromExisting(\n existingConditions,\n matchingPermission.conditions ?? []\n );\n\n if (nextConditions) {\n set(obj, [...pathToActionObject, 'conditions'], nextConditions);\n }\n};\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value, userPermissions } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n const subjectPermissionChecker = createFieldPermissionChecker(\n actionId,\n collectionType,\n userPermissions\n );\n\n let updatedValues = updateValuesWithPermissions(\n collectionTypeActionData,\n value,\n subjectPermissionChecker\n );\n\n if (value === true) {\n inheritConditionsAtPath(updatedValues, [], actionId, collectionType, userPermissions);\n }\n\n if (value === false && updatedValues.conditions !== undefined) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value, userPermissions } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n const subject =\n pathToModifiedDataCollectionType[pathToModifiedDataCollectionType.length - 1];\n\n Object.keys(objToUpdate).forEach((actionId) => {\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n if (userPermissions !== undefined && propertyName === 'fields') {\n const hasPermission = userPermissions.some((perm) => {\n if (perm.action !== actionId || perm.subject !== subject) return false;\n\n const fields = perm.properties?.fields;\n if (fields === null || fields === undefined) return true;\n if (Array.isArray(fields) && fields.length === 0) return false;\n\n return (\n Array.isArray(fields) &&\n fields.some((f) => rowName === f || rowName.startsWith(`${f}.`))\n );\n });\n\n if (hasPermission === true) {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n const permissionChecker =\n userPermissions !== undefined && propertyName === 'fields'\n ? (path: string[]) => {\n const fullFieldPath = [rowName, ...path].join('.');\n const checker = createFieldPermissionChecker(\n actionId,\n subject,\n userPermissions\n );\n return checker === undefined\n ? true\n : checker(['properties', 'fields', fullFieldPath]);\n }\n : undefined;\n\n const updatedValue = updateValuesWithPermissions(objValue, value, permissionChecker);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n }\n });\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n // In App Token context, conditions are inherited from the user's permissions and must be read-only.\n if (action.userPermissions !== undefined) {\n break;\n }\n\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n const keysArray = action.keys.split('..');\n set(nextModifiedDataState, [...keysArray], action.value);\n\n // In App Token context, when enabling a permission, inherit the user's conditions.\n if (action.value === true && action.userPermissions !== undefined) {\n const propertiesIndex = keysArray.indexOf('properties');\n\n if (propertiesIndex > 0) {\n const actionId = keysArray[propertiesIndex - 1];\n const root = keysArray[0];\n\n if ((root === 'collectionTypes' || root === 'singleTypes') && keysArray.length >= 3) {\n const subject = keysArray[1];\n inheritConditionsAtPath(\n nextModifiedDataState,\n [root, subject, actionId],\n actionId,\n subject,\n action.userPermissions\n );\n } else {\n const pathToActionObject = keysArray.slice(0, propertiesIndex);\n inheritConditionsAtPath(\n nextModifiedDataState,\n pathToActionObject,\n actionId,\n null,\n action.userPermissions\n );\n }\n }\n }\n\n if (action.value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value, userPermissions } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n let actionId: string | undefined;\n let subject: string | undefined;\n\n if (pathToValue.length >= 2) {\n subject = pathToValue[1];\n }\n\n if (pathToValue.length >= 3) {\n actionId = pathToValue[2];\n }\n\n const permissionChecker = createDynamicActionPermissionChecker(\n subject,\n actionId,\n userPermissions\n );\n\n const updatedValues = updateValuesWithPermissions(oldValues, value, permissionChecker);\n\n // In App Token context, when enabling, inherit conditions from the user's permissions.\n if (value === true && userPermissions !== undefined) {\n const root = pathToValue[0];\n const subjectForLookup =\n root === 'collectionTypes' || root === 'singleTypes' ? (subject ?? null) : null;\n\n if (actionId !== undefined && subjectForLookup !== null) {\n inheritConditionsAtPath(updatedValues, [], actionId, subjectForLookup, userPermissions);\n } else if (isObject(updatedValues)) {\n const updatedValuesObj = updatedValues as Record<string, unknown>;\n\n Object.keys(updatedValuesObj).forEach((key) => {\n const maybeActionObj = updatedValuesObj[key];\n if (isObject(maybeActionObj)) {\n inheritConditionsAtPath(maybeActionObj, [], key, subjectForLookup, userPermissions);\n }\n });\n }\n }\n\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","userPermissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","useCallback","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","buildInheritedConditionsFromExisting","existing","enabledConditions","isObject","undefined","enabled","Set","reduce","acc","key","inheritConditionsAtPath","data","pathToActionObject","subject","matchingPermission","find","perm","action","obj","existingConditions","get","nextConditions","set","state","produce","draftState","pathToData","forEach","collectionType","collectionTypeActionData","subjectPermissionChecker","createFieldPermissionChecker","updatedValues","updateValuesWithPermissions","updatedConditions","updateValues","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","length","objValue","pathToDataToSet","hasPermission","fields","properties","Array","isArray","f","startsWith","permissionChecker","path","fullFieldPath","join","checker","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","keysArray","propertiesIndex","indexOf","root","slice","pathToValue","oldValues","createDynamicActionPermissionChecker","subjectForLookup","updatedValuesObj","maybeActionObj","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
1
+ {"version":3,"file":"Permissions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport {\n createFieldPermissionChecker,\n createDynamicActionPermissionChecker,\n} from '../utils/createPermissionChecker';\nimport { difference } from '../utils/difference';\nimport { ConditionForm, Form, createDefaultCTForm, createDefaultForm } from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues, updateValuesWithPermissions } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n userPermissions?: AuthPermission[];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n ({ layout, isFormDisabled, permissions = [], userPermissions }, api) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsForAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = React.useCallback(\n (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeCollectionTypeGlobalActionCheckbox = React.useCallback(\n (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeConditions = React.useCallback(\n (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions, userPermissions });\n },\n [userPermissions]\n );\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\nconst buildInheritedConditionsFromExisting = (\n existing: unknown,\n enabledConditions: string[] = []\n): Record<string, boolean> | undefined => {\n if (!isObject(existing)) {\n return undefined;\n }\n\n const enabled = new Set(enabledConditions);\n\n return Object.keys(existing).reduce<Record<string, boolean>>((acc, key) => {\n acc[key] = enabled.has(key);\n\n return acc;\n }, {});\n};\n\nconst inheritConditionsAtPath = (\n data: unknown,\n pathToActionObject: string[],\n actionId: string,\n subject: string | null,\n userPermissions: AuthPermission[] | undefined\n) => {\n if (userPermissions === undefined) {\n return;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === actionId && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return;\n }\n\n const obj = data as Record<string, unknown>;\n const existingConditions = get(obj, [...pathToActionObject, 'conditions'], undefined);\n const nextConditions = buildInheritedConditionsFromExisting(\n existingConditions,\n matchingPermission.conditions ?? []\n );\n\n if (nextConditions) {\n set(obj, [...pathToActionObject, 'conditions'], nextConditions);\n }\n};\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value, userPermissions } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n const subjectPermissionChecker = createFieldPermissionChecker(\n actionId,\n collectionType,\n userPermissions\n );\n\n let updatedValues = updateValuesWithPermissions(\n collectionTypeActionData,\n value,\n subjectPermissionChecker\n );\n\n if (value === true) {\n inheritConditionsAtPath(updatedValues, [], actionId, collectionType, userPermissions);\n }\n\n if (value === false && updatedValues.conditions !== undefined) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value, userPermissions } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n const subject =\n pathToModifiedDataCollectionType[pathToModifiedDataCollectionType.length - 1];\n\n Object.keys(objToUpdate).forEach((actionId) => {\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n if (userPermissions !== undefined && propertyName === 'fields') {\n const hasPermission = userPermissions.some((perm) => {\n if (perm.action !== actionId || perm.subject !== subject) return false;\n\n const fields = perm.properties?.fields;\n if (fields === null || fields === undefined) return true;\n if (Array.isArray(fields) && fields.length === 0) return false;\n\n return (\n Array.isArray(fields) &&\n fields.some((f) => rowName === f || rowName.startsWith(`${f}.`))\n );\n });\n\n if (hasPermission === true) {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n const permissionChecker =\n userPermissions !== undefined && propertyName === 'fields'\n ? (path: string[]) => {\n const fullFieldPath = [rowName, ...path].join('.');\n const checker = createFieldPermissionChecker(\n actionId,\n subject,\n userPermissions\n );\n return checker === undefined\n ? true\n : checker(['properties', 'fields', fullFieldPath]);\n }\n : undefined;\n\n const updatedValue = updateValuesWithPermissions(objValue, value, permissionChecker);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n }\n });\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n // In App Token context, conditions are inherited from the user's permissions and must be read-only.\n if (action.userPermissions !== undefined) {\n break;\n }\n\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n const keysArray = action.keys.split('..');\n set(nextModifiedDataState, [...keysArray], action.value);\n\n // In App Token context, when enabling a permission, inherit the user's conditions.\n if (action.value === true && action.userPermissions !== undefined) {\n const propertiesIndex = keysArray.indexOf('properties');\n\n if (propertiesIndex > 0) {\n const actionId = keysArray[propertiesIndex - 1];\n const root = keysArray[0];\n\n if ((root === 'collectionTypes' || root === 'singleTypes') && keysArray.length >= 3) {\n const subject = keysArray[1];\n inheritConditionsAtPath(\n nextModifiedDataState,\n [root, subject, actionId],\n actionId,\n subject,\n action.userPermissions\n );\n } else {\n const pathToActionObject = keysArray.slice(0, propertiesIndex);\n inheritConditionsAtPath(\n nextModifiedDataState,\n pathToActionObject,\n actionId,\n null,\n action.userPermissions\n );\n }\n }\n }\n\n if (action.value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value, userPermissions } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n let actionId: string | undefined;\n let subject: string | undefined;\n\n if (pathToValue.length >= 2) {\n subject = pathToValue[1];\n }\n\n if (pathToValue.length >= 3) {\n actionId = pathToValue[2];\n }\n\n const permissionChecker = createDynamicActionPermissionChecker(\n subject,\n actionId,\n userPermissions\n );\n\n const updatedValues = updateValuesWithPermissions(oldValues, value, permissionChecker);\n\n // In App Token context, when enabling, inherit conditions from the user's permissions.\n if (value === true && userPermissions !== undefined) {\n const root = pathToValue[0];\n const subjectForLookup =\n root === 'collectionTypes' || root === 'singleTypes' ? (subject ?? null) : null;\n\n if (actionId !== undefined && subjectForLookup !== null) {\n inheritConditionsAtPath(updatedValues, [], actionId, subjectForLookup, userPermissions);\n } else if (isObject(updatedValues)) {\n const updatedValuesObj = updatedValues as Record<string, unknown>;\n\n Object.keys(updatedValuesObj).forEach((key) => {\n const maybeActionObj = updatedValuesObj[key];\n if (isObject(maybeActionObj)) {\n inheritConditionsAtPath(maybeActionObj, [], key, subjectForLookup, userPermissions);\n }\n });\n }\n }\n\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","permissions","userPermissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","useCallback","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","map","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","buildInheritedConditionsFromExisting","existing","enabledConditions","isObject","undefined","enabled","Set","reduce","acc","key","inheritConditionsAtPath","data","pathToActionObject","subject","matchingPermission","find","perm","action","obj","existingConditions","get","nextConditions","set","state","produce","draftState","pathToData","forEach","collectionType","collectionTypeActionData","subjectPermissionChecker","createFieldPermissionChecker","updatedValues","updateValuesWithPermissions","updatedConditions","updateValues","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","length","objValue","pathToDataToSet","hasPermission","fields","properties","Array","isArray","f","startsWith","permissionChecker","path","fullFieldPath","join","checker","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","keysArray","propertiesIndex","indexOf","root","slice","pathToValue","oldValues","createDynamicActionPermissionChecker","subjectForLookup","updatedValuesObj","maybeActionObj","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
@@ -14,7 +14,10 @@ var removeConditionKeyFromData = require('../utils/removeConditionKeyFromData.js
14
14
  var ConditionsButton = require('./ConditionsButton.js');
15
15
  var ConditionsModal = require('./ConditionsModal.js');
16
16
 
17
- function _interopNamespaceDefault(e) {
17
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
+
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
18
21
  var n = Object.create(null);
19
22
  if (e) {
20
23
  Object.keys(e).forEach(function (k) {
@@ -31,7 +34,8 @@ function _interopNamespaceDefault(e) {
31
34
  return Object.freeze(n);
32
35
  }
33
36
 
34
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
37
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
38
+ var get__default = /*#__PURE__*/_interopDefault(get);
35
39
 
36
40
  const PluginsAndSettingsPermissions = ({ layout, ...restProps })=>{
37
41
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
@@ -96,7 +100,7 @@ const SubCategory = ({ actions = [], categoryName, isFormDisabled, subCategoryNa
96
100
  const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox, checkUserHasPermission, userPermissions } = usePermissionsDataManager.usePermissionsDataManager();
97
101
  const [isConditionModalOpen, setIsConditionModalOpen] = React__namespace.useState(false);
98
102
  const { formatMessage } = reactIntl.useIntl();
99
- const mainData = get(modifiedData, pathToData, {});
103
+ const mainData = get__default.default(modifiedData, pathToData, {});
100
104
  const dataWithoutCondition = React__namespace.useMemo(()=>{
101
105
  return Object.keys(mainData).reduce((acc, current)=>{
102
106
  acc[current] = removeConditionKeyFromData.removeConditionKeyFromData(mainData[current]);
@@ -115,8 +119,8 @@ const SubCategory = ({ actions = [], categoryName, isFormDisabled, subCategoryNa
115
119
  'properties',
116
120
  'enabled'
117
121
  ];
118
- const checkboxValue = get(modifiedData, checkboxName, false);
119
- const conditionValue = get(modifiedData, [
122
+ const checkboxValue = get__default.default(modifiedData, checkboxName, false);
123
+ const conditionValue = get__default.default(modifiedData, [
120
124
  ...pathToData,
121
125
  action.action,
122
126
  'conditions'
@@ -142,7 +146,7 @@ const SubCategory = ({ actions = [], categoryName, isFormDisabled, subCategoryNa
142
146
  modifiedData,
143
147
  pathToData
144
148
  ]);
145
- const datum = get(modifiedData, [
149
+ const datum = get__default.default(modifiedData, [
146
150
  ...pathToData
147
151
  ], {});
148
152
  const doesButtonHasCondition = createArrayOfValues.createArrayOfValues(Object.entries(datum).reduce((acc, current)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n const userHasPermission = checkUserHasPermission(action, null);\n\n return (\n <Grid.Item col={4} m={6} xs={12} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper\n $disabled={isFormDisabled || !userHasPermission}\n $hasConditions={hasConditions}\n >\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled || !userHasPermission}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","userHasPermission","col","m","xs","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","undefined","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
1
+ {"version":3,"file":"PluginsAndSettings.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Accordion,\n Box,\n BoxComponent,\n Checkbox,\n Flex,\n Grid,\n Modal,\n Typography,\n} from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n SettingPermission,\n PluginPermission,\n} from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ChildrenForm, ConditionForm } from '../utils/forms';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\n\nimport type { GenericLayout } from '../utils/layouts';\n\n/* -------------------------------------------------------------------------------------------------\n * PluginsAndSettingsPermissions\n * -----------------------------------------------------------------------------------------------*/\n\ntype Layout = GenericLayout<SettingPermission | PluginPermission>[];\n\ninterface PluginsAndSettingsPermissionsProps extends Pick<RowProps, 'kind' | 'isFormDisabled'> {\n layout: Layout;\n}\n\nconst PluginsAndSettingsPermissions = ({\n layout,\n ...restProps\n}: PluginsAndSettingsPermissionsProps) => {\n return (\n <Box padding={6} background=\"neutral0\">\n <Accordion.Root size=\"M\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <Row\n key={category}\n childrenForm={childrenForm}\n variant={index % 2 === 1 ? 'primary' : 'secondary'}\n name={category}\n pathToData={[restProps.kind, categoryId]}\n {...restProps}\n />\n );\n })}\n </Accordion.Root>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RowProps\n extends Pick<Layout[number], 'childrenForm'>,\n Pick<Accordion.HeaderProps, 'variant'> {\n kind: Exclude<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n name: string;\n isFormDisabled?: boolean;\n pathToData: string[];\n}\n\nconst Row = ({\n childrenForm,\n kind,\n name,\n isFormDisabled = false,\n variant,\n pathToData,\n}: RowProps) => {\n const { formatMessage } = useIntl();\n\n const categoryName = name.split('::').pop() ?? '';\n const categoryDisplayName =\n categoryName === 'upload' ? 'Media Library' : capitalise(categoryName.replace(/-/g, ' '));\n\n return (\n <Accordion.Item value={name}>\n <Accordion.Header variant={variant}>\n <Accordion.Trigger\n caretPosition=\"right\"\n description={`${formatMessage(\n { id: 'Settings.permissions.category', defaultMessage: categoryName },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n >\n {categoryDisplayName}\n </Accordion.Trigger>\n </Accordion.Header>\n <Accordion.Content>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </Accordion.Content>\n </Accordion.Item>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubCategory\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SubCategoryProps {\n actions?: Array<SettingPermission | PluginPermission>;\n categoryName: string;\n isFormDisabled?: boolean;\n subCategoryName: string;\n pathToData: string[];\n}\n\nconst SubCategory = ({\n actions = [],\n categoryName,\n isFormDisabled,\n subCategoryName,\n pathToData,\n}: SubCategoryProps) => {\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<RecursiveRecordOfBooleans>((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current])!;\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = React.useMemo(() => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n }, [actions, modifiedData, pathToData]);\n\n const datum: ChildrenForm = get(modifiedData, [...pathToData], {});\n\n const doesButtonHasCondition = createArrayOfValues(\n Object.entries(datum).reduce<Record<string, ConditionForm>>((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {})\n ).some((val) => val);\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border flex={1} />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid.Root gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n const userHasPermission = checkUserHasPermission(action, null);\n\n return (\n <Grid.Item col={4} m={6} xs={12} key={action} direction=\"column\" alignItems=\"start\">\n <CheckboxWrapper\n $disabled={isFormDisabled || !userHasPermission}\n $hasConditions={hasConditions}\n >\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled || !userHasPermission}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onCheckedChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </Grid.Item>\n );\n })}\n </Grid.Root>\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesButtonHasCondition} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Flex>\n </Box>\n </>\n );\n};\n\nconst Border = styled<BoxComponent>(Box)`\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div<{ $hasConditions?: boolean; $disabled?: boolean }>`\n position: relative;\n word-break: keep-all;\n ${({ $hasConditions, $disabled, theme }) =>\n $hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -0.4rem;\n left: -0.8rem;\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 2rem;\n background: ${$disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nexport { PluginsAndSettingsPermissions };\n"],"names":["PluginsAndSettingsPermissions","layout","restProps","_jsx","Box","padding","background","Accordion","Root","size","map","category","categoryId","childrenForm","index","Row","variant","name","pathToData","kind","isFormDisabled","formatMessage","useIntl","categoryName","split","pop","categoryDisplayName","capitalise","replace","_jsxs","Item","value","Header","Trigger","caretPosition","description","id","defaultMessage","Content","actions","subCategoryName","subCategoryId","SubCategory","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","React","useState","mainData","get","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","removeConditionKeyFromData","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","formattedActions","action","checkboxName","checkboxValue","conditionValue","hasConditions","createArrayOfValues","some","val","isDisplayed","join","label","displayName","actionId","pathToConditionsObject","datum","doesButtonHasCondition","entries","catName","conditions","_Fragment","Flex","justifyContent","alignItems","paddingRight","Typography","textColor","Border","flex","paddingLeft","Checkbox","disabled","onCheckedChange","target","checked","paddingTop","paddingBottom","Grid","gap","style","userHasPermission","col","m","xs","direction","CheckboxWrapper","$disabled","$hasConditions","Modal","open","onOpenChange","prev","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","undefined","onClose","styled","theme","colors","neutral150","div","neutral100","primary600"],"mappings":"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"}
@@ -4,7 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var reactContext = require('@radix-ui/react-context');
6
6
 
7
- function _interopNamespaceDefault(e) {
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
8
9
  var n = Object.create(null);
9
10
  if (e) {
10
11
  Object.keys(e).forEach(function (k) {
@@ -21,7 +22,7 @@ function _interopNamespaceDefault(e) {
21
22
  return Object.freeze(n);
22
23
  }
23
24
 
24
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
25
26
 
26
27
  // eslint-disable-next-line check-file/filename-naming-convention
27
28
  const [PermissionsDataManagerProviderRaw, usePermissionsDataManagerContext] = reactContext.createContext('PermissionsDataManager');
@@ -1 +1 @@
1
- {"version":3,"file":"usePermissionsDataManager.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.tsx"],"sourcesContent":["// eslint-disable-next-line check-file/filename-naming-convention\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { Condition } from '../../../../../../../shared/contracts/permissions';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\n\nimport type {\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n State,\n} from '../components/Permissions';\n\n// Note: I had to guess most of these types based on the name and usage, but I actually don't\n// know if they are correct, because the usage is very generic. Feel free to correct them if\n// they create problems.\nexport interface PermissionsDataManagerContextValue extends Pick<State, 'modifiedData'> {\n availableConditions: Condition[];\n onChangeCollectionTypeLeftActionRowCheckbox: (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => void;\n onChangeConditions: (conditions: OnChangeConditionsAction['conditions']) => void;\n onChangeSimpleCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeParentCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeCollectionTypeGlobalActionCheckbox: (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => void;\n userPermissions?: AuthPermission[];\n checkUserHasPermission: (action: string, subject?: string | null, field?: string) => boolean;\n}\n\nconst [PermissionsDataManagerProviderRaw, usePermissionsDataManagerContext] =\n createContext<PermissionsDataManagerContextValue>('PermissionsDataManager');\n\nexport const usePermissionsDataManager = () =>\n usePermissionsDataManagerContext('usePermissionsDataManager');\n\ninterface PermissionsDataManagerProviderProps\n extends Omit<PermissionsDataManagerContextValue, 'checkUserHasPermission'> {\n children: React.ReactNode;\n}\n\nconst PermissionsDataManagerProvider = ({\n children,\n userPermissions,\n availableConditions,\n modifiedData,\n onChangeConditions,\n onChangeSimpleCheckbox,\n onChangeParentCheckbox,\n onChangeCollectionTypeLeftActionRowCheckbox,\n onChangeCollectionTypeGlobalActionCheckbox,\n}: PermissionsDataManagerProviderProps) => {\n const checkUserHasPermission = React.useCallback(\n (action: string, subject?: string | null, field?: string): boolean => {\n if (userPermissions === undefined) {\n return true;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === action && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return false;\n }\n\n if (field === undefined) {\n return true;\n }\n\n const fields = matchingPermission.properties?.fields;\n\n if (fields === null || fields === undefined) {\n return true;\n }\n\n if (Array.isArray(fields) === false || fields.length === 0) {\n return false;\n }\n\n return fields.some(\n (allowedField) => allowedField === field || field.startsWith(`${allowedField}.`)\n );\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProviderRaw\n availableConditions={availableConditions}\n modifiedData={modifiedData}\n onChangeConditions={onChangeConditions}\n onChangeSimpleCheckbox={onChangeSimpleCheckbox}\n onChangeParentCheckbox={onChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={onChangeCollectionTypeLeftActionRowCheckbox}\n onChangeCollectionTypeGlobalActionCheckbox={onChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n checkUserHasPermission={checkUserHasPermission}\n >\n {children}\n </PermissionsDataManagerProviderRaw>\n );\n};\n\nexport { PermissionsDataManagerProvider };\n"],"names":["PermissionsDataManagerProviderRaw","usePermissionsDataManagerContext","createContext","usePermissionsDataManager","PermissionsDataManagerProvider","children","userPermissions","availableConditions","modifiedData","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","checkUserHasPermission","React","useCallback","action","subject","field","undefined","matchingPermission","find","perm","fields","properties","Array","isArray","length","some","allowedField","startsWith","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAsCA,MAAM,CAACA,iCAAAA,EAAmCC,gCAAAA,CAAiC,GACzEC,0BAAAA,CAAkD,wBAAA,CAAA;AAE7C,MAAMC,yBAAAA,GAA4B,IACvCF,gCAAAA,CAAiC,2BAAA;AAOnC,MAAMG,8BAAAA,GAAiC,CAAC,EACtCC,QAAQ,EACRC,eAAe,EACfC,mBAAmB,EACnBC,YAAY,EACZC,kBAAkB,EAClBC,sBAAsB,EACtBC,sBAAsB,EACtBC,2CAA2C,EAC3CC,0CAA0C,EACN,GAAA;AACpC,IAAA,MAAMC,yBAAyBC,gBAAAA,CAAMC,WAAW,CAC9C,CAACC,QAAgBC,OAAAA,EAAyBC,KAAAA,GAAAA;AACxC,QAAA,IAAIb,oBAAoBc,SAAAA,EAAW;YACjC,OAAO,IAAA;AACT,QAAA;AAEA,QAAA,MAAMC,kBAAAA,GAAqBf,eAAAA,CAAgBgB,IAAI,CAC7C,CAACC,IAAAA,GAASA,IAAAA,CAAKN,MAAM,KAAKA,MAAAA,IAAUM,IAAAA,CAAKL,OAAO,KAAKA,OAAAA,CAAAA;AAGvD,QAAA,IAAIG,uBAAuBD,SAAAA,EAAW;YACpC,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAID,UAAUC,SAAAA,EAAW;YACvB,OAAO,IAAA;AACT,QAAA;QAEA,MAAMI,MAAAA,GAASH,kBAAAA,CAAmBI,UAAU,EAAED,MAAAA;QAE9C,IAAIA,MAAAA,KAAW,IAAA,IAAQA,MAAAA,KAAWJ,SAAAA,EAAW;YAC3C,OAAO,IAAA;AACT,QAAA;QAEA,IAAIM,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,KAAY,SAASA,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;YAC1D,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOJ,MAAAA,CAAOK,IAAI,CAChB,CAACC,YAAAA,GAAiBA,YAAAA,KAAiBX,KAAAA,IAASA,KAAAA,CAAMY,UAAU,CAAC,CAAA,EAAGD,YAAAA,CAAa,CAAC,CAAC,CAAA,CAAA;IAEnF,CAAA,EACA;AAACxB,QAAAA;AAAgB,KAAA,CAAA;AAGnB,IAAA,qBACE0B,cAAA,CAAChC,iCAAAA,EAAAA;QACCO,mBAAAA,EAAqBA,mBAAAA;QACrBC,YAAAA,EAAcA,YAAAA;QACdC,kBAAAA,EAAoBA,kBAAAA;QACpBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,2CAAAA,EAA6CA,2CAAAA;QAC7CC,0CAAAA,EAA4CA,0CAAAA;QAC5CP,eAAAA,EAAiBA,eAAAA;QACjBQ,sBAAAA,EAAwBA,sBAAAA;AAEvBT,QAAAA,QAAAA,EAAAA;;AAGP;;;;;"}
1
+ {"version":3,"file":"usePermissionsDataManager.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.tsx"],"sourcesContent":["// eslint-disable-next-line check-file/filename-naming-convention\nimport * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\n\nimport { Condition } from '../../../../../../../shared/contracts/permissions';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\n\nimport type {\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n State,\n} from '../components/Permissions';\n\n// Note: I had to guess most of these types based on the name and usage, but I actually don't\n// know if they are correct, because the usage is very generic. Feel free to correct them if\n// they create problems.\nexport interface PermissionsDataManagerContextValue extends Pick<State, 'modifiedData'> {\n availableConditions: Condition[];\n onChangeCollectionTypeLeftActionRowCheckbox: (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => void;\n onChangeConditions: (conditions: OnChangeConditionsAction['conditions']) => void;\n onChangeSimpleCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeParentCheckbox: (event: { target: { name: string; value: boolean } }) => void;\n onChangeCollectionTypeGlobalActionCheckbox: (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => void;\n userPermissions?: AuthPermission[];\n checkUserHasPermission: (action: string, subject?: string | null, field?: string) => boolean;\n}\n\nconst [PermissionsDataManagerProviderRaw, usePermissionsDataManagerContext] =\n createContext<PermissionsDataManagerContextValue>('PermissionsDataManager');\n\nexport const usePermissionsDataManager = () =>\n usePermissionsDataManagerContext('usePermissionsDataManager');\n\ninterface PermissionsDataManagerProviderProps\n extends Omit<PermissionsDataManagerContextValue, 'checkUserHasPermission'> {\n children: React.ReactNode;\n}\n\nconst PermissionsDataManagerProvider = ({\n children,\n userPermissions,\n availableConditions,\n modifiedData,\n onChangeConditions,\n onChangeSimpleCheckbox,\n onChangeParentCheckbox,\n onChangeCollectionTypeLeftActionRowCheckbox,\n onChangeCollectionTypeGlobalActionCheckbox,\n}: PermissionsDataManagerProviderProps) => {\n const checkUserHasPermission = React.useCallback(\n (action: string, subject?: string | null, field?: string): boolean => {\n if (userPermissions === undefined) {\n return true;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === action && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return false;\n }\n\n if (field === undefined) {\n return true;\n }\n\n const fields = matchingPermission.properties?.fields;\n\n if (fields === null || fields === undefined) {\n return true;\n }\n\n if (Array.isArray(fields) === false || fields.length === 0) {\n return false;\n }\n\n return fields.some(\n (allowedField) => allowedField === field || field.startsWith(`${allowedField}.`)\n );\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProviderRaw\n availableConditions={availableConditions}\n modifiedData={modifiedData}\n onChangeConditions={onChangeConditions}\n onChangeSimpleCheckbox={onChangeSimpleCheckbox}\n onChangeParentCheckbox={onChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={onChangeCollectionTypeLeftActionRowCheckbox}\n onChangeCollectionTypeGlobalActionCheckbox={onChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n checkUserHasPermission={checkUserHasPermission}\n >\n {children}\n </PermissionsDataManagerProviderRaw>\n );\n};\n\nexport { PermissionsDataManagerProvider };\n"],"names":["PermissionsDataManagerProviderRaw","usePermissionsDataManagerContext","createContext","usePermissionsDataManager","PermissionsDataManagerProvider","children","userPermissions","availableConditions","modifiedData","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","checkUserHasPermission","React","useCallback","action","subject","field","undefined","matchingPermission","find","perm","fields","properties","Array","isArray","length","some","allowedField","startsWith","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAsCA,MAAM,CAACA,iCAAAA,EAAmCC,gCAAAA,CAAiC,GACzEC,0BAAAA,CAAkD,wBAAA,CAAA;AAE7C,MAAMC,yBAAAA,GAA4B,IACvCF,gCAAAA,CAAiC,2BAAA;AAOnC,MAAMG,8BAAAA,GAAiC,CAAC,EACtCC,QAAQ,EACRC,eAAe,EACfC,mBAAmB,EACnBC,YAAY,EACZC,kBAAkB,EAClBC,sBAAsB,EACtBC,sBAAsB,EACtBC,2CAA2C,EAC3CC,0CAA0C,EACN,GAAA;AACpC,IAAA,MAAMC,yBAAyBC,gBAAAA,CAAMC,WAAW,CAC9C,CAACC,QAAgBC,OAAAA,EAAyBC,KAAAA,GAAAA;AACxC,QAAA,IAAIb,oBAAoBc,SAAAA,EAAW;YACjC,OAAO,IAAA;AACT,QAAA;AAEA,QAAA,MAAMC,kBAAAA,GAAqBf,eAAAA,CAAgBgB,IAAI,CAC7C,CAACC,IAAAA,GAASA,IAAAA,CAAKN,MAAM,KAAKA,MAAAA,IAAUM,IAAAA,CAAKL,OAAO,KAAKA,OAAAA,CAAAA;AAGvD,QAAA,IAAIG,uBAAuBD,SAAAA,EAAW;YACpC,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAID,UAAUC,SAAAA,EAAW;YACvB,OAAO,IAAA;AACT,QAAA;QAEA,MAAMI,MAAAA,GAASH,kBAAAA,CAAmBI,UAAU,EAAED,MAAAA;QAE9C,IAAIA,MAAAA,KAAW,IAAA,IAAQA,MAAAA,KAAWJ,SAAAA,EAAW;YAC3C,OAAO,IAAA;AACT,QAAA;QAEA,IAAIM,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,KAAY,SAASA,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;YAC1D,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOJ,MAAAA,CAAOK,IAAI,CAChB,CAACC,YAAAA,GAAiBA,YAAAA,KAAiBX,KAAAA,IAASA,KAAAA,CAAMY,UAAU,CAAC,CAAA,EAAGD,YAAAA,CAAa,CAAC,CAAC,CAAA,CAAA;IAEnF,CAAA,EACA;AAACxB,QAAAA;AAAgB,KAAA,CAAA;AAGnB,IAAA,qBACE0B,cAAA,CAAChC,iCAAAA,EAAAA;QACCO,mBAAAA,EAAqBA,mBAAAA;QACrBC,YAAAA,EAAcA,YAAAA;QACdC,kBAAAA,EAAoBA,kBAAAA;QACpBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,sBAAAA,EAAwBA,sBAAAA;QACxBC,2CAAAA,EAA6CA,2CAAAA;QAC7CC,0CAAAA,EAA4CA,0CAAAA;QAC5CP,eAAAA,EAAiBA,eAAAA;QACjBQ,sBAAAA,EAAwBA,sBAAAA;AAEvBT,QAAAA,QAAAA,EAAAA;;AAGP;;;;;"}
@@ -4,12 +4,18 @@ var isEqual = require('lodash/isEqual');
4
4
  var isObject = require('lodash/isObject');
5
5
  var transform = require('lodash/transform');
6
6
 
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
10
+ var isObject__default = /*#__PURE__*/_interopDefault(isObject);
11
+ var transform__default = /*#__PURE__*/_interopDefault(transform);
12
+
7
13
  function difference(object, base) {
8
14
  function changes(object, base) {
9
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- return transform(object, (result, value, key)=>{
11
- if (!isEqual(value, base[key])) {
12
- result[key] = isObject(value) && isObject(base[key]) ? changes(value, base[key]) : value;
16
+ return transform__default.default(object, (result, value, key)=>{
17
+ if (!isEqual__default.default(value, base[key])) {
18
+ result[key] = isObject__default.default(value) && isObject__default.default(base[key]) ? changes(value, base[key]) : value;
13
19
  }
14
20
  return result;
15
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"difference.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/difference.ts"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isObject from 'lodash/isObject';\nimport transform from 'lodash/transform';\n\ntype ObjectDiff<T> = {\n [P in keyof T]?: T[P] extends Record<string, unknown> ? ObjectDiff<T[P]> : T[P];\n};\n\nfunction difference<T extends Record<string, unknown>>(object: T, base: T): ObjectDiff<T> {\n function changes(object: T, base: T): ObjectDiff<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return transform(object, (result, value: any, key: keyof ObjectDiff<T>) => {\n if (!isEqual(value, base[key])) {\n result[key] =\n isObject(value) && isObject(base[key]) ? changes(value as T, base[key] as T) : value;\n }\n return result;\n });\n }\n\n return changes(object, base);\n}\n\nexport { difference };\n"],"names":["difference","object","base","changes","transform","result","value","key","isEqual","isObject"],"mappings":";;;;;;AAQA,SAASA,UAAAA,CAA8CC,MAAS,EAAEC,IAAO,EAAA;IACvE,SAASC,OAAAA,CAAQF,MAAS,EAAEC,IAAO,EAAA;;AAEjC,QAAA,OAAOE,SAAAA,CAAUH,MAAAA,EAAQ,CAACI,MAAAA,EAAQC,KAAAA,EAAYC,GAAAA,GAAAA;AAC5C,YAAA,IAAI,CAACC,OAAAA,CAAQF,KAAAA,EAAOJ,IAAI,CAACK,IAAI,CAAA,EAAG;AAC9BF,gBAAAA,MAAM,CAACE,GAAAA,CAAI,GACTE,QAAAA,CAASH,UAAUG,QAAAA,CAASP,IAAI,CAACK,GAAAA,CAAI,IAAIJ,OAAAA,CAAQG,KAAAA,EAAYJ,IAAI,CAACK,IAAI,CAAA,GAASD,KAAAA;AACnF,YAAA;YACA,OAAOD,MAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,OAAOF,QAAQF,MAAAA,EAAQC,IAAAA,CAAAA;AACzB;;;;"}
1
+ {"version":3,"file":"difference.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/difference.ts"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isObject from 'lodash/isObject';\nimport transform from 'lodash/transform';\n\ntype ObjectDiff<T> = {\n [P in keyof T]?: T[P] extends Record<string, unknown> ? ObjectDiff<T[P]> : T[P];\n};\n\nfunction difference<T extends Record<string, unknown>>(object: T, base: T): ObjectDiff<T> {\n function changes(object: T, base: T): ObjectDiff<T> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return transform(object, (result, value: any, key: keyof ObjectDiff<T>) => {\n if (!isEqual(value, base[key])) {\n result[key] =\n isObject(value) && isObject(base[key]) ? changes(value as T, base[key] as T) : value;\n }\n return result;\n });\n }\n\n return changes(object, base);\n}\n\nexport { difference };\n"],"names":["difference","object","base","changes","transform","result","value","key","isEqual","isObject"],"mappings":";;;;;;;;;;;;AAQA,SAASA,UAAAA,CAA8CC,MAAS,EAAEC,IAAO,EAAA;IACvE,SAASC,OAAAA,CAAQF,MAAS,EAAEC,IAAO,EAAA;;AAEjC,QAAA,OAAOE,0BAAAA,CAAUH,MAAAA,EAAQ,CAACI,MAAAA,EAAQC,KAAAA,EAAYC,GAAAA,GAAAA;AAC5C,YAAA,IAAI,CAACC,wBAAAA,CAAQF,KAAAA,EAAOJ,IAAI,CAACK,IAAI,CAAA,EAAG;AAC9BF,gBAAAA,MAAM,CAACE,GAAAA,CAAI,GACTE,yBAAAA,CAASH,UAAUG,yBAAAA,CAASP,IAAI,CAACK,GAAAA,CAAI,IAAIJ,OAAAA,CAAQG,KAAAA,EAAYJ,IAAI,CAACK,IAAI,CAAA,GAASD,KAAAA;AACnF,YAAA;YACA,OAAOD,MAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA;AAEA,IAAA,OAAOF,QAAQF,MAAAA,EAAQC,IAAAA,CAAAA;AACzB;;;;"}
@@ -4,6 +4,11 @@ var isEmpty = require('lodash/isEmpty');
4
4
  var merge = require('lodash/merge');
5
5
  var permissions = require('./permissions.js');
6
6
 
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var isEmpty__default = /*#__PURE__*/_interopDefault(isEmpty);
10
+ var merge__default = /*#__PURE__*/_interopDefault(merge);
11
+
7
12
  /**
8
13
  * Creates the default condition form: { [conditionId]: false }
9
14
  */ const createDefaultConditionsForm = (conditions, initialConditions = [])=>conditions.reduce((acc, current)=>{
@@ -71,7 +76,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
71
76
  // This can happen when an action is not related to a content type
72
77
  // for instance the D&P permission is applied only with the cts that
73
78
  // have the D&P features enabled
74
- if (isEmpty(subjectLayouts)) {
79
+ if (isEmpty__default.default(subjectLayouts)) {
75
80
  return defaultForm;
76
81
  }
77
82
  // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }
@@ -85,7 +90,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
85
90
  if (!acc[currentCTUID]) {
86
91
  acc[currentCTUID] = {};
87
92
  }
88
- if (isEmpty(applyToProperties) || doesNothaveProperty) {
93
+ if (isEmpty__default.default(applyToProperties) || doesNothaveProperty) {
89
94
  acc[currentCTUID][actionId] = {
90
95
  properties: {
91
96
  enabled: matchingPermission !== undefined
@@ -101,7 +106,7 @@ const createDefaultForm = (layout, conditions, initialPermissions = [])=>{
101
106
  };
102
107
  return acc;
103
108
  }, {});
104
- return merge(defaultForm, contentTypesActions);
109
+ return merge__default.default(defaultForm, contentTypesActions);
105
110
  }, {});
106
111
  };
107
112
 
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":";;;;;;AAiBA;;IAGA,MAAMA,2BAAAA,GAA8B,CAClCC,UAAAA,EACAC,iBAAAA,GAA8C,EAAE,GAEhDD,UAAAA,CAAWE,MAAM,CAAgB,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;QACrCD,GAAG,CAACC,OAAAA,CAAQC,EAAE,CAAC,GAAGJ,iBAAAA,CAAkBK,OAAO,CAACF,OAAAA,CAAQC,EAAE,CAAA,KAAM,EAAC;QAE7D,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC;AAgBN,MAAMI,iBAAAA,GAAoB,CACxBC,MAAAA,EACAR,UAAAA,EACAS,qBAAmC,EAAE,GAAA;IAErC,OAAOD,MAAAA,CAAON,MAAM,CAAuB,CAACC,KAAK,EAAEO,UAAU,EAAEC,YAAY,EAAE,GAAA;AAC3E,QAAA,MAAMC,mBAAAA,GAAsBD,YAAAA,CAAaT,MAAM,CAAO,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;YAC1DD,GAAG,CAACC,OAAAA,CAAQS,aAAa,CAAC,GAAGT,OAAAA,CAAQU,OAAO,CAACZ,MAAM,CAAe,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;AACtE,gBAAA,MAAMW,uBAAAA,GAA0BC,kCAAAA,CAC9BP,kBAAAA,EACAL,OAAAA,CAAQa,MAAM,EACd,IAAA,CAAA;AAGFd,gBAAAA,GAAG,CAACC,OAAAA,CAAQa,MAAM,CAAC,GAAG;oBACpBC,UAAAA,EAAY;AACVC,wBAAAA,OAAAA,EAASJ,uBAAAA,KAA4BK;AACvC,qBAAA;AACApB,oBAAAA,UAAAA,EAAYD,2BAAAA,CACVC,UAAAA,EACAe,uBAAAA,EAAyBf,UAAAA,IAAc,EAAE;AAE7C,iBAAA;gBAEA,OAAOG,GAAAA;AACT,YAAA,CAAA,EAAG,EAAC,CAAA;YAEJ,OAAOA,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;QAEJA,GAAG,CAACO,WAAW,GAAGE,mBAAAA;QAElB,OAAOT,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAQA;;AAEC,IACD,MAAMkB,2BAAAA,GAA8B,CAClCH,UAAAA,EACAI,OAAAA,EACAC,kBAAAA,GAAAA;IAEA,MAAMC,6BAAAA,GAAgC,CACpC,EAAEC,QAAAA,GAAW,EAAE,EAAmB,EAClCC,cAAAA,EACAC,MAAAA,GAAS,EAAE,GAAA;AAEX,QAAA,OAAOF,QAAAA,CAASvB,MAAM,CAAoB,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;YAC9C,IAAIA,OAAAA,CAAQqB,QAAQ,EAAE;gBACpB,OAAO;AACL,oBAAA,GAAGtB,GAAG;AACN,oBAAA,CAACC,OAAAA,CAAQwB,KAAK,GAAGJ,6BAAAA,CACfpB,OAAAA,EACAsB,cAAAA,EACA,CAAA,EAAGC,MAAAA,CAAAA,EAASvB,OAAAA,CAAQwB,KAAK,CAAC,CAAC,CAAC;AAEhC,iBAAA;AACF,YAAA;YAEA,MAAMC,WAAAA,GAAcH,cAAAA,CAAepB,OAAO,CAAC,CAAA,EAAGqB,SAASvB,OAAAA,CAAQwB,KAAK,CAAA,CAAE,CAAA,KAAM,EAAC;AAE7EzB,YAAAA,GAAG,CAACC,OAAAA,CAAQwB,KAAK,CAAC,GAAGC,WAAAA;YAErB,OAAO1B,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AACN,IAAA,CAAA;AAEA,IAAA,OAAOe,UAAAA,CAAWhB,MAAM,CACtB,CAACC,GAAAA,EAAK2B,mBAAAA,GAAAA;QACJ,MAAMC,aAAAA,GAAgBT,OAAAA,CAAQJ,UAAU,CAACc,IAAI,CAAC,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,KAAUE,mBAAAA,CAAAA;AAEvE,QAAA,IAAIC,aAAAA,EAAe;YACjB,MAAME,gCAAAA,GACJV,oBAAoBL,UAAU,CAACa,cAAcH,KAAK,CAAC,IAAI,EAAE;YAE3D,MAAMM,YAAAA,GAAeV,8BACnBO,aAAAA,EACAE,gCAAAA,CAAAA;YAGF9B,GAAAA,CAAIe,UAAU,CAACY,mBAAAA,CAAoB,GAAGI,YAAAA;AACxC,QAAA;QAEA,OAAO/B,GAAAA;IACT,CAAA,EACA;AAAEe,QAAAA,UAAAA,EAAY;AAAG,KAAA,CAAA;AAErB,CAAA;AAEA;;AAEC,IACD,MAAMiB,mBAAAA,GAAsB,CAC1B,EAAEC,QAAQ,EAAEtB,OAAAA,GAAU,EAAE,EAAqB,EAC7Cd,UAAAA,EACAS,kBAAAA,GAAmC,EAAE,GAAA;AAErC,IAAA,OAAOK,OAAAA,CAAQZ,MAAM,CAAO,CAACmC,WAAAA,EAAapB,MAAAA,GAAAA;AAGxC,QAAA,MAAMqB,iBAAiBrB,MAAAA,CAAOmB,QAAQ,CAAClC,MAAM,CAAiB,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;YAClE,MAAMmC,WAAAA,GAAcH,QAAAA,CAASJ,IAAI,CAAC,CAAC,EAAEQ,GAAG,EAAE,GAAKA,GAAAA,KAAQpC,OAAAA,CAAAA,IAAY,IAAA;AAEnE,YAAA,IAAImC,WAAAA,EAAa;gBACfpC,GAAG,CAACC,QAAQ,GAAGmC,WAAAA;AACjB,YAAA;YAEA,OAAOpC,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;;;;AAKJ,QAAA,IAAIsC,QAAQH,cAAAA,CAAAA,EAAiB;YAC3B,OAAOD,WAAAA;AACT,QAAA;;QAGA,MAAMK,mBAAAA,GAAsBC,OAAOC,IAAI,CAACN,gBAAgBpC,MAAM,CAAO,CAACC,GAAAA,EAAK0C,YAAAA,GAAAA;AACzE,YAAA,MAAM,EAAEC,QAAQ,EAAEC,iBAAiB,EAAE,GAAG9B,MAAAA;YACxC,MAAM+B,oBAAAA,GAAuBV,cAAc,CAACO,YAAAA,CAAa;YACzD,MAAM3B,UAAAA,GAAa8B,oBAAAA,CAAqB9B,UAAU,CAAC+B,GAAG,CAAC,CAAC,EAAErB,KAAK,EAAE,GAAKA,KAAAA,CAAAA;AACtE,YAAA,MAAMsB,mBAAAA,GAAsBhC,UAAAA,CAAWiC,KAAK,CAC1C,CAACC,QAAAA,GAAcL,CAAAA,iBAAAA,IAAqB,EAAE,EAAEzC,OAAO,CAAC8C,cAAc,EAAC,CAAA;YAGjE,MAAM7B,kBAAAA,GAAqBP,kCAAAA,CAAuBP,kBAAAA,EAAoBqC,QAAAA,EAAUD,YAAAA,CAAAA;AAChF,YAAA,MAAMQ,cAAAA,GAAiBtD,2BAAAA,CACrBC,UAAAA,EACAuB,kBAAAA,EAAoBvB,cAAc,EAAE,CAAA;AAGtC,YAAA,IAAI,CAACG,GAAG,CAAC0C,YAAAA,CAAa,EAAE;gBACtB1C,GAAG,CAAC0C,YAAAA,CAAa,GAAG,EAAC;AACvB,YAAA;YAEA,IAAIJ,OAAAA,CAAQM,sBAAsBG,mBAAAA,EAAqB;AACrD/C,gBAAAA,GAAG,CAAC0C,YAAAA,CAAa,CAACC,QAAAA,CAAS,GAAG;oBAC5B5B,UAAAA,EAAY;AACVC,wBAAAA,OAAAA,EAASI,kBAAAA,KAAuBH;AAClC,qBAAA;oBACApB,UAAAA,EAAYqD;AACd,iBAAA;gBAEA,OAAOlD,GAAAA;AACT,YAAA;AAEA,YAAA,MAAMmD,iBAAiBjC,2BAAAA,CACrB0B,iBAAAA,EACAT,cAAc,CAACO,aAAa,EAC5BtB,kBAAAA,CAAAA;AAGFpB,YAAAA,GAAG,CAAC0C,YAAAA,CAAa,CAACC,QAAAA,CAAS,GAAG;AAAE,gBAAA,GAAGQ,cAAc;gBAAEtD,UAAAA,EAAYqD;AAAe,aAAA;YAE9E,OAAOlD,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AAEJ,QAAA,OAAOoD,MAAMlB,WAAAA,EAAaK,mBAAAA,CAAAA;AAC5B,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;;;;;;"}
1
+ {"version":3,"file":"forms.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/forms.ts"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\nimport { findMatchingPermission } from './permissions';\n\nimport type { GenericLayout } from './layouts';\nimport type {\n Condition,\n SettingPermission,\n ContentPermission,\n Subject,\n SubjectProperty,\n} from '../../../../../../../shared/contracts/permissions';\nimport type { Permission } from '../../../../../../../shared/contracts/shared';\n\ntype ConditionForm = Record<string, boolean>;\n\n/**\n * Creates the default condition form: { [conditionId]: false }\n */\nconst createDefaultConditionsForm = (\n conditions: Condition[],\n initialConditions: Permission['conditions'] = []\n): ConditionForm =>\n conditions.reduce<ConditionForm>((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\ninterface SubCategoryForm {\n properties: {\n enabled: boolean;\n };\n conditions: ConditionForm;\n}\n\ntype ChildrenForm = Record<\n string,\n SubCategoryForm | (Omit<SubCategoryForm, 'properties'> & PropertyForm)\n>;\n\ntype Form = Record<string, ChildrenForm>;\n\nconst createDefaultForm = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: GenericLayout<TLayout>[],\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return layout.reduce<Record<string, Form>>((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = childrenForm.reduce<Form>((acc, current) => {\n acc[current.subCategoryId] = current.actions.reduce<ChildrenForm>((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(\n initialPermissions,\n current.action,\n null\n );\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n\n return acc;\n }, {});\n\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\ninterface PropertyChildForm extends Record<string, boolean | PropertyChildForm> {}\n\ninterface PropertyForm {\n properties: PropertyChildForm;\n}\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n */\nconst createDefaultPropertiesForm = (\n properties: string[],\n subject: Subject,\n matchingPermission?: Permission\n): PropertyForm => {\n const recursivelyCreatePropertyForm = (\n { children = [] }: SubjectProperty,\n propertyValues: string[],\n prefix = ''\n ): PropertyChildForm => {\n return children.reduce<PropertyChildForm>((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: recursivelyCreatePropertyForm(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n };\n\n return properties.reduce<PropertyForm>(\n (acc, currentPropertyName) => {\n const foundProperty = subject.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues =\n matchingPermission?.properties[foundProperty.value] ?? [];\n\n const propertyForm = recursivelyCreatePropertyForm(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Creates the default for a content type\n */\nconst createDefaultCTForm = (\n { subjects, actions = [] }: ContentPermission,\n conditions: Condition[],\n initialPermissions: Permission[] = []\n) => {\n return actions.reduce<Form>((defaultForm, action) => {\n type SubjectLayouts = Record<string, Subject>;\n\n const subjectLayouts = action.subjects.reduce<SubjectLayouts>((acc, current) => {\n const foundLayout = subjects.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce<Form>((acc, currentCTUID) => {\n const { actionId, applyToProperties } = action;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditions,\n matchingPermission?.conditions ?? []\n );\n\n if (!acc[currentCTUID]) {\n acc[currentCTUID] = {};\n }\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n acc[currentCTUID][actionId] = {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n };\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n acc[currentCTUID][actionId] = { ...propertiesForm, conditions: conditionsForm };\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport { createDefaultConditionsForm, createDefaultForm, createDefaultCTForm };\nexport type { ConditionForm, Form, PropertyForm, SubCategoryForm, ChildrenForm, PropertyChildForm };\n"],"names":["createDefaultConditionsForm","conditions","initialConditions","reduce","acc","current","id","indexOf","createDefaultForm","layout","initialPermissions","categoryId","childrenForm","childrenDefaultForm","subCategoryId","actions","foundMatchingPermission","findMatchingPermission","action","properties","enabled","undefined","createDefaultPropertiesForm","subject","matchingPermission","recursivelyCreatePropertyForm","children","propertyValues","prefix","value","hasProperty","currentPropertyName","foundProperty","find","matchingPermissionPropertyValues","propertyForm","createDefaultCTForm","subjects","defaultForm","subjectLayouts","foundLayout","uid","isEmpty","contentTypesActions","Object","keys","currentCTUID","actionId","applyToProperties","currentSubjectLayout","map","doesNothaveProperty","every","property","conditionsForm","propertiesForm","merge"],"mappings":"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"}
@@ -2,11 +2,15 @@
2
2
 
3
3
  var groupBy = require('lodash/groupBy');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var groupBy__default = /*#__PURE__*/_interopDefault(groupBy);
8
+
5
9
  const formatLayout = (layout, groupByKey)=>{
6
- return Object.entries(groupBy(layout, groupByKey)).map(([itemName, item])=>({
10
+ return Object.entries(groupBy__default.default(layout, groupByKey)).map(([itemName, item])=>({
7
11
  category: itemName,
8
12
  categoryId: itemName.split(' ').join('-'),
9
- childrenForm: Object.entries(groupBy(item, 'subCategory')).map(([subCategoryName, actions])=>({
13
+ childrenForm: Object.entries(groupBy__default.default(item, 'subCategory')).map(([subCategoryName, actions])=>({
10
14
  subCategoryName,
11
15
  subCategoryId: subCategoryName.split(' ').join('-'),
12
16
  actions
@@ -1 +1 @@
1
- {"version":3,"file":"layouts.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/layouts.ts"],"sourcesContent":["import groupBy from 'lodash/groupBy';\n\nimport { SettingPermission } from '../../../../../../../shared/contracts/permissions';\n\ninterface GenericLayout<TLayout> {\n category: string;\n categoryId: string;\n childrenForm: Array<{\n subCategoryName: string;\n subCategoryId: string;\n actions: TLayout[];\n }>;\n}\n\nconst formatLayout = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: TLayout[],\n groupByKey: keyof TLayout\n): GenericLayout<TLayout>[] => {\n return Object.entries(groupBy(layout, groupByKey)).map(([itemName, item]) => ({\n category: itemName,\n categoryId: itemName.split(' ').join('-'),\n childrenForm: Object.entries(groupBy(item, 'subCategory')).map(\n ([subCategoryName, actions]) => ({\n subCategoryName,\n subCategoryId: subCategoryName.split(' ').join('-'),\n actions,\n })\n ),\n }));\n};\n\nexport { formatLayout };\nexport type { GenericLayout };\n"],"names":["formatLayout","layout","groupByKey","Object","entries","groupBy","map","itemName","item","category","categoryId","split","join","childrenForm","subCategoryName","actions","subCategoryId"],"mappings":";;;;AAcA,MAAMA,YAAAA,GAAe,CACnBC,MAAAA,EACAC,UAAAA,GAAAA;AAEA,IAAA,OAAOC,MAAAA,CAAOC,OAAO,CAACC,OAAAA,CAAQJ,MAAAA,EAAQC,UAAAA,CAAAA,CAAAA,CAAaI,GAAG,CAAC,CAAC,CAACC,QAAAA,EAAUC,IAAAA,CAAK,IAAM;YAC5EC,QAAAA,EAAUF,QAAAA;AACVG,YAAAA,UAAAA,EAAYH,QAAAA,CAASI,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AACrCC,YAAAA,YAAAA,EAAcV,MAAAA,CAAOC,OAAO,CAACC,OAAAA,CAAQG,IAAAA,EAAM,aAAA,CAAA,CAAA,CAAgBF,GAAG,CAC5D,CAAC,CAACQ,eAAAA,EAAiBC,OAAAA,CAAQ,IAAM;AAC/BD,oBAAAA,eAAAA;AACAE,oBAAAA,aAAAA,EAAeF,eAAAA,CAAgBH,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AAC/CG,oBAAAA;iBACF,CAAA;SAEJ,CAAA,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"layouts.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/utils/layouts.ts"],"sourcesContent":["import groupBy from 'lodash/groupBy';\n\nimport { SettingPermission } from '../../../../../../../shared/contracts/permissions';\n\ninterface GenericLayout<TLayout> {\n category: string;\n categoryId: string;\n childrenForm: Array<{\n subCategoryName: string;\n subCategoryId: string;\n actions: TLayout[];\n }>;\n}\n\nconst formatLayout = <TLayout extends Omit<SettingPermission, 'category'>>(\n layout: TLayout[],\n groupByKey: keyof TLayout\n): GenericLayout<TLayout>[] => {\n return Object.entries(groupBy(layout, groupByKey)).map(([itemName, item]) => ({\n category: itemName,\n categoryId: itemName.split(' ').join('-'),\n childrenForm: Object.entries(groupBy(item, 'subCategory')).map(\n ([subCategoryName, actions]) => ({\n subCategoryName,\n subCategoryId: subCategoryName.split(' ').join('-'),\n actions,\n })\n ),\n }));\n};\n\nexport { formatLayout };\nexport type { GenericLayout };\n"],"names":["formatLayout","layout","groupByKey","Object","entries","groupBy","map","itemName","item","category","categoryId","split","join","childrenForm","subCategoryName","actions","subCategoryId"],"mappings":";;;;;;;;AAcA,MAAMA,YAAAA,GAAe,CACnBC,MAAAA,EACAC,UAAAA,GAAAA;AAEA,IAAA,OAAOC,MAAAA,CAAOC,OAAO,CAACC,wBAAAA,CAAQJ,MAAAA,EAAQC,UAAAA,CAAAA,CAAAA,CAAaI,GAAG,CAAC,CAAC,CAACC,QAAAA,EAAUC,IAAAA,CAAK,IAAM;YAC5EC,QAAAA,EAAUF,QAAAA;AACVG,YAAAA,UAAAA,EAAYH,QAAAA,CAASI,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AACrCC,YAAAA,YAAAA,EAAcV,MAAAA,CAAOC,OAAO,CAACC,wBAAAA,CAAQG,IAAAA,EAAM,aAAA,CAAA,CAAA,CAAgBF,GAAG,CAC5D,CAAC,CAACQ,eAAAA,EAAiBC,OAAAA,CAAQ,IAAM;AAC/BD,oBAAAA,eAAAA;AACAE,oBAAAA,aAAAA,EAAeF,eAAAA,CAAgBH,KAAK,CAAC,GAAA,CAAA,CAAKC,IAAI,CAAC,GAAA,CAAA;AAC/CG,oBAAAA;iBACF,CAAA;SAEJ,CAAA,CAAA;AACF;;;;"}