@strapi/plugin-users-permissions 0.0.0-next.f4ff842a3cb7b83db540bee67554b704e042b042 → 0.0.0-next.f5312617ca16b870c2bf1adcea2c69b676979e29

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 (246) hide show
  1. package/LICENSE +18 -3
  2. package/admin/src/components/BoundRoute/index.jsx +2 -2
  3. package/admin/src/components/FormModal/Input/index.jsx +32 -31
  4. package/admin/src/components/FormModal/index.jsx +57 -68
  5. package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.jsx +4 -3
  6. package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +13 -22
  7. package/admin/src/components/Permissions/index.jsx +27 -35
  8. package/admin/src/components/Permissions/reducer.js +1 -1
  9. package/admin/src/components/Policies/index.jsx +7 -5
  10. package/admin/src/components/UsersPermissions/index.jsx +15 -7
  11. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  12. package/admin/src/index.js +15 -32
  13. package/admin/src/pages/AdvancedSettings/index.jsx +83 -128
  14. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  15. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  16. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +119 -139
  17. package/admin/src/pages/EmailTemplates/components/EmailTable.jsx +20 -17
  18. package/admin/src/pages/EmailTemplates/index.jsx +36 -62
  19. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  20. package/admin/src/pages/Providers/index.jsx +98 -113
  21. package/admin/src/pages/Providers/utils/forms.js +23 -11
  22. package/admin/src/pages/Roles/constants.js +3 -3
  23. package/admin/src/pages/Roles/hooks/usePlugins.js +4 -4
  24. package/admin/src/pages/Roles/index.jsx +9 -18
  25. package/admin/src/pages/Roles/pages/CreatePage.jsx +53 -58
  26. package/admin/src/pages/Roles/pages/EditPage.jsx +63 -68
  27. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +27 -31
  28. package/admin/src/pages/Roles/pages/ListPage/index.jsx +79 -55
  29. package/admin/src/translations/en.json +1 -1
  30. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  31. package/dist/_chunks/{ar-t5qTFaAD.js → ar-BguGUqwK.js} +1 -1
  32. package/dist/_chunks/ar-BguGUqwK.js.map +1 -0
  33. package/dist/_chunks/{ar-MvD8Ghac.mjs → ar-CK8BRRXB.mjs} +1 -1
  34. package/dist/_chunks/ar-CK8BRRXB.mjs.map +1 -0
  35. package/dist/_chunks/{cs-BMuXwxA1.mjs → cs-BVigMk0l.mjs} +1 -1
  36. package/dist/_chunks/cs-BVigMk0l.mjs.map +1 -0
  37. package/dist/_chunks/{cs-I8N4u-Sd.js → cs-BW8-K_GY.js} +1 -1
  38. package/dist/_chunks/cs-BW8-K_GY.js.map +1 -0
  39. package/dist/_chunks/{de-zs2qqc0W.mjs → de-BKUdRFI4.mjs} +1 -1
  40. package/dist/_chunks/de-BKUdRFI4.mjs.map +1 -0
  41. package/dist/_chunks/{de-YTjtq89K.js → de-owXpVluI.js} +1 -1
  42. package/dist/_chunks/de-owXpVluI.js.map +1 -0
  43. package/dist/_chunks/{dk-HctVBMsG.mjs → dk-BQiTK50l.mjs} +1 -1
  44. package/dist/_chunks/dk-BQiTK50l.mjs.map +1 -0
  45. package/dist/_chunks/{dk-TF-dWjzl.js → dk-LXAnbuBk.js} +1 -1
  46. package/dist/_chunks/dk-LXAnbuBk.js.map +1 -0
  47. package/dist/_chunks/{en-CE3wEy_c.mjs → en-DOHtPf-2.mjs} +2 -2
  48. package/dist/_chunks/en-DOHtPf-2.mjs.map +1 -0
  49. package/dist/_chunks/{en-m608rMZx.js → en-MHo5mcsU.js} +2 -2
  50. package/dist/_chunks/en-MHo5mcsU.js.map +1 -0
  51. package/dist/_chunks/{es-XBQsB8_9.js → es-BwLCLXAQ.js} +1 -1
  52. package/dist/_chunks/es-BwLCLXAQ.js.map +1 -0
  53. package/dist/_chunks/{es-9381tih_.mjs → es-DNgOVMjD.mjs} +1 -1
  54. package/dist/_chunks/es-DNgOVMjD.mjs.map +1 -0
  55. package/dist/_chunks/{fr-CMSc77If.mjs → fr-DkgRugiU.mjs} +1 -1
  56. package/dist/_chunks/fr-DkgRugiU.mjs.map +1 -0
  57. package/dist/_chunks/{fr-6cz3U-IF.js → fr-DkhpSjjm.js} +1 -1
  58. package/dist/_chunks/fr-DkhpSjjm.js.map +1 -0
  59. package/dist/_chunks/{id-RJ934rq-.js → id-BTemOeTZ.js} +1 -1
  60. package/dist/_chunks/id-BTemOeTZ.js.map +1 -0
  61. package/dist/_chunks/{id-SDuyIkZa.mjs → id-BdEsvnaF.mjs} +1 -1
  62. package/dist/_chunks/id-BdEsvnaF.mjs.map +1 -0
  63. package/dist/_chunks/{index-rL_BoFHz.js → index-BH6NqE8I.js} +47 -51
  64. package/dist/_chunks/index-BH6NqE8I.js.map +1 -0
  65. package/dist/_chunks/index-C3i__jX-.js +281 -0
  66. package/dist/_chunks/index-C3i__jX-.js.map +1 -0
  67. package/dist/_chunks/{index--ch5E4_K.js → index-CFzpNgIL.js} +108 -106
  68. package/dist/_chunks/index-CFzpNgIL.js.map +1 -0
  69. package/dist/_chunks/index-CJUWqtrZ.mjs +344 -0
  70. package/dist/_chunks/index-CJUWqtrZ.mjs.map +1 -0
  71. package/dist/_chunks/index-CcWTKtCY.js +366 -0
  72. package/dist/_chunks/index-CcWTKtCY.js.map +1 -0
  73. package/dist/_chunks/{index-MuQRbm-o.mjs → index-CnX2wiLY.mjs} +239 -256
  74. package/dist/_chunks/index-CnX2wiLY.mjs.map +1 -0
  75. package/dist/_chunks/index-DUWx-KG9-C1E7ADbJ.mjs +11984 -0
  76. package/dist/_chunks/index-DUWx-KG9-C1E7ADbJ.mjs.map +1 -0
  77. package/dist/_chunks/index-DUWx-KG9-fMZ4nmrb.js +12008 -0
  78. package/dist/_chunks/index-DUWx-KG9-fMZ4nmrb.js.map +1 -0
  79. package/dist/_chunks/{index-WCv8yGzw.js → index-DruWuFWL.js} +255 -274
  80. package/dist/_chunks/index-DruWuFWL.js.map +1 -0
  81. package/dist/_chunks/index-PJoz36kJ.mjs +262 -0
  82. package/dist/_chunks/index-PJoz36kJ.mjs.map +1 -0
  83. package/dist/_chunks/{index-iu-7wU8h.mjs → index-R4R0dEOv.mjs} +46 -50
  84. package/dist/_chunks/index-R4R0dEOv.mjs.map +1 -0
  85. package/dist/_chunks/{index-eE2qjbfg.mjs → index-XOcQhJMB.mjs} +105 -103
  86. package/dist/_chunks/index-XOcQhJMB.mjs.map +1 -0
  87. package/dist/_chunks/{it-bvH7DgQo.mjs → it-B-rv0E24.mjs} +1 -1
  88. package/dist/_chunks/it-B-rv0E24.mjs.map +1 -0
  89. package/dist/_chunks/{it-YhZOlM2X.js → it-D1rH6V6_.js} +1 -1
  90. package/dist/_chunks/it-D1rH6V6_.js.map +1 -0
  91. package/dist/_chunks/{ja-o_-JPvQv.mjs → ja-C8K-VBPD.mjs} +1 -1
  92. package/dist/_chunks/ja-C8K-VBPD.mjs.map +1 -0
  93. package/dist/_chunks/{ja-xssHUXFv.js → ja-DqShgTMf.js} +1 -1
  94. package/dist/_chunks/ja-DqShgTMf.js.map +1 -0
  95. package/dist/_chunks/{ko-C3mHUSJa.js → ko-B9DGEPWH.js} +1 -1
  96. package/dist/_chunks/ko-B9DGEPWH.js.map +1 -0
  97. package/dist/_chunks/{ko-XJbPSez_.mjs → ko-Busb0wIY.mjs} +1 -1
  98. package/dist/_chunks/ko-Busb0wIY.mjs.map +1 -0
  99. package/dist/_chunks/{ms-II5Ea73J.mjs → ms-ByvsQjRt.mjs} +1 -1
  100. package/dist/_chunks/ms-ByvsQjRt.mjs.map +1 -0
  101. package/dist/_chunks/{ms-d0hfg65Z.js → ms-CPBU3LWf.js} +1 -1
  102. package/dist/_chunks/ms-CPBU3LWf.js.map +1 -0
  103. package/dist/_chunks/{nl-vEy6TN0K.mjs → nl-5qO8Rpcy.mjs} +1 -1
  104. package/dist/_chunks/nl-5qO8Rpcy.mjs.map +1 -0
  105. package/dist/_chunks/{nl-TA7TfK_5.js → nl-CwNB6YoO.js} +1 -1
  106. package/dist/_chunks/nl-CwNB6YoO.js.map +1 -0
  107. package/dist/_chunks/{pl-2VowaFGt.mjs → pl-BdIzifBE.mjs} +1 -1
  108. package/dist/_chunks/pl-BdIzifBE.mjs.map +1 -0
  109. package/dist/_chunks/{pl-0pUL9hdA.js → pl-Do9UD69f.js} +1 -1
  110. package/dist/_chunks/pl-Do9UD69f.js.map +1 -0
  111. package/dist/_chunks/{pt-Rf9W51IO.mjs → pt-BIO24ioG.mjs} +1 -1
  112. package/dist/_chunks/pt-BIO24ioG.mjs.map +1 -0
  113. package/dist/_chunks/{pt-BR-WNOhafR4.js → pt-BR-D7dZhxuP.js} +1 -1
  114. package/dist/_chunks/pt-BR-D7dZhxuP.js.map +1 -0
  115. package/dist/_chunks/{pt-BR-sS1Xp3Jt.mjs → pt-BR-f0p23AQZ.mjs} +1 -1
  116. package/dist/_chunks/pt-BR-f0p23AQZ.mjs.map +1 -0
  117. package/dist/_chunks/{pt-guNR9Gax.js → pt-fdvyOnUp.js} +1 -1
  118. package/dist/_chunks/pt-fdvyOnUp.js.map +1 -0
  119. package/dist/_chunks/{ru-X3BMXDds.js → ru-C94rjPGA.js} +1 -1
  120. package/dist/_chunks/ru-C94rjPGA.js.map +1 -0
  121. package/dist/_chunks/{ru-qKHnd5or.mjs → ru-VWy-IB7K.mjs} +1 -1
  122. package/dist/_chunks/ru-VWy-IB7K.mjs.map +1 -0
  123. package/dist/_chunks/{sk-NWPw1oTN.js → sk-BABEhykl.js} +1 -1
  124. package/dist/_chunks/sk-BABEhykl.js.map +1 -0
  125. package/dist/_chunks/{sk-_Ryr-eTT.mjs → sk-B_LIcepm.mjs} +1 -1
  126. package/dist/_chunks/sk-B_LIcepm.mjs.map +1 -0
  127. package/dist/_chunks/{sv-BqzScFXS.mjs → sv-ABLKOokl.mjs} +1 -1
  128. package/dist/_chunks/sv-ABLKOokl.mjs.map +1 -0
  129. package/dist/_chunks/{sv-76NnbB__.js → sv-Be43LhA9.js} +1 -1
  130. package/dist/_chunks/sv-Be43LhA9.js.map +1 -0
  131. package/dist/_chunks/{th-WsknMEpq.mjs → th-DKyP7ueR.mjs} +1 -1
  132. package/dist/_chunks/th-DKyP7ueR.mjs.map +1 -0
  133. package/dist/_chunks/{th-cbppX21D.js → th-DgVhVLhL.js} +1 -1
  134. package/dist/_chunks/th-DgVhVLhL.js.map +1 -0
  135. package/dist/_chunks/{tr-6mm_Fmz7.js → tr-B_idhkEs.js} +1 -1
  136. package/dist/_chunks/tr-B_idhkEs.js.map +1 -0
  137. package/dist/_chunks/{tr-_DB1F1GW.mjs → tr-qa1Q5UjC.mjs} +1 -1
  138. package/dist/_chunks/tr-qa1Q5UjC.mjs.map +1 -0
  139. package/dist/_chunks/{uk-yxMSQAwI.mjs → uk-BmRqbeQc.mjs} +1 -1
  140. package/dist/_chunks/uk-BmRqbeQc.mjs.map +1 -0
  141. package/dist/_chunks/{uk-sI2I1ogF.js → uk-LHOivnhP.js} +1 -1
  142. package/dist/_chunks/uk-LHOivnhP.js.map +1 -0
  143. package/dist/_chunks/{vi-A3zJxaiI.js → vi-CdVRdKDw.js} +1 -1
  144. package/dist/_chunks/vi-CdVRdKDw.js.map +1 -0
  145. package/dist/_chunks/{vi-xY0zCW3d.mjs → vi-HW-EdMea.mjs} +1 -1
  146. package/dist/_chunks/vi-HW-EdMea.mjs.map +1 -0
  147. package/dist/_chunks/{zh-OFeldzbX.mjs → zh-5hKkVPA4.mjs} +1 -1
  148. package/dist/_chunks/zh-5hKkVPA4.mjs.map +1 -0
  149. package/dist/_chunks/{zh-72SpmFXa.js → zh-Cuq8gMnF.js} +1 -1
  150. package/dist/_chunks/zh-Cuq8gMnF.js.map +1 -0
  151. package/dist/_chunks/{zh-Hans-E84cu4kP.mjs → zh-Hans-BHilK-yc.mjs} +1 -1
  152. package/dist/_chunks/zh-Hans-BHilK-yc.mjs.map +1 -0
  153. package/dist/_chunks/{zh-Hans-ArWWtyP4.js → zh-Hans-GQDMKtY4.js} +1 -1
  154. package/dist/_chunks/zh-Hans-GQDMKtY4.js.map +1 -0
  155. package/dist/admin/index.js +1 -2
  156. package/dist/admin/index.js.map +1 -1
  157. package/dist/admin/index.mjs +1 -2
  158. package/dist/admin/index.mjs.map +1 -1
  159. package/package.json +27 -28
  160. package/server/bootstrap/index.js +18 -51
  161. package/server/bootstrap/users-permissions-actions.js +6 -0
  162. package/server/content-types/user/index.js +0 -1
  163. package/server/controllers/auth.js +40 -59
  164. package/server/controllers/content-manager-user.js +28 -30
  165. package/server/controllers/role.js +17 -4
  166. package/server/controllers/user.js +8 -9
  167. package/server/controllers/validation/auth.js +81 -25
  168. package/server/middlewares/rateLimit.js +1 -1
  169. package/server/register.js +1 -1
  170. package/server/services/jwt.js +3 -3
  171. package/server/services/permission.js +3 -7
  172. package/server/services/providers-registry.js +468 -275
  173. package/server/services/providers.js +10 -5
  174. package/server/services/role.js +15 -13
  175. package/server/services/user.js +56 -19
  176. package/server/services/users-permissions.js +15 -13
  177. package/server/utils/index.d.ts +2 -1
  178. package/server/utils/sanitize/sanitizers.js +7 -3
  179. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  180. package/admin/src/pages/Roles/pages/ListPage/utils/api.js +0 -30
  181. package/dist/_chunks/ar-MvD8Ghac.mjs.map +0 -1
  182. package/dist/_chunks/ar-t5qTFaAD.js.map +0 -1
  183. package/dist/_chunks/cs-BMuXwxA1.mjs.map +0 -1
  184. package/dist/_chunks/cs-I8N4u-Sd.js.map +0 -1
  185. package/dist/_chunks/de-YTjtq89K.js.map +0 -1
  186. package/dist/_chunks/de-zs2qqc0W.mjs.map +0 -1
  187. package/dist/_chunks/dk-HctVBMsG.mjs.map +0 -1
  188. package/dist/_chunks/dk-TF-dWjzl.js.map +0 -1
  189. package/dist/_chunks/en-CE3wEy_c.mjs.map +0 -1
  190. package/dist/_chunks/en-m608rMZx.js.map +0 -1
  191. package/dist/_chunks/es-9381tih_.mjs.map +0 -1
  192. package/dist/_chunks/es-XBQsB8_9.js.map +0 -1
  193. package/dist/_chunks/fr-6cz3U-IF.js.map +0 -1
  194. package/dist/_chunks/fr-CMSc77If.mjs.map +0 -1
  195. package/dist/_chunks/id-RJ934rq-.js.map +0 -1
  196. package/dist/_chunks/id-SDuyIkZa.mjs.map +0 -1
  197. package/dist/_chunks/index--ch5E4_K.js.map +0 -1
  198. package/dist/_chunks/index-MuQRbm-o.mjs.map +0 -1
  199. package/dist/_chunks/index-UrkRT2rC.js +0 -320
  200. package/dist/_chunks/index-UrkRT2rC.js.map +0 -1
  201. package/dist/_chunks/index-WCv8yGzw.js.map +0 -1
  202. package/dist/_chunks/index-eE2qjbfg.mjs.map +0 -1
  203. package/dist/_chunks/index-iu-7wU8h.mjs.map +0 -1
  204. package/dist/_chunks/index-mCVPA90k.mjs +0 -385
  205. package/dist/_chunks/index-mCVPA90k.mjs.map +0 -1
  206. package/dist/_chunks/index-mNv7pSw-.js +0 -407
  207. package/dist/_chunks/index-mNv7pSw-.js.map +0 -1
  208. package/dist/_chunks/index-rL_BoFHz.js.map +0 -1
  209. package/dist/_chunks/index-xXp5S4OL.mjs +0 -301
  210. package/dist/_chunks/index-xXp5S4OL.mjs.map +0 -1
  211. package/dist/_chunks/it-YhZOlM2X.js.map +0 -1
  212. package/dist/_chunks/it-bvH7DgQo.mjs.map +0 -1
  213. package/dist/_chunks/ja-o_-JPvQv.mjs.map +0 -1
  214. package/dist/_chunks/ja-xssHUXFv.js.map +0 -1
  215. package/dist/_chunks/ko-C3mHUSJa.js.map +0 -1
  216. package/dist/_chunks/ko-XJbPSez_.mjs.map +0 -1
  217. package/dist/_chunks/ms-II5Ea73J.mjs.map +0 -1
  218. package/dist/_chunks/ms-d0hfg65Z.js.map +0 -1
  219. package/dist/_chunks/nl-TA7TfK_5.js.map +0 -1
  220. package/dist/_chunks/nl-vEy6TN0K.mjs.map +0 -1
  221. package/dist/_chunks/pl-0pUL9hdA.js.map +0 -1
  222. package/dist/_chunks/pl-2VowaFGt.mjs.map +0 -1
  223. package/dist/_chunks/pt-BR-WNOhafR4.js.map +0 -1
  224. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +0 -1
  225. package/dist/_chunks/pt-Rf9W51IO.mjs.map +0 -1
  226. package/dist/_chunks/pt-guNR9Gax.js.map +0 -1
  227. package/dist/_chunks/ru-X3BMXDds.js.map +0 -1
  228. package/dist/_chunks/ru-qKHnd5or.mjs.map +0 -1
  229. package/dist/_chunks/sk-NWPw1oTN.js.map +0 -1
  230. package/dist/_chunks/sk-_Ryr-eTT.mjs.map +0 -1
  231. package/dist/_chunks/sv-76NnbB__.js.map +0 -1
  232. package/dist/_chunks/sv-BqzScFXS.mjs.map +0 -1
  233. package/dist/_chunks/th-WsknMEpq.mjs.map +0 -1
  234. package/dist/_chunks/th-cbppX21D.js.map +0 -1
  235. package/dist/_chunks/tr-6mm_Fmz7.js.map +0 -1
  236. package/dist/_chunks/tr-_DB1F1GW.mjs.map +0 -1
  237. package/dist/_chunks/uk-sI2I1ogF.js.map +0 -1
  238. package/dist/_chunks/uk-yxMSQAwI.mjs.map +0 -1
  239. package/dist/_chunks/vi-A3zJxaiI.js.map +0 -1
  240. package/dist/_chunks/vi-xY0zCW3d.mjs.map +0 -1
  241. package/dist/_chunks/zh-72SpmFXa.js.map +0 -1
  242. package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +0 -1
  243. package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +0 -1
  244. package/dist/_chunks/zh-OFeldzbX.mjs.map +0 -1
  245. package/server/bootstrap/grant-config.js +0 -140
  246. package/strapi-server.js +0 -3
