@strapi/admin 5.44.0 → 5.45.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 (334) hide show
  1. package/dist/admin/admin/src/components/Table.js.map +1 -1
  2. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  3. package/dist/admin/admin/src/constants.js +49 -0
  4. package/dist/admin/admin/src/constants.js.map +1 -1
  5. package/dist/admin/admin/src/constants.mjs +49 -0
  6. package/dist/admin/admin/src/constants.mjs.map +1 -1
  7. package/dist/admin/admin/src/core/apis/router.js +4 -4
  8. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  9. package/dist/admin/admin/src/core/apis/router.mjs +4 -4
  10. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  11. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  12. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  13. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.js +48 -11
  14. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -0
  15. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.mjs +49 -12
  16. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -0
  17. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +1 -1
  18. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  19. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
  20. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  21. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js +1 -1
  22. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  23. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs +1 -1
  24. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  25. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +21 -1
  26. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  27. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +21 -1
  28. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  29. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +1 -1
  30. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  31. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
  32. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  33. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +33 -0
  34. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  35. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs +14 -1
  36. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs.map +1 -1
  37. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.js +1 -1
  38. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -0
  39. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.mjs +1 -1
  40. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.mjs.map +1 -0
  41. package/dist/admin/admin/src/pages/Settings/constants.js +182 -151
  42. package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Settings/constants.mjs +182 -151
  44. package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js +17 -0
  46. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js.map +1 -0
  47. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs +15 -0
  48. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs.map +1 -0
  49. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +314 -0
  50. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -0
  51. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs +292 -0
  52. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs.map +1 -0
  53. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +70 -0
  54. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -0
  55. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs +49 -0
  56. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs.map +1 -0
  57. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +254 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -0
  59. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs +231 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs.map +1 -0
  61. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +42 -33
  62. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +43 -34
  64. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +3 -2
  66. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +3 -2
  68. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +23 -12
  70. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +23 -12
  72. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +124 -35
  74. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +126 -37
  76. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +24 -9
  78. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +24 -9
  80. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +5 -3
  82. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +5 -3
  84. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +171 -36
  86. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +172 -37
  88. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +5 -3
  90. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +5 -3
  92. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +59 -1
  94. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs +40 -1
  96. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js +89 -0
  98. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js.map +1 -0
  99. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs +86 -0
  100. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs.map +1 -0
  101. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js +35 -9
  102. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs +35 -10
  104. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
  105. package/dist/admin/admin/src/render.js +6 -3
  106. package/dist/admin/admin/src/render.js.map +1 -1
  107. package/dist/admin/admin/src/render.mjs +6 -3
  108. package/dist/admin/admin/src/render.mjs.map +1 -1
  109. package/dist/admin/admin/src/router.js +4 -4
  110. package/dist/admin/admin/src/router.js.map +1 -1
  111. package/dist/admin/admin/src/router.mjs +1 -1
  112. package/dist/admin/admin/src/router.mjs.map +1 -1
  113. package/dist/admin/admin/src/services/apiTokens.js +85 -2
  114. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  115. package/dist/admin/admin/src/services/apiTokens.mjs +80 -3
  116. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  117. package/dist/admin/admin/src/translations/en.json.js +16 -1
  118. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  119. package/dist/admin/admin/src/translations/en.json.mjs +16 -1
  120. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  121. package/dist/admin/admin/src/utils/getFetchClient.js +4 -1
  122. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  123. package/dist/admin/admin/src/utils/getFetchClient.mjs +4 -1
  124. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  125. package/dist/admin/admin/tests/server.js +99 -21
  126. package/dist/admin/admin/tests/server.js.map +1 -1
  127. package/dist/admin/admin/tests/server.mjs +99 -21
  128. package/dist/admin/admin/tests/server.mjs.map +1 -1
  129. package/dist/admin/src/constants.d.ts +26 -0
  130. package/dist/admin/src/core/apis/router.d.ts +1 -1
  131. package/dist/admin/src/features/Tracking.d.ts +2 -1
  132. package/dist/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.d.ts +24 -0
  133. package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +2 -1
  134. package/dist/admin/src/pages/Settings/components/Tokens/constants.d.ts +17 -0
  135. package/dist/admin/src/pages/Settings/constants.d.ts +1 -1
  136. package/dist/admin/src/pages/Settings/pages/AdminTokens/CreateView.d.ts +1 -0
  137. package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.d.ts +2 -0
  138. package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.d.ts +13 -0
  139. package/dist/admin/src/pages/Settings/pages/AdminTokens/ListView.d.ts +2 -0
  140. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +4 -3
  141. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +3 -1
  142. package/dist/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.d.ts +1 -0
  143. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +5 -0
  144. package/dist/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.d.ts +8 -7
  145. package/dist/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.d.ts +27 -0
  146. package/dist/admin/src/pages/Settings/pages/Roles/utils/updateValues.d.ts +8 -2
  147. package/dist/admin/src/services/apiTokens.d.ts +5 -2
  148. package/dist/admin/src/types/permissions.d.ts +1 -1
  149. package/dist/server/server/src/bootstrap.js +37 -5
  150. package/dist/server/server/src/bootstrap.js.map +1 -1
  151. package/dist/server/server/src/bootstrap.mjs +37 -5
  152. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  153. package/dist/server/server/src/config/admin-actions.js +48 -0
  154. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  155. package/dist/server/server/src/config/admin-actions.mjs +48 -0
  156. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  157. package/dist/server/server/src/content-types/Permission.js +10 -1
  158. package/dist/server/server/src/content-types/Permission.js.map +1 -1
  159. package/dist/server/server/src/content-types/Permission.mjs +10 -1
  160. package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
  161. package/dist/server/server/src/content-types/User.js +8 -0
  162. package/dist/server/server/src/content-types/User.js.map +1 -1
  163. package/dist/server/server/src/content-types/User.mjs +8 -0
  164. package/dist/server/server/src/content-types/User.mjs.map +1 -1
  165. package/dist/server/server/src/content-types/api-token.js +27 -1
  166. package/dist/server/server/src/content-types/api-token.js.map +1 -1
  167. package/dist/server/server/src/content-types/api-token.mjs +27 -1
  168. package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
  169. package/dist/server/server/src/controllers/admin-token.js +194 -0
  170. package/dist/server/server/src/controllers/admin-token.js.map +1 -0
  171. package/dist/server/server/src/controllers/admin-token.mjs +192 -0
  172. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -0
  173. package/dist/server/server/src/controllers/api-token.js +48 -47
  174. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  175. package/dist/server/server/src/controllers/api-token.mjs +48 -47
  176. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  177. package/dist/server/server/src/controllers/index.js +2 -0
  178. package/dist/server/server/src/controllers/index.js.map +1 -1
  179. package/dist/server/server/src/controllers/index.mjs +2 -0
  180. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  181. package/dist/server/server/src/domain/permission/index.js +2 -1
  182. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  183. package/dist/server/server/src/domain/permission/index.mjs +2 -1
  184. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  185. package/dist/server/server/src/policies/index.js +2 -0
  186. package/dist/server/server/src/policies/index.js.map +1 -1
  187. package/dist/server/server/src/policies/index.mjs +2 -0
  188. package/dist/server/server/src/policies/index.mjs.map +1 -1
  189. package/dist/server/server/src/policies/isAdminTokensEnabled.js +16 -0
  190. package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +1 -0
  191. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +14 -0
  192. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +1 -0
  193. package/dist/server/server/src/register.js +4 -2
  194. package/dist/server/server/src/register.js.map +1 -1
  195. package/dist/server/server/src/register.mjs +4 -2
  196. package/dist/server/server/src/register.mjs.map +1 -1
  197. package/dist/server/server/src/routes/admin-tokens.js +140 -0
  198. package/dist/server/server/src/routes/admin-tokens.js.map +1 -0
  199. package/dist/server/server/src/routes/admin-tokens.mjs +138 -0
  200. package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -0
  201. package/dist/server/server/src/routes/index.js +2 -0
  202. package/dist/server/server/src/routes/index.js.map +1 -1
  203. package/dist/server/server/src/routes/index.mjs +2 -0
  204. package/dist/server/server/src/routes/index.mjs.map +1 -1
  205. package/dist/server/server/src/services/api-token.js +805 -101
  206. package/dist/server/server/src/services/api-token.js.map +1 -1
  207. package/dist/server/server/src/services/api-token.mjs +800 -101
  208. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  209. package/dist/server/server/src/services/constants.js +2 -0
  210. package/dist/server/server/src/services/constants.js.map +1 -1
  211. package/dist/server/server/src/services/constants.mjs +2 -0
  212. package/dist/server/server/src/services/constants.mjs.map +1 -1
  213. package/dist/server/server/src/services/homepage.js +1 -1
  214. package/dist/server/server/src/services/homepage.js.map +1 -1
  215. package/dist/server/server/src/services/homepage.mjs +1 -1
  216. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  217. package/dist/server/server/src/services/index.js +2 -1
  218. package/dist/server/server/src/services/index.js.map +1 -1
  219. package/dist/server/server/src/services/index.mjs +3 -2
  220. package/dist/server/server/src/services/index.mjs.map +1 -1
  221. package/dist/server/server/src/services/permission/engine.js +6 -0
  222. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  223. package/dist/server/server/src/services/permission/engine.mjs +6 -0
  224. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  225. package/dist/server/server/src/services/permission/queries.js +11 -2
  226. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  227. package/dist/server/server/src/services/permission/queries.mjs +12 -3
  228. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  229. package/dist/server/server/src/services/role.js +3 -0
  230. package/dist/server/server/src/services/role.js.map +1 -1
  231. package/dist/server/server/src/services/role.mjs +3 -0
  232. package/dist/server/server/src/services/role.mjs.map +1 -1
  233. package/dist/server/server/src/strategies/admin-token.js +110 -0
  234. package/dist/server/server/src/strategies/admin-token.js.map +1 -0
  235. package/dist/server/server/src/strategies/admin-token.mjs +104 -0
  236. package/dist/server/server/src/strategies/admin-token.mjs.map +1 -0
  237. package/dist/server/server/src/strategies/api-token-utils.js +56 -0
  238. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -0
  239. package/dist/server/server/src/strategies/api-token-utils.mjs +52 -0
  240. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -0
  241. package/dist/server/server/src/strategies/content-api-token.js +104 -0
  242. package/dist/server/server/src/strategies/content-api-token.js.map +1 -0
  243. package/dist/server/server/src/strategies/content-api-token.mjs +98 -0
  244. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -0
  245. package/dist/server/server/src/validation/admin-tokens.js +28 -0
  246. package/dist/server/server/src/validation/admin-tokens.js.map +1 -0
  247. package/dist/server/server/src/validation/admin-tokens.mjs +25 -0
  248. package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -0
  249. package/dist/server/server/src/validation/api-tokens.js +5 -2
  250. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  251. package/dist/server/server/src/validation/api-tokens.mjs +5 -2
  252. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  253. package/dist/server/server/src/validation/project-settings.js +15 -16
  254. package/dist/server/server/src/validation/project-settings.js.map +1 -1
  255. package/dist/server/server/src/validation/project-settings.mjs +4 -5
  256. package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
  257. package/dist/server/src/bootstrap.d.ts.map +1 -1
  258. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  259. package/dist/server/src/content-types/Permission.d.ts +9 -0
  260. package/dist/server/src/content-types/Permission.d.ts.map +1 -1
  261. package/dist/server/src/content-types/User.d.ts +8 -0
  262. package/dist/server/src/content-types/User.d.ts.map +1 -1
  263. package/dist/server/src/content-types/api-token.d.ts +23 -0
  264. package/dist/server/src/content-types/api-token.d.ts.map +1 -1
  265. package/dist/server/src/content-types/index.d.ts +40 -0
  266. package/dist/server/src/content-types/index.d.ts.map +1 -1
  267. package/dist/server/src/controllers/admin-token.d.ts +12 -0
  268. package/dist/server/src/controllers/admin-token.d.ts.map +1 -0
  269. package/dist/server/src/controllers/api-token.d.ts +0 -1
  270. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  271. package/dist/server/src/controllers/index.d.ts +9 -1
  272. package/dist/server/src/controllers/index.d.ts.map +1 -1
  273. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  274. package/dist/server/src/index.d.ts +56 -2
  275. package/dist/server/src/index.d.ts.map +1 -1
  276. package/dist/server/src/policies/index.d.ts +5 -0
  277. package/dist/server/src/policies/index.d.ts.map +1 -1
  278. package/dist/server/src/policies/isAdminTokensEnabled.d.ts +7 -0
  279. package/dist/server/src/policies/isAdminTokensEnabled.d.ts.map +1 -0
  280. package/dist/server/src/register.d.ts.map +1 -1
  281. package/dist/server/src/routes/admin-tokens.d.ts +15 -0
  282. package/dist/server/src/routes/admin-tokens.d.ts.map +1 -0
  283. package/dist/server/src/routes/index.d.ts.map +1 -1
  284. package/dist/server/src/services/api-token.d.ts +136 -12
  285. package/dist/server/src/services/api-token.d.ts.map +1 -1
  286. package/dist/server/src/services/constants.d.ts +13 -11
  287. package/dist/server/src/services/constants.d.ts.map +1 -1
  288. package/dist/server/src/services/index.d.ts +2 -2
  289. package/dist/server/src/services/index.d.ts.map +1 -1
  290. package/dist/server/src/services/permission/engine.d.ts +5 -0
  291. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  292. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  293. package/dist/server/src/services/permission.d.ts +1 -0
  294. package/dist/server/src/services/permission.d.ts.map +1 -1
  295. package/dist/server/src/services/role.d.ts.map +1 -1
  296. package/dist/server/src/strategies/admin-token.d.ts +51 -0
  297. package/dist/server/src/strategies/admin-token.d.ts.map +1 -0
  298. package/dist/server/src/strategies/api-token-utils.d.ts +13 -0
  299. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -0
  300. package/dist/server/src/strategies/{api-token.d.ts → content-api-token.d.ts} +10 -11
  301. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -0
  302. package/dist/server/src/strategies/index.d.ts +2 -1
  303. package/dist/server/src/strategies/index.d.ts.map +1 -1
  304. package/dist/server/src/validation/admin-tokens.d.ts +75 -0
  305. package/dist/server/src/validation/admin-tokens.d.ts.map +1 -0
  306. package/dist/server/src/validation/api-tokens.d.ts +4 -2
  307. package/dist/server/src/validation/api-tokens.d.ts.map +1 -1
  308. package/dist/server/src/validation/project-settings.d.ts +10 -10
  309. package/dist/server/src/validation/project-settings.d.ts.map +1 -1
  310. package/dist/shared/contracts/admin-token.d.ts +122 -0
  311. package/dist/shared/contracts/admin-token.d.ts.map +1 -0
  312. package/dist/shared/contracts/api-token.d.ts +6 -95
  313. package/dist/shared/contracts/api-token.d.ts.map +1 -1
  314. package/dist/shared/contracts/content-api-token.d.ts +97 -0
  315. package/dist/shared/contracts/content-api-token.d.ts.map +1 -0
  316. package/dist/shared/contracts/shared.d.ts +1 -0
  317. package/dist/shared/contracts/shared.d.ts.map +1 -1
  318. package/package.json +7 -7
  319. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +0 -1
  320. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +0 -1
  321. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js +0 -37
  322. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +0 -1
  323. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs +0 -16
  324. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +0 -1
  325. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +0 -1
  326. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +0 -1
  327. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.d.ts +0 -20
  328. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.d.ts +0 -17
  329. package/dist/server/server/src/strategies/api-token.js +0 -144
  330. package/dist/server/server/src/strategies/api-token.js.map +0 -1
  331. package/dist/server/server/src/strategies/api-token.mjs +0 -138
  332. package/dist/server/server/src/strategies/api-token.mjs.map +0 -1
  333. package/dist/server/src/strategies/api-token.d.ts.map +0 -1
  334. /package/dist/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.d.ts +0 -0
