@strapi/admin 5.57.0 → 5.59.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 (415) hide show
  1. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  2. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  3. package/dist/admin/admin/src/components/ConfirmDialog.js +10 -9
  4. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.mjs +10 -9
  6. package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
  7. package/dist/admin/admin/src/components/Filters.js +57 -12
  8. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  9. package/dist/admin/admin/src/components/Filters.mjs +57 -12
  10. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  11. package/dist/admin/admin/src/components/Form.js +3 -1
  12. package/dist/admin/admin/src/components/Form.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.mjs +3 -1
  14. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  16. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -1
  20. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -1
  22. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  23. package/dist/admin/admin/src/components/LeftMenu.js +5 -1
  24. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  25. package/dist/admin/admin/src/components/LeftMenu.mjs +5 -1
  26. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/PageHelpers.js +2 -1
  28. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  29. package/dist/admin/admin/src/components/PageHelpers.mjs +2 -1
  30. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/Pagination.js +7 -6
  32. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  33. package/dist/admin/admin/src/components/Pagination.mjs +7 -6
  34. package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/RelativeTime.js +2 -1
  36. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  37. package/dist/admin/admin/src/components/RelativeTime.mjs +2 -1
  38. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  39. package/dist/admin/admin/src/components/SubNav.js +6 -12
  40. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  41. package/dist/admin/admin/src/components/SubNav.mjs +7 -13
  42. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/Table.js +3 -1
  44. package/dist/admin/admin/src/components/Table.js.map +1 -1
  45. package/dist/admin/admin/src/components/Table.mjs +3 -1
  46. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  47. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  48. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  50. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  51. package/dist/admin/admin/src/constants.js +14 -0
  52. package/dist/admin/admin/src/constants.js.map +1 -1
  53. package/dist/admin/admin/src/constants.mjs +14 -0
  54. package/dist/admin/admin/src/constants.mjs.map +1 -1
  55. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  56. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  57. package/dist/admin/admin/src/features/Auth.js +2 -1
  58. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  59. package/dist/admin/admin/src/features/Auth.mjs +2 -1
  60. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  61. package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
  62. package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
  63. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  64. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
  66. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
  68. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  70. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  71. package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
  72. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  73. package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
  74. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
  76. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
  78. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js +4 -1
  80. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs +4 -1
  82. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -1
  84. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +3 -1
  86. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js +2 -1
  88. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs +2 -1
  90. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +6 -5
  92. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +6 -5
  94. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +2 -1
  96. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -1
  98. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js +4 -4
  100. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs +4 -4
  102. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +7 -58
  104. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  105. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +7 -58
  106. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  107. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
  108. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
  109. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
  110. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
  111. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  112. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
  113. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
  114. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
  115. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
  116. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
  117. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
  118. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
  119. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
  120. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
  121. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +9 -4
  122. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  123. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +9 -4
  124. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  125. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +15 -9
  126. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  127. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +15 -9
  128. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  129. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -2
  130. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  131. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +5 -2
  132. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  133. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +2 -1
  134. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  135. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +2 -1
  136. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  137. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +2 -1
  138. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  139. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +2 -1
  140. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  141. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +2 -1
  142. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  143. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +2 -1
  144. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  145. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  146. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  147. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +3 -1
  148. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  149. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +3 -1
  150. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  151. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  155. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
  157. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +4 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  159. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +4 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +18 -3
  162. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +18 -3
  164. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
  167. package/dist/admin/admin/src/router.js.map +1 -1
  168. package/dist/admin/admin/src/router.mjs.map +1 -1
  169. package/dist/admin/admin/src/services/admin.js +11 -1
  170. package/dist/admin/admin/src/services/admin.js.map +1 -1
  171. package/dist/admin/admin/src/services/admin.mjs +11 -2
  172. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  173. package/dist/admin/admin/src/services/users.js.map +1 -1
  174. package/dist/admin/admin/src/services/users.mjs.map +1 -1
  175. package/dist/admin/admin/src/translations/en.json.js +71 -4
  176. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  177. package/dist/admin/admin/src/translations/en.json.mjs +71 -4
  178. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  179. package/dist/admin/admin/src/translations/eu.json.js +1 -1
  180. package/dist/admin/admin/src/translations/eu.json.mjs +1 -1
  181. package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
  182. package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
  183. package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
  184. package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -1
  185. package/dist/admin/admin/src/utils/cookies.js +7 -6
  186. package/dist/admin/admin/src/utils/cookies.js.map +1 -1
  187. package/dist/admin/admin/src/utils/cookies.mjs +7 -6
  188. package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
  189. package/dist/admin/admin/src/utils/getFetchClient.js +24 -0
  190. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  191. package/dist/admin/admin/src/utils/getFetchClient.mjs +24 -1
  192. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  193. package/dist/admin/admin/tests/utils.js +2 -1
  194. package/dist/admin/admin/tests/utils.js.map +1 -1
  195. package/dist/admin/admin/tests/utils.mjs +2 -1
  196. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  197. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
  198. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  199. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +53 -23
  200. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  201. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
  202. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  203. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
  204. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  205. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
  206. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
  207. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
  208. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
  209. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +2 -0
  210. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  211. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +2 -0
  212. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  213. package/dist/admin/index.js +1 -0
  214. package/dist/admin/index.js.map +1 -1
  215. package/dist/admin/index.mjs +1 -1
  216. package/dist/admin/shared/utils/auth-cookie-path.js +13 -10
  217. package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
  218. package/dist/admin/shared/utils/auth-cookie-path.mjs +13 -10
  219. package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
  220. package/dist/admin/shared/utils/get-project-type.js +49 -0
  221. package/dist/admin/shared/utils/get-project-type.js.map +1 -0
  222. package/dist/admin/shared/utils/get-project-type.mjs +46 -0
  223. package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
  224. package/dist/admin/src/components/Filters.d.ts +1 -1
  225. package/dist/admin/src/components/Form.d.ts +1 -1
  226. package/dist/admin/src/constants.d.ts +10 -0
  227. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.d.ts +1 -1
  228. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
  229. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
  230. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
  231. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
  232. package/dist/admin/src/services/admin.d.ts +2 -2
  233. package/dist/admin/src/types/permissions.d.ts +1 -0
  234. package/dist/admin/src/utils/cookies.d.ts +7 -6
  235. package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
  236. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
  237. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
  238. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
  239. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +2 -0
  240. package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
  241. package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
  242. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
  243. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  244. package/dist/ee/server/src/controllers/admin.d.ts +36 -10
  245. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  246. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  247. package/dist/ee/server/src/controllers/index.d.ts +36 -10
  248. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  249. package/dist/ee/server/src/index.d.ts +36 -10
  250. package/dist/ee/server/src/index.d.ts.map +1 -1
  251. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  252. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  253. package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
  254. package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
  255. package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
  256. package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
  257. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
  258. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  259. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
  260. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  261. package/dist/server/ee/server/src/audit-logs/utils/csv.js +3 -3
  262. package/dist/server/ee/server/src/audit-logs/utils/csv.js.map +1 -1
  263. package/dist/server/ee/server/src/audit-logs/utils/csv.mjs +3 -3
  264. package/dist/server/ee/server/src/audit-logs/utils/csv.mjs.map +1 -1
  265. package/dist/server/ee/server/src/controllers/admin.js +76 -3
  266. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  267. package/dist/server/ee/server/src/controllers/admin.mjs +76 -3
  268. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  269. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
  270. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  271. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
  272. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  273. package/dist/server/ee/server/src/index.js +2 -0
  274. package/dist/server/ee/server/src/index.js.map +1 -1
  275. package/dist/server/ee/server/src/index.mjs +2 -0
  276. package/dist/server/ee/server/src/index.mjs.map +1 -1
  277. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  278. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  279. package/dist/server/ee/server/src/validation/role.js +4 -2
  280. package/dist/server/ee/server/src/validation/role.js.map +1 -1
  281. package/dist/server/ee/server/src/validation/role.mjs +4 -2
  282. package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
  283. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  284. package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
  285. package/dist/server/server/src/audit-logs/auth.js +72 -0
  286. package/dist/server/server/src/audit-logs/auth.js.map +1 -0
  287. package/dist/server/server/src/audit-logs/auth.mjs +67 -0
  288. package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
  289. package/dist/server/server/src/config/admin-actions.js +7 -0
  290. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  291. package/dist/server/server/src/config/admin-actions.mjs +7 -0
  292. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  293. package/dist/server/server/src/controllers/admin.js +17 -12
  294. package/dist/server/server/src/controllers/admin.js.map +1 -1
  295. package/dist/server/server/src/controllers/admin.mjs +17 -12
  296. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  297. package/dist/server/server/src/controllers/authentication.js +34 -8
  298. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  299. package/dist/server/server/src/controllers/authentication.mjs +34 -8
  300. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  301. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  302. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  303. package/dist/server/server/src/register.js +4 -0
  304. package/dist/server/server/src/register.js.map +1 -1
  305. package/dist/server/server/src/register.mjs +4 -0
  306. package/dist/server/server/src/register.mjs.map +1 -1
  307. package/dist/server/server/src/routes/admin.js +18 -0
  308. package/dist/server/server/src/routes/admin.js.map +1 -1
  309. package/dist/server/server/src/routes/admin.mjs +18 -0
  310. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  311. package/dist/server/server/src/services/api-token.js +4 -8
  312. package/dist/server/server/src/services/api-token.js.map +1 -1
  313. package/dist/server/server/src/services/api-token.mjs +4 -8
  314. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  315. package/dist/server/server/src/services/auth.js +4 -2
  316. package/dist/server/server/src/services/auth.js.map +1 -1
  317. package/dist/server/server/src/services/auth.mjs +4 -3
  318. package/dist/server/server/src/services/auth.mjs.map +1 -1
  319. package/dist/server/server/src/services/constants.js +4 -0
  320. package/dist/server/server/src/services/constants.js.map +1 -1
  321. package/dist/server/server/src/services/constants.mjs +4 -0
  322. package/dist/server/server/src/services/constants.mjs.map +1 -1
  323. package/dist/server/server/src/services/debug-dump.js +173 -0
  324. package/dist/server/server/src/services/debug-dump.js.map +1 -0
  325. package/dist/server/server/src/services/debug-dump.mjs +166 -0
  326. package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
  327. package/dist/server/server/src/services/index.js +3 -1
  328. package/dist/server/server/src/services/index.js.map +1 -1
  329. package/dist/server/server/src/services/index.mjs +3 -1
  330. package/dist/server/server/src/services/index.mjs.map +1 -1
  331. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -1
  332. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -1
  333. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  334. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  335. package/dist/server/server/src/services/role.js +8 -5
  336. package/dist/server/server/src/services/role.js.map +1 -1
  337. package/dist/server/server/src/services/role.mjs +8 -5
  338. package/dist/server/server/src/services/role.mjs.map +1 -1
  339. package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
  340. package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
  341. package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
  342. package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
  343. package/dist/server/server/src/validation/admin-tokens.js +4 -4
  344. package/dist/server/server/src/validation/admin-tokens.js.map +1 -1
  345. package/dist/server/server/src/validation/admin-tokens.mjs +4 -4
  346. package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -1
  347. package/dist/server/server/src/validation/api-tokens.js +4 -4
  348. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  349. package/dist/server/server/src/validation/api-tokens.mjs +4 -4
  350. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  351. package/dist/server/server/src/validation/role.js +6 -4
  352. package/dist/server/server/src/validation/role.js.map +1 -1
  353. package/dist/server/server/src/validation/role.mjs +6 -4
  354. package/dist/server/server/src/validation/role.mjs.map +1 -1
  355. package/dist/server/server/src/validation/transfer/token.js +4 -4
  356. package/dist/server/server/src/validation/transfer/token.js.map +1 -1
  357. package/dist/server/server/src/validation/transfer/token.mjs +4 -4
  358. package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
  359. package/dist/server/shared/utils/auth-cookie-path.js +13 -10
  360. package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
  361. package/dist/server/shared/utils/auth-cookie-path.mjs +13 -10
  362. package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
  363. package/dist/server/shared/utils/get-project-type.js +49 -0
  364. package/dist/server/shared/utils/get-project-type.js.map +1 -0
  365. package/dist/server/shared/utils/get-project-type.mjs +46 -0
  366. package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
  367. package/dist/server/shared/utils/session-auth.js +70 -3
  368. package/dist/server/shared/utils/session-auth.js.map +1 -1
  369. package/dist/server/shared/utils/session-auth.mjs +70 -4
  370. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  371. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  372. package/dist/server/src/audit-logs/auth.d.ts +72 -0
  373. package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
  374. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  375. package/dist/server/src/controllers/admin.d.ts +3 -0
  376. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  377. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  378. package/dist/server/src/controllers/index.d.ts +3 -0
  379. package/dist/server/src/controllers/index.d.ts.map +1 -1
  380. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  381. package/dist/server/src/index.d.ts +8 -0
  382. package/dist/server/src/index.d.ts.map +1 -1
  383. package/dist/server/src/register.d.ts.map +1 -1
  384. package/dist/server/src/routes/admin.d.ts.map +1 -1
  385. package/dist/server/src/services/auth.d.ts +6 -0
  386. package/dist/server/src/services/auth.d.ts.map +1 -1
  387. package/dist/server/src/services/constants.d.ts +2 -0
  388. package/dist/server/src/services/constants.d.ts.map +1 -1
  389. package/dist/server/src/services/debug-dump.d.ts +9 -0
  390. package/dist/server/src/services/debug-dump.d.ts.map +1 -0
  391. package/dist/server/src/services/index.d.ts +5 -0
  392. package/dist/server/src/services/index.d.ts.map +1 -1
  393. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -1
  394. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  395. package/dist/server/src/services/role.d.ts.map +1 -1
  396. package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
  397. package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
  398. package/dist/server/src/validation/role.d.ts.map +1 -1
  399. package/dist/shared/contracts/admin.d.ts +106 -0
  400. package/dist/shared/contracts/admin.d.ts.map +1 -1
  401. package/dist/shared/contracts/transfer.d.ts.map +1 -1
  402. package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
  403. package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
  404. package/dist/shared/utils/auth-cookie-path.d.ts +13 -10
  405. package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
  406. package/dist/shared/utils/get-project-type.d.ts +37 -0
  407. package/dist/shared/utils/get-project-type.d.ts.map +1 -0
  408. package/dist/shared/utils/session-auth.d.ts +16 -0
  409. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  410. package/package.json +8 -8
  411. package/dist/admin/admin/src/utils/getProjectType.js +0 -22
  412. package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
  413. package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
  414. package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
  415. package/dist/admin/src/utils/getProjectType.d.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"Permissions.mjs","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 {\n ConditionForm,\n Form,\n PropertyChildForm,\n createDefaultCTForm,\n createDefaultForm,\n} from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { hasLocaleValidationErrors } from '../utils/localePermissionValidation';\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 hasLocaleValidationErrors: () => boolean;\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n onLocaleValidationChange?: (hasErrors: boolean) => void;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n userPermissions?: AuthPermission[];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n (\n { layout, isFormDisabled, onLocaleValidationChange, permissions = [], userPermissions },\n api\n ) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useEffect(() => {\n onLocaleValidationChange?.(hasLocaleValidationErrors(modifiedData));\n }, [modifiedData, onLocaleValidationChange]);\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 const permissionsToSend = formatPermissionsForAPI(modifiedData).map((perm) =>\n restoreNullLocalesIfUnchanged(perm, permissions, initialData, modifiedData)\n );\n\n return { permissionsToSend, didUpdateConditions };\n },\n hasLocaleValidationErrors() {\n return hasLocaleValidationErrors(modifiedData);\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 const root = pathToValue[0];\n // Plugin & setting permissions are stored with `subject: null` and their real\n // action id is the full `plugin::`/`admin::` leaf segment (not the UI subcategory).\n // For those, let the checker derive the action from each leaf path (subject stays null).\n const isPluginOrSetting = root === 'plugins' || root === 'settings';\n\n let actionId: string | undefined;\n let subject: string | null | undefined;\n\n if (isPluginOrSetting) {\n subject = null;\n } else {\n if (pathToValue.length >= 2) {\n subject = pathToValue[1];\n }\n\n if (pathToValue.length >= 3) {\n actionId = pathToValue[2];\n }\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 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 * restoreNullLocalesIfUnchanged\n * Extracted at module level to avoid nesting arrow functions more than 4 levels deep inside\n * the useImperativeHandle → getPermissions → map chain.\n * -----------------------------------------------------------------------------------------------*/\n\ntype SentPermission = Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>;\n\nconst restoreNullLocalesIfUnchanged = (\n perm: SentPermission,\n originalPermissions: Permission[],\n initialData: PermissionForms,\n modifiedData: PermissionForms\n): SentPermission => {\n if (!perm.subject) return perm;\n\n const original = originalPermissions.find(\n (p) => p.action === perm.action && p.subject === perm.subject\n );\n\n // null means \"all locales\" in legacy DBs — preserve it if the user hasn't changed anything\n if (original?.properties?.locales !== null) return perm;\n\n const kind =\n perm.subject in modifiedData.collectionTypes\n ? ('collectionTypes' as const)\n : perm.subject in modifiedData.singleTypes\n ? ('singleTypes' as const)\n : null;\n if (!kind) return perm;\n\n const initialActionForm = initialData[kind]?.[perm.subject]?.[perm.action];\n const modifiedActionForm = modifiedData[kind]?.[perm.subject]?.[perm.action];\n\n if (!initialActionForm || !modifiedActionForm) return perm;\n\n const initialLocaleEntry = (initialActionForm.properties as PropertyChildForm)['locales'];\n const modifiedLocaleEntry = (modifiedActionForm.properties as PropertyChildForm)['locales'];\n\n if (\n !initialLocaleEntry ||\n typeof initialLocaleEntry === 'boolean' ||\n !modifiedLocaleEntry ||\n typeof modifiedLocaleEntry === 'boolean'\n ) {\n return perm;\n }\n\n const localesUnchanged =\n Object.keys(initialLocaleEntry).length === Object.keys(modifiedLocaleEntry).length &&\n Object.entries(initialLocaleEntry).every(\n ([locale, val]) => modifiedLocaleEntry[locale] === val\n );\n\n if (!localesUnchanged) return perm;\n\n return { ...perm, properties: { ...perm.properties, locales: null } };\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","onLocaleValidationChange","permissions","userPermissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useEffect","hasLocaleValidationErrors","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","map","perm","restoreNullLocalesIfUnchanged","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","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","buildInheritedConditionsFromExisting","existing","enabledConditions","isObject","undefined","enabled","Set","reduce","acc","key","inheritConditionsAtPath","data","pathToActionObject","subject","matchingPermission","find","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","isPluginOrSetting","createDynamicActionPermissionChecker","subjectForLookup","updatedValuesObj","maybeActionObj","originalPermissions","original","p","locales","initialActionForm","modifiedActionForm","initialLocaleEntry","modifiedLocaleEntry","localesUnchanged","every","locale","val","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