@@ -1,11 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
 
3
3
  import {
4
- ActionLayout,
5
- ContentLayout,
6
- HeaderLayout,
7
- Layout,
8
- Main,
9
4
  Table,
10
5
  Th,
11
6
  Thead,
@@ -13,50 +8,47 @@ import {
13
8
  Typography,
14
9
  useNotifyAT,
15
10
  VisuallyHidden,
16
- } from '@strapi/design-system';
17
- import {
18
- CheckPagePermissions,
19
- CheckPermissions,
20
- ConfirmDialog,
21
11
  EmptyStateLayout,
22
- LinkButton,
23
- LoadingIndicatorPage,
24
- NoPermissions,
25
- SearchURLQuery,
26
- SettingsPageTitle,
27
12
  useCollator,
28
13
  useFilter,
29
- useFocusWhenNavigate,
14
+ LinkButton,
15
+ Dialog,
16
+ } from '@strapi/design-system';
17
+ import { Plus } from '@strapi/icons';
18
+ import {
19
+ ConfirmDialog,
20
+ useTracking,
21
+ Page,
22
+ SearchInput,
30
23
  useNotification,
31
24
  useQueryParams,
25
+ useFetchClient,
32
26
  useRBAC,
33
- useTracking,
34
- } from '@strapi/helper-plugin';
35
- import { Plus } from '@strapi/icons';
27
+ Layouts,
28
+ } from '@strapi/strapi/admin';
36
29
  import { useIntl } from 'react-intl';