@@ -24,13 +24,24 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
24
24
  const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;
25
25
  setCollapseToOpen(nextCollapseToOpen);
26
26
  };
27
- return /*#__PURE__*/ jsx(Fragment, {
28
- children: subjects.map(({ uid, label, properties }, index)=>{
29
- const isActive = collapseToOpen === uid;
27
+ const subjectsWithActions = React.useMemo(()=>subjects.map(({ uid, label, properties })=>{
30
28
  const availableActions = actions.map((action)=>({
31
29
  ...action,
32
30
  isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1
33
31
  }));
32
+ return {
33
+ uid,
34
+ label,
35
+ properties,
36
+ availableActions
37
+ };
38
+ }), [
39
+ subjects,
40
+ actions
41
+ ]);
42
+ return /*#__PURE__*/ jsx(Fragment, {
43
+ children: subjectsWithActions.map(({ uid, label, properties, availableActions }, index)=>{
44
+ const isActive = collapseToOpen === uid;
34
45
  return /*#__PURE__*/ jsxs(Flex, {
35
46
  direction: "column",
36
47
  display: "inline-flex",
@@ -48,7 +59,8 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
48
59
  pathToData: [
49
60
  pathToData,
50
61
  uid
51
- ].join('..')
62
+ ].join('..'),
63
+ subject: uid
52
64
  }),
53
65
  isActive && properties.map(({ label: propertyLabel, value, children: childrenForm })=>{
54
66
  return /*#__PURE__*/ jsx(CollapsePropertyMatrix, {
@@ -60,7 +72,8 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
60
72
  pathToData,
61
73
  uid
62
74
  ].join('..'),
63
- propertyName: value
75
+ propertyName: value,
76
+ subject: uid
64
77
  }, value);
65
78
  })
66
79
  ]
@@ -68,9 +81,9 @@ const ContentTypeCollapses = ({ actions = [], isFormDisabled, pathToData, subjec
68
81
  })
69
82
  });
70
83
  };
71
- const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isFormDisabled = false, label, onClickToggle, pathToData })=>{
84
+ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isFormDisabled = false, label, onClickToggle, pathToData, subject })=>{
72
85
  const { formatMessage } = useIntl();
73
- const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } = usePermissionsDataManager();
86
+ const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox, checkUserHasPermission, userPermissions } = usePermissionsDataManager();
74
87
  const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);