1
+ {"version":3,"file":"Permissions.mjs","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 {\n ConditionForm,\n Form,\n PropertyChildForm,\n createDefaultCTForm,\n createDefaultForm,\n} from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { hasLocaleValidationErrors } from '../utils/localePermissionValidation';\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 EMPTY_PERMISSIONS: NonNullable<PermissionsProps['permissions']> = [];\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 hasLocaleValidationErrors: () => boolean;\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n onLocaleValidationChange?: (hasErrors: boolean) => void;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n userPermissions?: AuthPermission[];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n (\n {\n layout,\n isFormDisabled,\n onLocaleValidationChange,\n permissions = EMPTY_PERMISSIONS,\n userPermissions,\n },\n api\n ) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useEffect(() => {\n onLocaleValidationChange?.(hasLocaleValidationErrors(modifiedData));\n }, [modifiedData, onLocaleValidationChange]);\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 const permissionsToSend = formatPermissionsForAPI(modifiedData).map((perm) =>\n restoreNullLocalesIfUnchanged(perm, permissions, initialData, modifiedData)\n );\n\n return { permissionsToSend, didUpdateConditions };\n },\n hasLocaleValidationErrors() {\n return hasLocaleValidationErrors(modifiedData);\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 const root = pathToValue[0];\n // Plugin & setting permissions are stored with `subject: null` and their real\n // action id is the full `plugin::`/`admin::` leaf segment (not the UI subcategory).\n // For those, let the checker derive the action from each leaf path (subject stays null).\n const isPluginOrSetting = root === 'plugins' || root === 'settings';\n\n let actionId: string | undefined;\n let subject: string | null | undefined;\n\n if (isPluginOrSetting) {\n subject = null;\n } else {\n if (pathToValue.length >= 2) {\n subject = pathToValue[1];\n }\n\n if (pathToValue.length >= 3) {\n actionId = pathToValue[2];\n }\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 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 * restoreNullLocalesIfUnchanged\n * Extracted at module level to avoid nesting arrow functions more than 4 levels deep inside\n * the useImperativeHandle → getPermissions → map chain.\n * -----------------------------------------------------------------------------------------------*/\n\ntype SentPermission = Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>;\n\nconst restoreNullLocalesIfUnchanged = (\n perm: SentPermission,\n originalPermissions: Permission[],\n initialData: PermissionForms,\n modifiedData: PermissionForms\n): SentPermission => {\n if (!perm.subject) return perm;\n\n const original = originalPermissions.find(\n (p) => p.action === perm.action && p.subject === perm.subject\n );\n\n // null means \"all locales\" in legacy DBs — preserve it if the user hasn't changed anything\n if (original?.properties?.locales !== null) return perm;\n\n const kind =\n perm.subject in modifiedData.collectionTypes\n ? ('collectionTypes' as const)\n : perm.subject in modifiedData.singleTypes\n ? ('singleTypes' as const)\n : null;\n if (!kind) return perm;\n\n const initialActionForm = initialData[kind]?.[perm.subject]?.[perm.action];\n const modifiedActionForm = modifiedData[kind]?.[perm.subject]?.[perm.action];\n\n if (!initialActionForm || !modifiedActionForm) return perm;\n\n const initialLocaleEntry = (initialActionForm.properties as PropertyChildForm)['locales'];\n const modifiedLocaleEntry = (modifiedActionForm.properties as PropertyChildForm)['locales'];\n\n if (\n !initialLocaleEntry ||\n typeof initialLocaleEntry === 'boolean' ||\n !modifiedLocaleEntry ||\n typeof modifiedLocaleEntry === 'boolean'\n ) {\n return perm;\n }\n\n const localesUnchanged =\n Object.keys(initialLocaleEntry).length === Object.keys(modifiedLocaleEntry).length &&\n Object.entries(initialLocaleEntry).every(\n ([locale, val]) => modifiedLocaleEntry[locale] === val\n );\n\n if (!localesUnchanged) return perm;\n\n return { ...perm, properties: { ...perm.properties, locales: null } };\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":["EMPTY_PERMISSIONS","TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","onLocaleValidationChange","permissions","userPermissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useEffect","hasLocaleValidationErrors","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","map","perm","restoreNullLocalesIfUnchanged","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","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","buildInheritedConditionsFromExisting","existing","enabledConditions","isObject","undefined","enabled","Set","reduce","acc","key","inheritConditionsAtPath","data","pathToActionObject","subject","matchingPermission","find","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","isPluginOrSetting","createDynamicActionPermissionChecker","subjectForLookup","updatedValuesObj","maybeActionObj","originalPermissions","original","p","locales","initialActionForm","modifiedActionForm","initialLocaleEntry","modifiedLocaleEntry","localesUnchanged","every","locale","val","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
@@ -37,6 +37,7 @@ function _interopNamespace(e) {
37
37
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
38
38
  var get__default = /*#__PURE__*/_interopDefault(get);
39
39
 
40
+ const EMPTY_ACTIONS = [];
40
41
  const PluginsAndSettingsPermissions = ({ layout, ...restProps })=>{
41
42
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
42
43
  padding: 6,
@@ -96,7 +97,7 @@ const Row = ({ childrenForm, kind, name, isFormDisabled = false, variant, pathTo
96
97
  ]
97
98
  });
98
99
  };
99
- const SubCategory = ({ actions = [], categoryName, isFormDisabled, subCategoryName, pathToData })=>{
100
+ const SubCategory = ({ actions = EMPTY_ACTIONS, categoryName, isFormDisabled, subCategoryName, pathToData })=>{
100
101
  const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox, checkUserHasPermission, userPermissions } = usePermissionsDataManager.usePermissionsDataManager();
101
102
  const [isConditionModalOpen, setIsConditionModalOpen] = React__namespace.useState(false);
102
103
  const { formatMessage } = reactIntl.useIntl();
@@ -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\nconst EMPTY_ACTIONS: NonNullable<SubCategoryProps['actions']> = [];\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'>, 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 = EMPTY_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":["EMPTY_ACTIONS","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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"}
@@ -12,6 +12,7 @@ import { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData.
12
12
  import { ConditionsButton } from './ConditionsButton.mjs';
13
13
  import { ConditionsModal } from './ConditionsModal.mjs';
14
14
 
15
+ const EMPTY_ACTIONS = [];
15
16
  const PluginsAndSettingsPermissions = ({ layout, ...restProps })=>{
16
17
  return /*#__PURE__*/ jsx(Box, {
17
18
  padding: 6,
@@ -71,7 +72,7 @@ const Row = ({ childrenForm, kind, name, isFormDisabled = false, variant, pathTo
71
72
  ]
72
73
  });
73
74
  };
74
- const SubCategory = ({ actions = [], categoryName, isFormDisabled, subCategoryName, pathToData })=>{
75
+ const SubCategory = ({ actions = EMPTY_ACTIONS, categoryName, isFormDisabled, subCategoryName, pathToData })=>{
75
76
  const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox, checkUserHasPermission, userPermissions } = usePermissionsDataManager();
76
77
  const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);
77
78
  const { formatMessage } = useIntl();
@@ -1 +1 @@
1
- {"version":3,"file":"PluginsAndSettings.mjs","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.mjs","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\nconst EMPTY_ACTIONS: NonNullable<SubCategoryProps['actions']> = [];\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'>, 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 = EMPTY_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":["EMPTY_ACTIONS","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 +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 extends Omit<\n PermissionsDataManagerContextValue,\n 'checkUserHasPermission'\n> {\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;AASnC,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 +1 @@
1
- {"version":3,"file":"usePermissionsDataManager.mjs","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,aAAAA,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,KAAAA,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,GAAA,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.mjs","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 extends Omit<\n PermissionsDataManagerContextValue,\n 'checkUserHasPermission'\n> {\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,aAAAA,CAAkD,wBAAA,CAAA;AAE7C,MAAMC,yBAAAA,GAA4B,IACvCF,gCAAAA,CAAiC,2BAAA;AASnC,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,KAAAA,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,GAAA,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;;;;"}
@@ -46,6 +46,8 @@ function _interopNamespace(e) {
46
46
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
47
47
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
48
48
 
49
+ const EMPTY_ERRORS = {};
50
+ const EMPTY_TRANSFER_TOKEN = {};
49
51
  const schema = yup__namespace.object().shape({
50
52
  name: yup__namespace.string().max(100).required(translatedErrors.translatedErrors.required.id),
51
53
  description: yup__namespace.string().nullable(),
@@ -277,7 +279,7 @@ const schema = yup__namespace.object().shape({
277
279
  children: /*#__PURE__*/ jsxRuntime.jsx(EditView, {})
278
280
  });
279
281
  };
280
- const FormTransferTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreating, values, transferToken = {} })=>{
282
+ const FormTransferTokenContainer = ({ errors = EMPTY_ERRORS, onChange, canEditInputs, isCreating, values, transferToken = EMPTY_TRANSFER_TOKEN })=>{
281
283
  const { formatMessage } = reactIntl.useIntl();
282
284
  const typeOptions = [
283
285
  {