37
30
  import { useMutation, useQuery } from 'react-query';
31
+ import { NavLink } from 'react-router-dom';
38
32
 
39
33
  import { PERMISSIONS } from '../../../../constants';
40
34
  import { getTrad } from '../../../../utils';
41
35
 
42
36
  import TableBody from './components/TableBody';
43
- import { deleteData, fetchData } from './utils/api';
44
37
 
45
38
  export const RolesListPage = () => {
46
39
  const { trackUsage } = useTracking();
47
40
  const { formatMessage, locale } = useIntl();
48
- const toggleNotification = useNotification();
41
+ const { toggleNotification } = useNotification();
49
42
  const { notifyStatus } = useNotifyAT();
50
43
  const [{ query }] = useQueryParams();
51
44
  const _q = query?._q || '';
52
45
  const [showConfirmDelete, setShowConfirmDelete] = useState(false);
53
- const [isConfirmButtonLoading, setIsConfirmButtonLoading] = useState(false);
54
46
  const [roleToDelete, setRoleToDelete] = useState();
55
- useFocusWhenNavigate();
47
+ const { del, get } = useFetchClient();
56
48
 
57
49
  const {
58
50
  isLoading: isLoadingForPermissions,
59
- allowedActions: { canRead, canDelete },
51
+ allowedActions: { canRead, canDelete, canCreate, canUpdate },
60
52
  } = useRBAC({
61
53
  create: PERMISSIONS.createRole,
62
54
  read: PERMISSIONS.readRoles,
@@ -69,12 +61,12 @@ export const RolesListPage = () => {
69
61
  data: { roles },
70
62
  isFetching,
71
63
  refetch,
72
- } = useQuery('get-roles', () => fetchData(toggleNotification, notifyStatus), {
64
+ } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {
73
65
  initialData: {},
74
66
  enabled: canRead,
75
67
  });
76
68
 
77
- const { includes } = useFilter(locale, {
69
+ const { contains } = useFilter(locale, {
78
70
  sensitivity: 'base',
79
71
  });
80
72
 
@@ -85,12 +77,39 @@ export const RolesListPage = () => {
85
77
  sensitivity: 'base',
86
78
  });
87
79
 
88
- const isLoading = isLoadingForData || isFetching;
80
+ const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;
89
81
 
90
82
  const handleShowConfirmDelete = () => {
91
83
  setShowConfirmDelete(!showConfirmDelete);
92
84
  };
93
85
 
86
+ const deleteData = async (id, formatMessage, toggleNotification) => {
87
+ try {
88
+ await del(`/users-permissions/roles/${id}`);
89
+ } catch (error) {
90
+ toggleNotification({
91
+ type: 'danger',
92
+ message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),
93
+ });
94
+ }
95
+ };
96
+
97
+ const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {
98
+ try {
99
+ const { data } = await get('/users-permissions/roles');
100
+ notifyStatus('The roles have loaded successfully');
101
+
102
+ return data;
103
+ } catch (err) {
104
+ toggleNotification({
105
+ type: 'danger',
106
+ message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),
107
+ });
108
+
109
+ throw new Error(err);
110
+ }
111
+ };
112
+
94
113
  const emptyLayout = {
95
114
  roles: {
96
115
  id: getTrad('Roles.empty'),
@@ -107,21 +126,19 @@ export const RolesListPage = () => {
107
126
  defaultMessage: 'Roles',
108
127
  });
109
128
 
110
- const deleteMutation = useMutation((id) => deleteData(id, toggleNotification), {
129
+ const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {
111
130
  async onSuccess() {
112
131
  await refetch();
113
132
  },
114
133
  });
115
134
 
116
135
  const handleConfirmDelete = async () => {
117
- setIsConfirmButtonLoading(true);
118
136
  await deleteMutation.mutateAsync(roleToDelete);
119
137
  setShowConfirmDelete(!showConfirmDelete);
120
- setIsConfirmButtonLoading(false);
121
138
  };
122
139
 
123
140
  const sortedRoles = (roles || [])
124
- .filter((role) => includes(role.name, _q) || includes(role.description, _q))
141
+ .filter((role) => contains(role.name, _q) || contains(role.description, _q))
125
142
  .sort(
126
143
  (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)
127
144
  );
@@ -131,11 +148,20 @@ export const RolesListPage = () => {
131
148
  const colCount = 4;
132
149
  const rowCount = (roles?.length || 0) + 1;
133
150
 
151
+ if (isLoading) {
152
+ return <Page.Loading />;
153
+ }
154
+
134
155
  return (
135
- <Layout>
136
- <SettingsPageTitle name={pageTitle} />
137
- <Main aria-busy={isLoading}>
138
- <HeaderLayout
156
+ <Layouts.Root>
157
+ <Page.Title>
158
+ {formatMessage(
159
+ { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
160
+ { name: pageTitle }
161
+ )}
162
+ </Page.Title>
163
+ <Page.Main>
164
+ <Layouts.Header
139
165
  title={formatMessage({
140
166
  id: 'global.roles',
141
167
  defaultMessage: 'Roles',
@@ -145,9 +171,10 @@ export const RolesListPage = () => {
145
171
  defaultMessage: 'List of roles',
146
172
  })}
147
173
  primaryAction={
148
- <CheckPermissions permissions={PERMISSIONS.createRole}>
174
+ canCreate ? (
149
175
  <LinkButton
150
- to="/settings/users-permissions/roles/new"
176
+ to="new"
177
+ tag={NavLink}
151
178
  onClick={() => trackUsage('willCreateRole')}
152
179
  startIcon={<Plus />}
153
180
  size="S"
@@ -157,13 +184,13 @@ export const RolesListPage = () => {
157
184
  defaultMessage: 'Add new role',
158
185
  })}
159
186
  </LinkButton>
160
- </CheckPermissions>
187
+ ) : null
161
188
  }
162
189
  />
163
190
 
164
- <ActionLayout
191
+ <Layouts.Action
165
192
  startActions={
166
- <SearchURLQuery
193
+ <SearchInput
167
194
  label={formatMessage({
168
195
  id: 'app.component.search.label',
169
196
  defaultMessage: 'Search',
@@ -172,9 +199,8 @@ export const RolesListPage = () => {
172
199
  }
173
200
  />
174
201
 
175
- <ContentLayout>
176
- {!canRead && <NoPermissions />}
177
- {(isLoading || isLoadingForPermissions) && <LoadingIndicatorPage />}
202
+ <Layouts.Content>
203
+ {!canRead && <Page.NoPermissions />}
178
204
  {canRead && sortedRoles && sortedRoles?.length ? (
179
205
  <Table colCount={colCount} rowCount={rowCount}>
180
206
  <Thead>
@@ -213,30 +239,28 @@ export const RolesListPage = () => {
213
239
  <TableBody
214
240
  sortedRoles={sortedRoles}
215
241
  canDelete={canDelete}
242
+ canUpdate={canUpdate}
216
243
  permissions={PERMISSIONS}
217
244
  setRoleToDelete={setRoleToDelete}
218
245
  onDelete={[showConfirmDelete, setShowConfirmDelete]}
219
246
  />
220
247
  </Table>
221
248
  ) : (
222
- <EmptyStateLayout content={emptyLayout[emptyContent]} />
249
+ <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />
223
250
  )}
224
- </ContentLayout>
225
- <ConfirmDialog
226
- isConfirmButtonLoading={isConfirmButtonLoading}
227
- onConfirm={handleConfirmDelete}
228
- onToggleDialog={handleShowConfirmDelete}
229
- isOpen={showConfirmDelete}
230
- />
231
- </Main>
232
- </Layout>
251
+ </Layouts.Content>
252
+ <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>
253
+ <ConfirmDialog onConfirm={handleConfirmDelete} />
254
+ </Dialog.Root>
255
+ </Page.Main>
256
+ </Layouts.Root>
233
257
  );
234
258
  };
235
259
 
236
260
  export const ProtectedRolesListPage = () => {
237
261
  return (
238
- <CheckPagePermissions permissions={PERMISSIONS.accessRoles}>
262
+ <Page.Protect permissions={PERMISSIONS.accessRoles}>
239
263
  <RolesListPage />
240
- </CheckPagePermissions>
264
+ </Page.Protect>
241
265
  );
242
266
  };
@@ -60,7 +60,7 @@
60
60
  "Settings.roles.deleted": "Role deleted",
61
61
  "Settings.roles.edited": "Role edited",
62
62
  "Settings.section-label": "Users & Permissions plugin",
63
- "components.Input.error.validation.email": "This is an invalid email",
63
+ "components.Input.error.validation.email": "This is not a valid email",
64
64
  "components.Input.error.validation.json": "This doesn't match the JSON format",
65
65
  "components.Input.error.validation.max": "The value is too high.",
66
66
  "components.Input.error.validation.maxLength": "The value is too long.",
@@ -0,0 +1,13 @@
1
+ const prefixPluginTranslations = (trad, pluginId) => {
2
+ if (!pluginId) {
3
+ throw new TypeError("pluginId can't be empty");
4
+ }
5
+
6
+ return Object.keys(trad).reduce((acc, current) => {
7
+ acc[`${pluginId}.${current}`] = trad[current];
8
+
9
+ return acc;
10
+ }, {});
11
+ };
12
+
13
+ export { prefixPluginTranslations };
@@ -41,4 +41,4 @@ const ar = {
41
41
  "plugin.name": "الأدوار والصلاحية"
42
42
  };
43
43
  exports.default = ar;
44
- //# sourceMappingURL=ar-t5qTFaAD.js.map
44
+ //# sourceMappingURL=ar-BguGUqwK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-BguGUqwK.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -41,4 +41,4 @@ const ar = {
41
41
  export {
42
42
  ar as default
43
43
  };
44
- //# sourceMappingURL=ar-MvD8Ghac.mjs.map
44
+ //# sourceMappingURL=ar-CK8BRRXB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-CK8BRRXB.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -47,4 +47,4 @@ const cs = {
47
47
  export {
48
48
  cs as default
49
49
  };
50
- //# sourceMappingURL=cs-BMuXwxA1.mjs.map
50
+ //# sourceMappingURL=cs-BVigMk0l.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cs-BVigMk0l.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -47,4 +47,4 @@ const cs = {
47
47
  "plugin.name": "Role a oprávnění"
48
48
  };
49
49
  exports.default = cs;
50
- //# sourceMappingURL=cs-I8N4u-Sd.js.map
50
+ //# sourceMappingURL=cs-BW8-K_GY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cs-BW8-K_GY.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -59,4 +59,4 @@ const de = {
59
59
  export {
60
60
  de as default
61
61
  };
62
- //# sourceMappingURL=de-zs2qqc0W.mjs.map
62
+ //# sourceMappingURL=de-BKUdRFI4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de-BKUdRFI4.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -59,4 +59,4 @@ const de = {
59
59
  "popUpWarning.warning.cancel": "Willst du wirklich alle deine Änderungen verwerfen?"
60
60
  };
61
61
  exports.default = de;
62
- //# sourceMappingURL=de-YTjtq89K.js.map
62
+ //# sourceMappingURL=de-owXpVluI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de-owXpVluI.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -83,4 +83,4 @@ const dk = {
83
83
  export {
84
84
  dk as default
85
85
  };
86
- //# sourceMappingURL=dk-HctVBMsG.mjs.map
86
+ //# sourceMappingURL=dk-BQiTK50l.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dk-BQiTK50l.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -83,4 +83,4 @@ const dk = {
83
83
  "popUpWarning.warning.cancel": "Er du sikker på at du vil annullere dine ændringer?"
84
84
  };
85
85
  exports.default = dk;
86
- //# sourceMappingURL=dk-TF-dWjzl.js.map
86
+ //# sourceMappingURL=dk-LXAnbuBk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dk-LXAnbuBk.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -60,7 +60,7 @@ const en = {
60
60
  "Settings.roles.deleted": "Role deleted",
61
61
  "Settings.roles.edited": "Role edited",
62
62
  "Settings.section-label": "Users & Permissions plugin",
63
- "components.Input.error.validation.email": "This is an invalid email",
63
+ "components.Input.error.validation.email": "This is not a valid email",
64
64
  "components.Input.error.validation.json": "This doesn't match the JSON format",
65
65
  "components.Input.error.validation.max": "The value is too high.",
66
66
  "components.Input.error.validation.maxLength": "The value is too long.",
@@ -83,4 +83,4 @@ const en = {
83
83
  export {
84
84
  en as default
85
85
  };
86
- //# sourceMappingURL=en-CE3wEy_c.mjs.map
86
+ //# sourceMappingURL=en-DOHtPf-2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-DOHtPf-2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -62,7 +62,7 @@ const en = {
62
62
  "Settings.roles.deleted": "Role deleted",
63
63
  "Settings.roles.edited": "Role edited",
64
64
  "Settings.section-label": "Users & Permissions plugin",
65
- "components.Input.error.validation.email": "This is an invalid email",
65
+ "components.Input.error.validation.email": "This is not a valid email",
66
66
  "components.Input.error.validation.json": "This doesn't match the JSON format",
67
67
  "components.Input.error.validation.max": "The value is too high.",
68
68
  "components.Input.error.validation.maxLength": "The value is too long.",
@@ -83,4 +83,4 @@ const en = {
83
83
  "popUpWarning.warning.cancel": "Are you sure you want to cancel your modifications?"
84
84
  };
85
85
  exports.default = en;
86
- //# sourceMappingURL=en-m608rMZx.js.map
86
+ //# sourceMappingURL=en-MHo5mcsU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-MHo5mcsU.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -83,4 +83,4 @@ const es = {
83
83
  "popUpWarning.warning.cancel": "¿Está seguro de que desea cancelar sus modificaciones?"
84
84
  };
85
85
  exports.default = es;
86
- //# sourceMappingURL=es-XBQsB8_9.js.map
86
+ //# sourceMappingURL=es-BwLCLXAQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es-BwLCLXAQ.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -83,4 +83,4 @@ const es = {
83
83
  export {
84
84
  es as default
85
85
  };
86
- //# sourceMappingURL=es-9381tih_.mjs.map
86
+ //# sourceMappingURL=es-DNgOVMjD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es-DNgOVMjD.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -47,4 +47,4 @@ const fr = {
47
47
  export {
48
48
  fr as default
49
49
  };
50
- //# sourceMappingURL=fr-CMSc77If.mjs.map
50
+ //# sourceMappingURL=fr-DkgRugiU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr-DkgRugiU.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -47,4 +47,4 @@ const fr = {
47
47
  "plugin.name": "Rôles et autorisations"
48
48
  };
49
49
  exports.default = fr;
50
- //# sourceMappingURL=fr-6cz3U-IF.js.map
50
+ //# sourceMappingURL=fr-DkhpSjjm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr-DkhpSjjm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -59,4 +59,4 @@ const id = {
59
59
  "popUpWarning.warning.cancel": "Anda yakin ingin membatalkan modifikasi Anda?"
60
60
  };
61
61
  exports.default = id;
62
- //# sourceMappingURL=id-RJ934rq-.js.map
62
+ //# sourceMappingURL=id-BTemOeTZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-BTemOeTZ.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -59,4 +59,4 @@ const id = {
59
59
  export {
60
60
  id as default
61
61
  };
62
- //# sourceMappingURL=id-SDuyIkZa.mjs.map
62
+ //# sourceMappingURL=id-BdEsvnaF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-BdEsvnaF.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}