75
88
  // This corresponds to the data related to the CT left checkbox
76
89
  // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }
@@ -131,6 +144,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
131
144
  return /*#__PURE__*/ jsx(HiddenAction, {}, actionId);
132
145
  }
133
146
  const { hasConditions, hasAllActionsSelected, isParentCheckbox, checkboxName, label: permissionLabel } = restAction;
147
+ const userHasPermission = checkUserHasPermission(actionId, subject);
134
148
  if (isParentCheckbox) {
135
149
  return /*#__PURE__*/ jsx(Cell, {
136
150
  justifyContent: "center",
@@ -150,7 +164,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
150
164
  background: "primary600"
151
165
  }),
152
166
  /*#__PURE__*/ jsx(Checkbox, {
153
- disabled: isFormDisabled,
167
+ disabled: isFormDisabled || !userHasPermission,
154
168
  name: checkboxName,
155
169
  "aria-label": formatMessage({
156
170
  id: `Settings.permissions.select-by-permission`,
@@ -188,7 +202,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
188
202
  background: "primary600"
189
203
  }),
190
204
  /*#__PURE__*/ jsx(Checkbox, {
191
- disabled: isFormDisabled,
205
+ disabled: isFormDisabled || !userHasPermission,
192
206
  name: checkboxName,
193
207
  // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91
194
208
  onCheckedChange: (value)=>{
@@ -229,6 +243,7 @@ const Collapse = ({ availableActions = [], isActive = false, isGrey = false, isF
229
243
  ],
230
244
  actions: checkboxesActions,
231
245
  isFormDisabled: isFormDisabled,
246
+ isReadOnly: userPermissions !== undefined,
232
247
  onClose: ()=>{
233
248
  setIsConditionModalOpen(false);
234
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContentTypeCollapses.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, BoxComponent, Flex, FlexComponent, Modal } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nimport { Action, Subject } from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, rowHeight } from '../utils/constants';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ConditionForm } from '../utils/forms';\nimport { getCheckboxState } from '../utils/getCheckboxState';\n\nimport { CollapsePropertyMatrix } from './CollapsePropertyMatrix';\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\nimport { HiddenAction } from './HiddenAction';\nimport { RowLabelWithCheckbox, RowLabelWithCheckboxProps } from './RowLabelWithCheckbox';\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypeCollapses\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentTypeCollapsesProps extends Pick<CollapseProps, 'pathToData'> {\n actions?: Action[];\n isFormDisabled?: boolean;\n subjects?: Subject[];\n}\n\nconst ContentTypeCollapses = ({\n actions = [],\n isFormDisabled,\n pathToData,\n subjects = [],\n}: ContentTypeCollapsesProps) => {\n const [collapseToOpen, setCollapseToOpen] = React.useState<string | null>(null);\n\n const handleClickToggleCollapse = (collapseName: string) => () => {\n const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;\n\n setCollapseToOpen(nextCollapseToOpen);\n };\n\n return (\n <>\n {subjects.map(({ uid, label, properties }, index) => {\n const isActive = collapseToOpen === uid;\n const availableActions = actions.map((action) => ({\n ...action,\n isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1,\n }));\n return (\n <Flex\n key={uid}\n direction=\"column\"\n display=\"inline-flex\"\n alignItems=\"stretch\"\n minWidth=\"100%\"\n borderColor={isActive ? 'primary600' : undefined}\n >\n <Collapse\n availableActions={availableActions}\n isActive={isActive}\n isGrey={index % 2 === 0}\n isFormDisabled={isFormDisabled}\n label={label}\n onClickToggle={handleClickToggleCollapse(uid)}\n pathToData={[pathToData, uid].join('..')}\n />\n {isActive &&\n properties.map(({ label: propertyLabel, value, children: childrenForm }) => {\n return (\n <CollapsePropertyMatrix\n availableActions={availableActions}\n childrenForm={childrenForm}\n isFormDisabled={isFormDisabled}\n label={propertyLabel}\n pathToData={[pathToData, uid].join('..')}\n propertyName={value}\n key={value}\n />\n );\n })}\n </Flex>\n );\n })}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Collapse\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CollapseProps\n extends Pick<RowLabelWithCheckboxProps, 'isActive' | 'isFormDisabled' | 'label'> {\n availableActions?: Array<Action & { isDisplayed: boolean }>;\n isGrey?: boolean;\n onClickToggle: RowLabelWithCheckboxProps['onClick'];\n pathToData: string;\n}\n\nconst Collapse = ({\n availableActions = [],\n isActive = false,\n isGrey = false,\n isFormDisabled = false,\n label,\n onClickToggle,\n pathToData,\n}: CollapseProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n\n // This corresponds to the data related to the CT left checkbox\n // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }\n const mainData = get(modifiedData, pathToData.split('..'), {});\n // The utils we are using: getCheckboxState, retrieves all the boolean leafs of an object in order\n // to return the state of checkbox. Since the conditions are not related to the property we need to remove the key from the object.\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<Record<string, ConditionForm>>((acc, current) => {\n acc[current] = omit(mainData[current], 'conditions');\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // Here we create an array of <checkbox>, since the state of each one of them is used in\n // order to know if whether or not we need to display the associated action in\n // the <ConditionsModal />\n const checkboxesActions = React.useMemo(() => {\n return generateCheckboxesActions(availableActions, modifiedData, pathToData);\n }, [availableActions, modifiedData, pathToData]);\n\n // @ts-expect-error – hasConditions does not exist on all versions of checkboxesActions.\n const doesConditionButtonHasConditions = checkboxesActions.some((action) => action.hasConditions);\n\n return (\n <BoxWrapper $isActive={isActive}>\n <Wrapper\n height={rowHeight}\n flex={1}\n alignItems=\"center\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n >\n <RowLabelWithCheckbox\n isCollapsable\n isFormDisabled={isFormDisabled}\n label={capitalise(label)}\n checkboxName={pathToData}\n onChange={onChangeParentCheckbox}\n onClick={onClickToggle}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n <Chevron paddingLeft={2}>{isActive ? <ChevronUp /> : <ChevronDown />}</Chevron>\n </RowLabelWithCheckbox>\n\n <Flex style={{ flex: 1 }}>\n {checkboxesActions.map(\n ({ actionId, hasSomeActionsSelected, isDisplayed, ...restAction }) => {\n if (!isDisplayed) {\n return <HiddenAction key={actionId} />;\n }\n\n const {\n hasConditions,\n hasAllActionsSelected,\n isParentCheckbox,\n checkboxName,\n label: permissionLabel,\n } = restAction as VisibleCheckboxAction;\n\n if (isParentCheckbox) {\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n <Box position=\"relative\" zIndex={1}>\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${permissionLabel} ${label}` }\n )}\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: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n />\n </Box>\n </Cell>\n );\n }\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled}\n name={checkboxName}\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={hasConditions ? 'indeterminate' : hasAllActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n </Wrapper>\n <Box bottom=\"10px\" right=\"9px\" position=\"absolute\">\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesConditionButtonHasConditions} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[label, 'Settings.permissions.conditions.conditions']}\n actions={checkboxesActions}\n isFormDisabled={isFormDisabled}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Box>\n </BoxWrapper>\n );\n};\n\ninterface VisibleCheckboxAction {\n actionId: string;\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n isDisplayed: true;\n isParentCheckbox: boolean;\n checkboxName: string;\n label: string;\n hasConditions: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface HiddenCheckboxAction {\n actionId: string;\n isDisplayed: false;\n hasAllActionsSelected?: never;\n hasSomeActionsSelected: boolean;\n}\n\nconst generateCheckboxesActions = (\n availableActions: Array<Action & { isDisplayed: boolean }>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n pathToData: string\n): Array<VisibleCheckboxAction | HiddenCheckboxAction> => {\n return availableActions.map(({ actionId, isDisplayed, applyToProperties, label }) => {\n if (!isDisplayed) {\n return { actionId, hasSomeActionsSelected: false, isDisplayed };\n }\n\n const baseCheckboxNameArray = [...pathToData.split('..'), actionId];\n const checkboxNameArray = isEmpty(applyToProperties)\n ? [...baseCheckboxNameArray, 'properties', 'enabled']\n : baseCheckboxNameArray;\n const conditionsValue = get(modifiedData, [...baseCheckboxNameArray, 'conditions'], null);\n\n const baseCheckboxAction = {\n actionId,\n checkboxName: checkboxNameArray.join('..'),\n hasConditions: createArrayOfValues(conditionsValue).some((val) => val),\n isDisplayed,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n\n if (isEmpty(applyToProperties)) {\n const value = get(modifiedData, checkboxNameArray, false);\n\n // Since applyToProperties is empty it is not a parent checkbox, therefore hasAllActionsSelected is\n // equal to hasSomeActionsSelected\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected: value,\n hasSomeActionsSelected: value,\n isParentCheckbox: false,\n };\n }\n\n const mainData = get(modifiedData, checkboxNameArray, null);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(mainData);\n\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected,\n hasSomeActionsSelected,\n isParentCheckbox: true,\n };\n });\n};\n\nconst activeRowStyle = (theme: DefaultTheme, isActive?: boolean): string => `\n ${Wrapper} {\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary600};\n border-radius: ${isActive ? '2px 2px 0 0' : '2px'};\n font-weight: ${theme.fontWeights.bold};\n }\n\n ${Chevron} {\n display: flex;\n }\n ${ConditionsButton} {\n display: block;\n }\n\n &:focus-within {\n ${() => activeRowStyle(theme, isActive)}\n }\n`;\n\nconst Wrapper = styled<FlexComponent>(Flex)`\n border: 1px solid transparent;\n`;\n\nconst BoxWrapper = styled.div<{ $isActive: boolean }>`\n display: inline-flex;\n min-width: 100%;\n position: relative;\n\n ${ConditionsButton} {\n display: none;\n }\n\n ${({ $isActive, theme }) => $isActive && activeRowStyle(theme, $isActive)}\n\n &:hover {\n ${({ theme, $isActive }) => activeRowStyle(theme, $isActive)}\n }\n`;\n\nconst Cell = styled<FlexComponent>(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Chevron = styled<BoxComponent>(Box)`\n display: none;\n\n svg {\n width: 1.4rem;\n }\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ContentTypeCollapses };\nexport type { ContentTypeCollapsesProps, HiddenCheckboxAction, VisibleCheckboxAction };\n"],"names":["ContentTypeCollapses","actions","isFormDisabled","pathToData","subjects","collapseToOpen","setCollapseToOpen","React","useState","handleClickToggleCollapse","collapseName","nextCollapseToOpen","_jsx","_Fragment","map","uid","label","properties","index","isActive","availableActions","action","isDisplayed","Array","isArray","indexOf","_jsxs","Flex","direction","display","alignItems","minWidth","borderColor","undefined","Collapse","isGrey","onClickToggle","join","propertyLabel","value","children","childrenForm","CollapsePropertyMatrix","propertyName","formatMessage","useIntl","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","mainData","get","split","dataWithoutCondition","useMemo","Object","keys","reduce","acc","current","omit","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","checkboxesActions","generateCheckboxesActions","doesConditionButtonHasConditions","some","hasConditions","BoxWrapper","$isActive","Wrapper","height","rowHeight","flex","background","RowLabelWithCheckbox","isCollapsable","capitalise","checkboxName","onChange","onClick","someChecked","Chevron","paddingLeft","ChevronUp","ChevronDown","style","actionId","restAction","HiddenAction","isParentCheckbox","permissionLabel","Cell","justifyContent","Box","position","zIndex","tag","top","left","width","borderRadius","Checkbox","disabled","name","aria-label","id","defaultMessage","onCheckedChange","target","checked","bottom","right","Modal","Root","open","onOpenChange","prev","Trigger","ConditionsButton","ConditionsModal","headerBreadCrumbs","onClose","applyToProperties","baseCheckboxNameArray","checkboxNameArray","isEmpty","conditionsValue","baseCheckboxAction","createArrayOfValues","val","pathToConditionsObject","activeRowStyle","theme","colors","primary100","primary600","fontWeights","bold","styled","div","cellWidth"],"mappings":"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"}
1
+ {"version":3,"file":"ContentTypeCollapses.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, BoxComponent, Flex, FlexComponent, Modal } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport omit from 'lodash/omit';\nimport { useIntl } from 'react-intl';\nimport { styled, DefaultTheme } from 'styled-components';\n\nimport { Action, Subject } from '../../../../../../../shared/contracts/permissions';\nimport { capitalise } from '../../../../../utils/strings';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, rowHeight } from '../utils/constants';\nimport { createArrayOfValues } from '../utils/createArrayOfValues';\nimport { ConditionForm } from '../utils/forms';\nimport { getCheckboxState } from '../utils/getCheckboxState';\n\nimport { CollapsePropertyMatrix } from './CollapsePropertyMatrix';\nimport { ConditionsButton } from './ConditionsButton';\nimport { ConditionsModal } from './ConditionsModal';\nimport { HiddenAction } from './HiddenAction';\nimport { RowLabelWithCheckbox, RowLabelWithCheckboxProps } from './RowLabelWithCheckbox';\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypeCollapses\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentTypeCollapsesProps extends Pick<CollapseProps, 'pathToData'> {\n actions?: Action[];\n isFormDisabled?: boolean;\n subjects?: Subject[];\n}\n\nconst ContentTypeCollapses = ({\n actions = [],\n isFormDisabled,\n pathToData,\n subjects = [],\n}: ContentTypeCollapsesProps) => {\n const [collapseToOpen, setCollapseToOpen] = React.useState<string | null>(null);\n\n const handleClickToggleCollapse = (collapseName: string) => () => {\n const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;\n\n setCollapseToOpen(nextCollapseToOpen);\n };\n\n const subjectsWithActions = React.useMemo(\n () =>\n subjects.map(({ uid, label, properties }) => {\n const availableActions = actions.map((action) => ({\n ...action,\n isDisplayed: Array.isArray(action.subjects) && action.subjects.indexOf(uid) !== -1,\n }));\n return { uid, label, properties, availableActions };\n }),\n [subjects, actions]\n );\n\n return (\n <>\n {subjectsWithActions.map(({ uid, label, properties, availableActions }, index) => {\n const isActive = collapseToOpen === uid;\n return (\n <Flex\n key={uid}\n direction=\"column\"\n display=\"inline-flex\"\n alignItems=\"stretch\"\n minWidth=\"100%\"\n borderColor={isActive ? 'primary600' : undefined}\n >\n <Collapse\n availableActions={availableActions}\n isActive={isActive}\n isGrey={index % 2 === 0}\n isFormDisabled={isFormDisabled}\n label={label}\n onClickToggle={handleClickToggleCollapse(uid)}\n pathToData={[pathToData, uid].join('..')}\n subject={uid}\n />\n {isActive &&\n properties.map(({ label: propertyLabel, value, children: childrenForm }) => {\n return (\n <CollapsePropertyMatrix\n availableActions={availableActions}\n childrenForm={childrenForm}\n isFormDisabled={isFormDisabled}\n label={propertyLabel}\n pathToData={[pathToData, uid].join('..')}\n propertyName={value}\n key={value}\n subject={uid}\n />\n );\n })}\n </Flex>\n );\n })}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Collapse\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CollapseProps\n extends Pick<RowLabelWithCheckboxProps, 'isActive' | 'isFormDisabled' | 'label'> {\n availableActions?: Array<Action & { isDisplayed: boolean }>;\n isGrey?: boolean;\n onClickToggle: RowLabelWithCheckboxProps['onClick'];\n pathToData: string;\n subject: string;\n}\n\nconst Collapse = ({\n availableActions = [],\n isActive = false,\n isGrey = false,\n isFormDisabled = false,\n label,\n onClickToggle,\n pathToData,\n subject,\n}: CollapseProps) => {\n const { formatMessage } = useIntl();\n const {\n modifiedData,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n checkUserHasPermission,\n userPermissions,\n } = usePermissionsDataManager();\n const [isConditionModalOpen, setIsConditionModalOpen] = React.useState(false);\n\n // This corresponds to the data related to the CT left checkbox\n // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }\n const mainData = get(modifiedData, pathToData.split('..'), {});\n // The utils we are using: getCheckboxState, retrieves all the boolean leafs of an object in order\n // to return the state of checkbox. Since the conditions are not related to the property we need to remove the key from the object.\n const dataWithoutCondition = React.useMemo(() => {\n return Object.keys(mainData).reduce<Record<string, ConditionForm>>((acc, current) => {\n acc[current] = omit(mainData[current], 'conditions');\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // Here we create an array of <checkbox>, since the state of each one of them is used in\n // order to know if whether or not we need to display the associated action in\n // the <ConditionsModal />\n const checkboxesActions = React.useMemo(() => {\n return generateCheckboxesActions(availableActions, modifiedData, pathToData);\n }, [availableActions, modifiedData, pathToData]);\n\n // @ts-expect-error – hasConditions does not exist on all versions of checkboxesActions.\n const doesConditionButtonHasConditions = checkboxesActions.some((action) => action.hasConditions);\n\n return (\n <BoxWrapper $isActive={isActive}>\n <Wrapper\n height={rowHeight}\n flex={1}\n alignItems=\"center\"\n background={isGrey ? 'neutral100' : 'neutral0'}\n >\n <RowLabelWithCheckbox\n isCollapsable\n isFormDisabled={isFormDisabled}\n label={capitalise(label)}\n checkboxName={pathToData}\n onChange={onChangeParentCheckbox}\n onClick={onClickToggle}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n <Chevron paddingLeft={2}>{isActive ? <ChevronUp /> : <ChevronDown />}</Chevron>\n </RowLabelWithCheckbox>\n\n <Flex style={{ flex: 1 }}>\n {checkboxesActions.map(\n ({ actionId, hasSomeActionsSelected, isDisplayed, ...restAction }) => {\n if (!isDisplayed) {\n return <HiddenAction key={actionId} />;\n }\n\n const {\n hasConditions,\n hasAllActionsSelected,\n isParentCheckbox,\n checkboxName,\n label: permissionLabel,\n } = restAction as VisibleCheckboxAction;\n\n const userHasPermission = checkUserHasPermission(actionId, subject);\n\n if (isParentCheckbox) {\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n <Box position=\"relative\" zIndex={1}>\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled || !userHasPermission}\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${permissionLabel} ${label}` }\n )}\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: checkboxName,\n value: !!value,\n },\n });\n }}\n checked={hasSomeActionsSelected ? 'indeterminate' : hasAllActionsSelected}\n />\n </Box>\n </Cell>\n );\n }\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && (\n <Box\n tag=\"span\"\n position=\"absolute\"\n top=\"-6px\"\n left=\"37px\"\n width=\"6px\"\n height=\"6px\"\n borderRadius=\"20px\"\n background=\"primary600\"\n />\n )}\n <Checkbox\n disabled={isFormDisabled || !userHasPermission}\n name={checkboxName}\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={hasConditions ? 'indeterminate' : hasAllActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n </Wrapper>\n <Box bottom=\"10px\" right=\"9px\" position=\"absolute\">\n <Modal.Root\n open={isConditionModalOpen}\n onOpenChange={() => {\n setIsConditionModalOpen((prev) => !prev);\n }}\n >\n <Modal.Trigger>\n <ConditionsButton hasConditions={doesConditionButtonHasConditions} />\n </Modal.Trigger>\n <ConditionsModal\n headerBreadCrumbs={[label, 'Settings.permissions.conditions.conditions']}\n actions={checkboxesActions}\n isFormDisabled={isFormDisabled}\n isReadOnly={userPermissions !== undefined}\n onClose={() => {\n setIsConditionModalOpen(false);\n }}\n />\n </Modal.Root>\n </Box>\n </BoxWrapper>\n );\n};\n\ninterface VisibleCheckboxAction {\n actionId: string;\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n isDisplayed: true;\n isParentCheckbox: boolean;\n checkboxName: string;\n label: string;\n hasConditions: boolean;\n pathToConditionsObject: string[];\n}\n\ninterface HiddenCheckboxAction {\n actionId: string;\n isDisplayed: false;\n hasAllActionsSelected?: never;\n hasSomeActionsSelected: boolean;\n}\n\nconst generateCheckboxesActions = (\n availableActions: Array<Action & { isDisplayed: boolean }>,\n modifiedData: PermissionsDataManagerContextValue['modifiedData'],\n pathToData: string\n): Array<VisibleCheckboxAction | HiddenCheckboxAction> => {\n return availableActions.map(({ actionId, isDisplayed, applyToProperties, label }) => {\n if (!isDisplayed) {\n return { actionId, hasSomeActionsSelected: false, isDisplayed };\n }\n\n const baseCheckboxNameArray = [...pathToData.split('..'), actionId];\n const checkboxNameArray = isEmpty(applyToProperties)\n ? [...baseCheckboxNameArray, 'properties', 'enabled']\n : baseCheckboxNameArray;\n const conditionsValue = get(modifiedData, [...baseCheckboxNameArray, 'conditions'], null);\n\n const baseCheckboxAction = {\n actionId,\n checkboxName: checkboxNameArray.join('..'),\n hasConditions: createArrayOfValues(conditionsValue).some((val) => val),\n isDisplayed,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n\n if (isEmpty(applyToProperties)) {\n const value = get(modifiedData, checkboxNameArray, false);\n\n // Since applyToProperties is empty it is not a parent checkbox, therefore hasAllActionsSelected is\n // equal to hasSomeActionsSelected\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected: value,\n hasSomeActionsSelected: value,\n isParentCheckbox: false,\n };\n }\n\n const mainData = get(modifiedData, checkboxNameArray, null);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(mainData);\n\n return {\n ...baseCheckboxAction,\n hasAllActionsSelected,\n hasSomeActionsSelected,\n isParentCheckbox: true,\n };\n });\n};\n\nconst activeRowStyle = (theme: DefaultTheme, isActive?: boolean): string => `\n ${Wrapper} {\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary600};\n border-radius: ${isActive ? '2px 2px 0 0' : '2px'};\n font-weight: ${theme.fontWeights.bold};\n }\n\n ${Chevron} {\n display: flex;\n }\n ${ConditionsButton} {\n display: block;\n }\n\n &:focus-within {\n ${() => activeRowStyle(theme, isActive)}\n }\n`;\n\nconst Wrapper = styled<FlexComponent>(Flex)`\n border: 1px solid transparent;\n`;\n\nconst BoxWrapper = styled.div<{ $isActive: boolean }>`\n display: inline-flex;\n min-width: 100%;\n position: relative;\n\n ${ConditionsButton} {\n display: none;\n }\n\n ${({ $isActive, theme }) => $isActive && activeRowStyle(theme, $isActive)}\n\n &:hover {\n ${({ theme, $isActive }) => activeRowStyle(theme, $isActive)}\n }\n`;\n\nconst Cell = styled<FlexComponent>(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Chevron = styled<BoxComponent>(Box)`\n display: none;\n\n svg {\n width: 1.4rem;\n }\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nexport { ContentTypeCollapses };\nexport type { ContentTypeCollapsesProps, HiddenCheckboxAction, VisibleCheckboxAction };\n"],"names":["ContentTypeCollapses","actions","isFormDisabled","pathToData","subjects","collapseToOpen","setCollapseToOpen","React","useState","handleClickToggleCollapse","collapseName","nextCollapseToOpen","subjectsWithActions","useMemo","map","uid","label","properties","availableActions","action","isDisplayed","Array","isArray","indexOf","_jsx","_Fragment","index","isActive","_jsxs","Flex","direction","display","alignItems","minWidth","borderColor","undefined","Collapse","isGrey","onClickToggle","join","subject","propertyLabel","value","children","childrenForm","CollapsePropertyMatrix","propertyName","formatMessage","useIntl","modifiedData","onChangeParentCheckbox","onChangeSimpleCheckbox","checkUserHasPermission","userPermissions","usePermissionsDataManager","isConditionModalOpen","setIsConditionModalOpen","mainData","get","split","dataWithoutCondition","Object","keys","reduce","acc","current","omit","hasAllActionsSelected","hasSomeActionsSelected","getCheckboxState","checkboxesActions","generateCheckboxesActions","doesConditionButtonHasConditions","some","hasConditions","BoxWrapper","$isActive","Wrapper","height","rowHeight","flex","background","RowLabelWithCheckbox","isCollapsable","capitalise","checkboxName","onChange","onClick","someChecked","Chevron","paddingLeft","ChevronUp","ChevronDown","style","actionId","restAction","HiddenAction","isParentCheckbox","permissionLabel","userHasPermission","Cell","justifyContent","Box","position","zIndex","tag","top","left","width","borderRadius","Checkbox","disabled","name","aria-label","id","defaultMessage","onCheckedChange","target","checked","bottom","right","Modal","Root","open","onOpenChange","prev","Trigger","ConditionsButton","ConditionsModal","headerBreadCrumbs","isReadOnly","onClose","applyToProperties","baseCheckboxNameArray","checkboxNameArray","isEmpty","conditionsValue","baseCheckboxAction","createArrayOfValues","val","pathToConditionsObject","activeRowStyle","theme","colors","primary100","primary600","fontWeights","bold","styled","div","cellWidth"],"mappings":"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"}
@@ -31,7 +31,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
31
31
 
32
32
  const GlobalActions = ({ actions = [], isFormDisabled, kind })=>{
33
33
  const { formatMessage } = reactIntl.useIntl();
34
- const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager.usePermissionsDataManager();
34
+ const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox, checkUserHasPermission } = usePermissionsDataManager.usePermissionsDataManager();
35
35
  const displayedActions = actions.filter(({ subjects })=>subjects && subjects.length);
36
36
  const checkboxesState = React__namespace.useMemo(()=>{
37
37
  const actionsIds = displayedActions.map(({ actionId })=>actionId);
@@ -74,7 +74,9 @@ const GlobalActions = ({ actions = [], isFormDisabled, kind })=>{
74
74
  },
75
75
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
76
76
  gap: 0,
77
- children: displayedActions.map(({ label, actionId })=>{
77
+ children: displayedActions.map(({ label, actionId, subjects })=>{
78
+ const allSubjects = subjects || [];
79
+ const userHasPermissionForAll = allSubjects.length > 0 && allSubjects.every((subject)=>checkUserHasPermission(actionId, subject));
78
80
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
79
81
  shrink: 0,
80
82
  width: constants.cellWidth,
@@ -92,7 +94,7 @@ const GlobalActions = ({ actions = [], isFormDisabled, kind })=>{
92
94
  })
93
95
  }),
94
96
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Checkbox, {
95
- disabled: isFormDisabled,
97
+ disabled: isFormDisabled || !userHasPermissionForAll,
96
98
  onCheckedChange: (value)=>{
97
99
  onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);
98
100
  },
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalActions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId }) => {\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}
1
+ {"version":3,"file":"GlobalActions.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox, checkUserHasPermission } =\n usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId, subjects }) => {\n const allSubjects = subjects || [];\n const userHasPermissionForAll =\n allSubjects.length > 0 &&\n allSubjects.every((subject) => checkUserHasPermission(actionId, subject));\n\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled || !userHasPermissionForAll}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","checkUserHasPermission","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","allSubjects","userHasPermissionForAll","every","subject","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}
@@ -10,7 +10,7 @@ import { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData.
10
10
 
11
11
  const GlobalActions = ({ actions = [], isFormDisabled, kind })=>{
12
12
  const { formatMessage } = useIntl();
13
- const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();
13
+ const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox, checkUserHasPermission } = usePermissionsDataManager();
14
14
  const displayedActions = actions.filter(({ subjects })=>subjects && subjects.length);
15
15
  const checkboxesState = React.useMemo(()=>{
16
16
  const actionsIds = displayedActions.map(({ actionId })=>actionId);
@@ -53,7 +53,9 @@ const GlobalActions = ({ actions = [], isFormDisabled, kind })=>{
53
53
  },
54
54
  children: /*#__PURE__*/ jsx(Flex, {
55
55
  gap: 0,
56
- children: displayedActions.map(({ label, actionId })=>{
56
+ children: displayedActions.map(({ label, actionId, subjects })=>{
57
+ const allSubjects = subjects || [];
58
+ const userHasPermissionForAll = allSubjects.length > 0 && allSubjects.every((subject)=>checkUserHasPermission(actionId, subject));
57
59
  return /*#__PURE__*/ jsxs(Flex, {
58
60
  shrink: 0,
59
61
  width: cellWidth,
@@ -71,7 +73,7 @@ const GlobalActions = ({ actions = [], isFormDisabled, kind })=>{
71
73
  })
72
74
  }),
73
75
  /*#__PURE__*/ jsx(Checkbox, {
74
- disabled: isFormDisabled,
76
+ disabled: isFormDisabled || !userHasPermissionForAll,
75
77
  onCheckedChange: (value)=>{
76
78
  onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);
77
79
  },
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalActions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId }) => {\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}
1
+ {"version":3,"file":"GlobalActions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/GlobalActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Checkbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { Action } from '../../../../../../../shared/contracts/permissions';\nimport {\n PermissionsDataManagerContextValue,\n usePermissionsDataManager,\n} from '../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../utils/constants';\nimport { RecursiveRecordOfBooleans, getCheckboxState } from '../utils/getCheckboxState';\nimport { removeConditionKeyFromData } from '../utils/removeConditionKeyFromData';\n\ninterface GlobalActionsProps {\n actions: Action[];\n isFormDisabled?: boolean;\n kind: Extract<keyof PermissionsDataManagerContextValue['modifiedData'], `${string}Types`>;\n}\n\nconst GlobalActions = ({ actions = [], isFormDisabled, kind }: GlobalActionsProps) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox, checkUserHasPermission } =\n usePermissionsDataManager();\n\n const displayedActions = actions.filter(({ subjects }) => subjects && subjects.length);\n\n const checkboxesState = React.useMemo(() => {\n const actionsIds = displayedActions.map(({ actionId }) => actionId);\n\n const data = modifiedData[kind];\n\n const relatedActionsData = actionsIds.reduce<Record<string, RecursiveRecordOfBooleans>>(\n (acc, actionId) => {\n Object.keys(data).forEach((ctUid) => {\n const actionIdData = get(data, [ctUid, actionId]);\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData)! };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n },\n {}\n );\n\n const checkboxesState = Object.keys(relatedActionsData).reduce<\n Record<\n string,\n {\n hasAllActionsSelected: boolean;\n hasSomeActionsSelected: boolean;\n }\n >\n >((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId, subjects }) => {\n const allSubjects = subjects || [];\n const userHasPermissionForAll =\n allSubjects.length > 0 &&\n allSubjects.every((subject) => checkUserHasPermission(actionId, subject));\n\n return (\n <Flex\n shrink={0}\n width={cellWidth}\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Checkbox\n disabled={isFormDisabled || !userHasPermissionForAll}\n onCheckedChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, !!value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n checked={\n get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)\n ? 'indeterminate'\n : get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)\n }\n />\n </Flex>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nexport { GlobalActions };\nexport type { GlobalActionsProps };\n"],"names":["GlobalActions","actions","isFormDisabled","kind","formatMessage","useIntl","modifiedData","onChangeCollectionTypeGlobalActionCheckbox","checkUserHasPermission","usePermissionsDataManager","displayedActions","filter","subjects","length","checkboxesState","React","useMemo","actionsIds","map","actionId","data","relatedActionsData","reduce","acc","Object","keys","forEach","ctUid","actionIdData","get","actionIdState","removeConditionKeyFromData","current","getCheckboxState","_jsx","Box","paddingBottom","paddingTop","style","paddingLeft","firstRowWidth","Flex","gap","label","allSubjects","userHasPermissionForAll","every","subject","_jsxs","shrink","width","cellWidth","direction","alignItems","justifyContent","Typography","variant","textColor","id","toLowerCase","defaultMessage","Checkbox","disabled","onCheckedChange","value","name","aria-label","checked"],"mappings":"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"}