@strapi/plugin-users-permissions 0.0.0-next.fd9757603c653ca239c45d6e28ab536d2dae0b39 → 0.0.0-next.fdac61dd05ca665168f51f655f1d165b55ec4231

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 (307) hide show
  1. package/.eslintignore +2 -1
  2. package/admin/src/components/BoundRoute/index.jsx +3 -3
  3. package/admin/src/components/FormModal/Input/index.jsx +33 -32
  4. package/admin/src/components/FormModal/index.jsx +58 -69
  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 +8 -6
  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 +17 -34
  13. package/admin/src/pages/AdvancedSettings/index.jsx +84 -129
  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 +120 -140
  17. package/admin/src/pages/EmailTemplates/components/EmailTable.jsx +21 -18
  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 +97 -112
  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 +10 -19
  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 +28 -32
  28. package/admin/src/pages/Roles/pages/ListPage/index.jsx +79 -55
  29. package/admin/src/pluginId.js +2 -2
  30. package/admin/src/translations/en.json +1 -1
  31. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  32. package/dist/admin/chunks/ar-BJwjobLp.js +45 -0
  33. package/dist/admin/chunks/ar-BJwjobLp.js.map +1 -0
  34. package/dist/admin/chunks/ar-G6bUGuUb.mjs +43 -0
  35. package/dist/admin/chunks/ar-G6bUGuUb.mjs.map +1 -0
  36. package/dist/admin/chunks/cs-Bu59JqhG.mjs +49 -0
  37. package/dist/admin/chunks/cs-Bu59JqhG.mjs.map +1 -0
  38. package/dist/admin/chunks/cs-uS_SIEo8.js +51 -0
  39. package/dist/admin/chunks/cs-uS_SIEo8.js.map +1 -0
  40. package/dist/admin/chunks/de-7MVMrqqI.js +63 -0
  41. package/dist/admin/chunks/de-7MVMrqqI.js.map +1 -0
  42. package/dist/admin/chunks/de-B81A69_5.mjs +61 -0
  43. package/dist/admin/chunks/de-B81A69_5.mjs.map +1 -0
  44. package/dist/admin/chunks/dk-BaelzvBE.mjs +85 -0
  45. package/dist/admin/chunks/dk-BaelzvBE.mjs.map +1 -0
  46. package/dist/admin/chunks/dk-DwCLGmy9.js +87 -0
  47. package/dist/admin/chunks/dk-DwCLGmy9.js.map +1 -0
  48. package/dist/admin/chunks/en-BhgCBe7M.mjs +85 -0
  49. package/dist/admin/chunks/en-BhgCBe7M.mjs.map +1 -0
  50. package/dist/admin/chunks/en-DwQjkHi_.js +87 -0
  51. package/dist/admin/chunks/en-DwQjkHi_.js.map +1 -0
  52. package/dist/admin/chunks/es-B0wXmvRj.mjs +85 -0
  53. package/dist/admin/chunks/es-B0wXmvRj.mjs.map +1 -0
  54. package/dist/admin/chunks/es-BOJOedG5.js +87 -0
  55. package/dist/admin/chunks/es-BOJOedG5.js.map +1 -0
  56. package/dist/admin/chunks/fr-BDNWCNs0.js +51 -0
  57. package/dist/admin/chunks/fr-BDNWCNs0.js.map +1 -0
  58. package/dist/admin/chunks/fr-CGYvGUXg.mjs +49 -0
  59. package/dist/admin/chunks/fr-CGYvGUXg.mjs.map +1 -0
  60. package/dist/admin/chunks/id-CNzbwFjA.mjs +61 -0
  61. package/dist/admin/chunks/id-CNzbwFjA.mjs.map +1 -0
  62. package/dist/admin/chunks/id-UqUPykHZ.js +63 -0
  63. package/dist/admin/chunks/id-UqUPykHZ.js.map +1 -0
  64. package/dist/admin/chunks/index-B-Z_z_qb.mjs +213 -0
  65. package/dist/admin/chunks/index-B-Z_z_qb.mjs.map +1 -0
  66. package/dist/admin/chunks/index-B2MJiSOD.mjs +279 -0
  67. package/dist/admin/chunks/index-B2MJiSOD.mjs.map +1 -0
  68. package/dist/admin/chunks/index-BPiDUOGt.js +471 -0
  69. package/dist/admin/chunks/index-BPiDUOGt.js.map +1 -0
  70. package/dist/admin/chunks/index-BtYUb_br.js +741 -0
  71. package/dist/admin/chunks/index-BtYUb_br.js.map +1 -0
  72. package/dist/admin/chunks/index-COXjHxFm.mjs +718 -0
  73. package/dist/admin/chunks/index-COXjHxFm.mjs.map +1 -0
  74. package/dist/admin/chunks/index-CkYplz_3.js +301 -0
  75. package/dist/admin/chunks/index-CkYplz_3.js.map +1 -0
  76. package/dist/admin/chunks/index-Cu2GvTiT.mjs +1516 -0
  77. package/dist/admin/chunks/index-Cu2GvTiT.mjs.map +1 -0
  78. package/dist/admin/chunks/index-D01zzG9y.js +1537 -0
  79. package/dist/admin/chunks/index-D01zzG9y.js.map +1 -0
  80. package/dist/admin/chunks/index-DAclA-0k.js +217 -0
  81. package/dist/admin/chunks/index-DAclA-0k.js.map +1 -0
  82. package/dist/admin/chunks/index-DVNIct2-.mjs +448 -0
  83. package/dist/admin/chunks/index-DVNIct2-.mjs.map +1 -0
  84. package/dist/admin/chunks/it-B2H2foTf.mjs +61 -0
  85. package/dist/admin/chunks/it-B2H2foTf.mjs.map +1 -0
  86. package/dist/admin/chunks/it-D5VuyoLU.js +63 -0
  87. package/dist/admin/chunks/it-D5VuyoLU.js.map +1 -0
  88. package/dist/admin/chunks/ja-C0z9d7L9.mjs +47 -0
  89. package/dist/admin/chunks/ja-C0z9d7L9.mjs.map +1 -0
  90. package/dist/admin/chunks/ja-MpqVsCgs.js +49 -0
  91. package/dist/admin/chunks/ja-MpqVsCgs.js.map +1 -0
  92. package/dist/admin/chunks/ko-Bm-grPSc.js +87 -0
  93. package/dist/admin/chunks/ko-Bm-grPSc.js.map +1 -0
  94. package/dist/admin/chunks/ko-CzUgzpeS.mjs +85 -0
  95. package/dist/admin/chunks/ko-CzUgzpeS.mjs.map +1 -0
  96. package/dist/admin/chunks/ms-CCacxjim.mjs +48 -0
  97. package/dist/admin/chunks/ms-CCacxjim.mjs.map +1 -0
  98. package/dist/admin/chunks/ms-D7eyBD5H.js +50 -0
  99. package/dist/admin/chunks/ms-D7eyBD5H.js.map +1 -0
  100. package/dist/admin/chunks/nl-BIOwAQtI.js +49 -0
  101. package/dist/admin/chunks/nl-BIOwAQtI.js.map +1 -0
  102. package/dist/admin/chunks/nl-DDC3nZW-.mjs +47 -0
  103. package/dist/admin/chunks/nl-DDC3nZW-.mjs.map +1 -0
  104. package/dist/admin/chunks/pl-D5BeNrg_.js +87 -0
  105. package/dist/admin/chunks/pl-D5BeNrg_.js.map +1 -0
  106. package/dist/admin/chunks/pl-XkS463rN.mjs +85 -0
  107. package/dist/admin/chunks/pl-XkS463rN.mjs.map +1 -0
  108. package/dist/admin/chunks/pt-BR-8cC7z8Km.mjs +43 -0
  109. package/dist/admin/chunks/pt-BR-8cC7z8Km.mjs.map +1 -0
  110. package/dist/admin/chunks/pt-BR-DxPBzQGx.js +45 -0
  111. package/dist/admin/chunks/pt-BR-DxPBzQGx.js.map +1 -0
  112. package/dist/admin/chunks/pt-DQpEvio8.mjs +47 -0
  113. package/dist/admin/chunks/pt-DQpEvio8.mjs.map +1 -0
  114. package/dist/admin/chunks/pt-kkCwzNvH.js +49 -0
  115. package/dist/admin/chunks/pt-kkCwzNvH.js.map +1 -0
  116. package/dist/admin/chunks/ru-BQ0gHmp3.js +87 -0
  117. package/dist/admin/chunks/ru-BQ0gHmp3.js.map +1 -0
  118. package/dist/admin/chunks/ru-nzL_7Mhg.mjs +85 -0
  119. package/dist/admin/chunks/ru-nzL_7Mhg.mjs.map +1 -0
  120. package/dist/admin/chunks/sk-Ddxc_tZA.mjs +49 -0
  121. package/dist/admin/chunks/sk-Ddxc_tZA.mjs.map +1 -0
  122. package/dist/admin/chunks/sk-nVwAPdYC.js +51 -0
  123. package/dist/admin/chunks/sk-nVwAPdYC.js.map +1 -0
  124. package/dist/admin/chunks/sv-BDfk2A-F.js +87 -0
  125. package/dist/admin/chunks/sv-BDfk2A-F.js.map +1 -0
  126. package/dist/admin/chunks/sv-By3RYpMG.mjs +85 -0
  127. package/dist/admin/chunks/sv-By3RYpMG.mjs.map +1 -0
  128. package/dist/admin/chunks/th-BtTtpHe2.js +61 -0
  129. package/dist/admin/chunks/th-BtTtpHe2.js.map +1 -0
  130. package/dist/admin/chunks/th-COl50vqb.mjs +59 -0
  131. package/dist/admin/chunks/th-COl50vqb.mjs.map +1 -0
  132. package/dist/admin/chunks/tr-80SJU6jg.mjs +84 -0
  133. package/dist/admin/chunks/tr-80SJU6jg.mjs.map +1 -0
  134. package/dist/admin/chunks/tr-Di-Nf7cT.js +86 -0
  135. package/dist/admin/chunks/tr-Di-Nf7cT.js.map +1 -0
  136. package/dist/admin/chunks/uk-CggQOx1l.js +50 -0
  137. package/dist/admin/chunks/uk-CggQOx1l.js.map +1 -0
  138. package/dist/admin/chunks/uk-D8JHuzch.mjs +48 -0
  139. package/dist/admin/chunks/uk-D8JHuzch.mjs.map +1 -0
  140. package/dist/admin/chunks/vi-69AF03Iv.mjs +49 -0
  141. package/dist/admin/chunks/vi-69AF03Iv.mjs.map +1 -0
  142. package/dist/admin/chunks/vi-D9cCsHsU.js +51 -0
  143. package/dist/admin/chunks/vi-D9cCsHsU.js.map +1 -0
  144. package/dist/admin/chunks/zh-BzSkqxo-.mjs +85 -0
  145. package/dist/admin/chunks/zh-BzSkqxo-.mjs.map +1 -0
  146. package/dist/admin/chunks/zh-BzWgJEzz.js +87 -0
  147. package/dist/admin/chunks/zh-BzWgJEzz.js.map +1 -0
  148. package/dist/admin/chunks/zh-Hans-CKqQbpsM.js +87 -0
  149. package/dist/admin/chunks/zh-Hans-CKqQbpsM.js.map +1 -0
  150. package/dist/admin/chunks/zh-Hans-DmDcSsp7.mjs +85 -0
  151. package/dist/admin/chunks/zh-Hans-DmDcSsp7.mjs.map +1 -0
  152. package/dist/admin/index.js +6 -3
  153. package/dist/admin/index.js.map +1 -1
  154. package/dist/admin/index.mjs +1 -5
  155. package/dist/admin/index.mjs.map +1 -1
  156. package/dist/server/index.js +4766 -0
  157. package/dist/server/index.js.map +1 -0
  158. package/dist/server/index.mjs +4764 -0
  159. package/dist/server/index.mjs.map +1 -0
  160. package/package.json +31 -32
  161. package/rollup.config.mjs +52 -0
  162. package/server/bootstrap/index.js +18 -51
  163. package/server/content-types/user/index.js +0 -1
  164. package/server/controllers/auth.js +41 -60
  165. package/server/controllers/content-manager-user.js +28 -30
  166. package/server/controllers/role.js +17 -4
  167. package/server/controllers/user.js +8 -9
  168. package/server/controllers/validation/auth.js +104 -25
  169. package/server/graphql/types/index.js +1 -0
  170. package/server/graphql/types/me.js +1 -0
  171. package/server/graphql/types/user-input.js +20 -0
  172. package/server/middlewares/rateLimit.js +1 -1
  173. package/server/register.js +2 -2
  174. package/server/services/jwt.js +3 -3
  175. package/server/services/permission.js +3 -7
  176. package/server/services/providers-registry.js +468 -279
  177. package/server/services/providers.js +10 -5
  178. package/server/services/role.js +15 -13
  179. package/server/services/user.js +56 -19
  180. package/server/services/users-permissions.js +15 -13
  181. package/server/utils/index.d.ts +2 -1
  182. package/server/utils/sanitize/sanitizers.js +7 -3
  183. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  184. package/admin/src/pages/Roles/pages/ListPage/utils/api.js +0 -30
  185. package/dist/_chunks/ar-MvD8Ghac.mjs +0 -44
  186. package/dist/_chunks/ar-MvD8Ghac.mjs.map +0 -1
  187. package/dist/_chunks/ar-t5qTFaAD.js +0 -44
  188. package/dist/_chunks/ar-t5qTFaAD.js.map +0 -1
  189. package/dist/_chunks/cs-BMuXwxA1.mjs +0 -50
  190. package/dist/_chunks/cs-BMuXwxA1.mjs.map +0 -1
  191. package/dist/_chunks/cs-I8N4u-Sd.js +0 -50
  192. package/dist/_chunks/cs-I8N4u-Sd.js.map +0 -1
  193. package/dist/_chunks/de-YTjtq89K.js +0 -62
  194. package/dist/_chunks/de-YTjtq89K.js.map +0 -1
  195. package/dist/_chunks/de-zs2qqc0W.mjs +0 -62
  196. package/dist/_chunks/de-zs2qqc0W.mjs.map +0 -1
  197. package/dist/_chunks/dk-HctVBMsG.mjs +0 -86
  198. package/dist/_chunks/dk-HctVBMsG.mjs.map +0 -1
  199. package/dist/_chunks/dk-TF-dWjzl.js +0 -86
  200. package/dist/_chunks/dk-TF-dWjzl.js.map +0 -1
  201. package/dist/_chunks/en-CE3wEy_c.mjs +0 -86
  202. package/dist/_chunks/en-CE3wEy_c.mjs.map +0 -1
  203. package/dist/_chunks/en-m608rMZx.js +0 -86
  204. package/dist/_chunks/en-m608rMZx.js.map +0 -1
  205. package/dist/_chunks/es-9381tih_.mjs +0 -86
  206. package/dist/_chunks/es-9381tih_.mjs.map +0 -1
  207. package/dist/_chunks/es-XBQsB8_9.js +0 -86
  208. package/dist/_chunks/es-XBQsB8_9.js.map +0 -1
  209. package/dist/_chunks/fr-6cz3U-IF.js +0 -50
  210. package/dist/_chunks/fr-6cz3U-IF.js.map +0 -1
  211. package/dist/_chunks/fr-CMSc77If.mjs +0 -50
  212. package/dist/_chunks/fr-CMSc77If.mjs.map +0 -1
  213. package/dist/_chunks/id-RJ934rq-.js +0 -62
  214. package/dist/_chunks/id-RJ934rq-.js.map +0 -1
  215. package/dist/_chunks/id-SDuyIkZa.mjs +0 -62
  216. package/dist/_chunks/id-SDuyIkZa.mjs.map +0 -1
  217. package/dist/_chunks/index-7cDy9OFu.mjs +0 -301
  218. package/dist/_chunks/index-7cDy9OFu.mjs.map +0 -1
  219. package/dist/_chunks/index-F7bt_caK.mjs +0 -1159
  220. package/dist/_chunks/index-F7bt_caK.mjs.map +0 -1
  221. package/dist/_chunks/index-H1mhyWXP.mjs +0 -385
  222. package/dist/_chunks/index-H1mhyWXP.mjs.map +0 -1
  223. package/dist/_chunks/index-Uclk5uc0.mjs +0 -250
  224. package/dist/_chunks/index-Uclk5uc0.mjs.map +0 -1
  225. package/dist/_chunks/index-cNS7FpQt.js +0 -320
  226. package/dist/_chunks/index-cNS7FpQt.js.map +0 -1
  227. package/dist/_chunks/index-e4dnRonE.js +0 -407
  228. package/dist/_chunks/index-e4dnRonE.js.map +0 -1
  229. package/dist/_chunks/index-oFjO2L1S.mjs +0 -615
  230. package/dist/_chunks/index-oFjO2L1S.mjs.map +0 -1
  231. package/dist/_chunks/index-rU_BkerL.js +0 -1191
  232. package/dist/_chunks/index-rU_BkerL.js.map +0 -1
  233. package/dist/_chunks/index-sm9u2cPw.js +0 -638
  234. package/dist/_chunks/index-sm9u2cPw.js.map +0 -1
  235. package/dist/_chunks/index-vLWD-DRR.js +0 -249
  236. package/dist/_chunks/index-vLWD-DRR.js.map +0 -1
  237. package/dist/_chunks/it-YhZOlM2X.js +0 -62
  238. package/dist/_chunks/it-YhZOlM2X.js.map +0 -1
  239. package/dist/_chunks/it-bvH7DgQo.mjs +0 -62
  240. package/dist/_chunks/it-bvH7DgQo.mjs.map +0 -1
  241. package/dist/_chunks/ja-o_-JPvQv.mjs +0 -48
  242. package/dist/_chunks/ja-o_-JPvQv.mjs.map +0 -1
  243. package/dist/_chunks/ja-xssHUXFv.js +0 -48
  244. package/dist/_chunks/ja-xssHUXFv.js.map +0 -1
  245. package/dist/_chunks/ko-C3mHUSJa.js +0 -86
  246. package/dist/_chunks/ko-C3mHUSJa.js.map +0 -1
  247. package/dist/_chunks/ko-XJbPSez_.mjs +0 -86
  248. package/dist/_chunks/ko-XJbPSez_.mjs.map +0 -1
  249. package/dist/_chunks/ms-II5Ea73J.mjs +0 -49
  250. package/dist/_chunks/ms-II5Ea73J.mjs.map +0 -1
  251. package/dist/_chunks/ms-d0hfg65Z.js +0 -49
  252. package/dist/_chunks/ms-d0hfg65Z.js.map +0 -1
  253. package/dist/_chunks/nl-TA7TfK_5.js +0 -48
  254. package/dist/_chunks/nl-TA7TfK_5.js.map +0 -1
  255. package/dist/_chunks/nl-vEy6TN0K.mjs +0 -48
  256. package/dist/_chunks/nl-vEy6TN0K.mjs.map +0 -1
  257. package/dist/_chunks/pl-0pUL9hdA.js +0 -86
  258. package/dist/_chunks/pl-0pUL9hdA.js.map +0 -1
  259. package/dist/_chunks/pl-2VowaFGt.mjs +0 -86
  260. package/dist/_chunks/pl-2VowaFGt.mjs.map +0 -1
  261. package/dist/_chunks/pt-BR-WNOhafR4.js +0 -44
  262. package/dist/_chunks/pt-BR-WNOhafR4.js.map +0 -1
  263. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs +0 -44
  264. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +0 -1
  265. package/dist/_chunks/pt-Rf9W51IO.mjs +0 -48
  266. package/dist/_chunks/pt-Rf9W51IO.mjs.map +0 -1
  267. package/dist/_chunks/pt-guNR9Gax.js +0 -48
  268. package/dist/_chunks/pt-guNR9Gax.js.map +0 -1
  269. package/dist/_chunks/ru-X3BMXDds.js +0 -86
  270. package/dist/_chunks/ru-X3BMXDds.js.map +0 -1
  271. package/dist/_chunks/ru-qKHnd5or.mjs +0 -86
  272. package/dist/_chunks/ru-qKHnd5or.mjs.map +0 -1
  273. package/dist/_chunks/sk-NWPw1oTN.js +0 -50
  274. package/dist/_chunks/sk-NWPw1oTN.js.map +0 -1
  275. package/dist/_chunks/sk-_Ryr-eTT.mjs +0 -50
  276. package/dist/_chunks/sk-_Ryr-eTT.mjs.map +0 -1
  277. package/dist/_chunks/sv-76NnbB__.js +0 -86
  278. package/dist/_chunks/sv-76NnbB__.js.map +0 -1
  279. package/dist/_chunks/sv-BqzScFXS.mjs +0 -86
  280. package/dist/_chunks/sv-BqzScFXS.mjs.map +0 -1
  281. package/dist/_chunks/th-WsknMEpq.mjs +0 -60
  282. package/dist/_chunks/th-WsknMEpq.mjs.map +0 -1
  283. package/dist/_chunks/th-cbppX21D.js +0 -60
  284. package/dist/_chunks/th-cbppX21D.js.map +0 -1
  285. package/dist/_chunks/tr-6mm_Fmz7.js +0 -85
  286. package/dist/_chunks/tr-6mm_Fmz7.js.map +0 -1
  287. package/dist/_chunks/tr-_DB1F1GW.mjs +0 -85
  288. package/dist/_chunks/tr-_DB1F1GW.mjs.map +0 -1
  289. package/dist/_chunks/uk-sI2I1ogF.js +0 -49
  290. package/dist/_chunks/uk-sI2I1ogF.js.map +0 -1
  291. package/dist/_chunks/uk-yxMSQAwI.mjs +0 -49
  292. package/dist/_chunks/uk-yxMSQAwI.mjs.map +0 -1
  293. package/dist/_chunks/vi-A3zJxaiI.js +0 -50
  294. package/dist/_chunks/vi-A3zJxaiI.js.map +0 -1
  295. package/dist/_chunks/vi-xY0zCW3d.mjs +0 -50
  296. package/dist/_chunks/vi-xY0zCW3d.mjs.map +0 -1
  297. package/dist/_chunks/zh-72SpmFXa.js +0 -86
  298. package/dist/_chunks/zh-72SpmFXa.js.map +0 -1
  299. package/dist/_chunks/zh-Hans-ArWWtyP4.js +0 -86
  300. package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +0 -1
  301. package/dist/_chunks/zh-Hans-E84cu4kP.mjs +0 -86
  302. package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +0 -1
  303. package/dist/_chunks/zh-OFeldzbX.mjs +0 -86
  304. package/dist/_chunks/zh-OFeldzbX.mjs.map +0 -1
  305. package/packup.config.ts +0 -22
  306. package/server/bootstrap/grant-config.js +0 -140
  307. package/strapi-server.js +0 -3
@@ -1,11 +1,8 @@
1
1
  import * as React from 'react';
2
2
 
3
+ import { useTracking, Layouts } from '@strapi/admin/strapi-admin';
3
4
  import {
4
- ContentLayout,
5
- HeaderLayout,
6
5
  IconButton,
7
- Layout,
8
- Main,
9
6
  Table,
10
7
  Tbody,
11
8
  Td,
@@ -14,23 +11,16 @@ import {
14
11
  Tr,
15
12
  Typography,
16
13
  VisuallyHidden,
14
+ useCollator,
17
15
  } from '@strapi/design-system';
16
+ import { Pencil } from '@strapi/icons';
18
17
  import {
19
- CheckPagePermissions,
20
- LoadingIndicatorPage,
21
- onRowClick,
22
- SettingsPageTitle,
23
- stopPropagation,
18
+ Page,
24
19
  useAPIErrorHandler,
25
- useCollator,
26
- useFetchClient,
27
- useFocusWhenNavigate,
28
20
  useNotification,
29
- useOverlayBlocker,
21
+ useFetchClient,
30
22
  useRBAC,
31
- useTracking,
32
- } from '@strapi/helper-plugin';
33
- import { Pencil } from '@strapi/icons';
23
+ } from '@strapi/strapi/admin';
34
24
  import upperFirst from 'lodash/upperFirst';
35
25
  import { useIntl } from 'react-intl';
36
26
  import { useMutation, useQuery, useQueryClient } from 'react-query';
@@ -47,16 +37,13 @@ export const ProvidersPage = () => {
47
37
  const { trackUsage } = useTracking();
48
38
  const [isOpen, setIsOpen] = React.useState(false);
49
39
  const [providerToEditName, setProviderToEditName] = React.useState(null);
50
- const toggleNotification = useNotification();
51
- const { lockApp, unlockApp } = useOverlayBlocker();
40
+ const { toggleNotification } = useNotification();
52
41
  const { get, put } = useFetchClient();
53
42
  const { formatAPIError } = useAPIErrorHandler();
54
43
  const formatter = useCollator(locale, {
55
44
  sensitivity: 'base',
56
45
  });
57
46
 
58
- useFocusWhenNavigate();
59
-
60
47
  const {
61
48
  isLoading: isLoadingPermissions,
62
49
  allowedActions: { canUpdate },
@@ -80,21 +67,18 @@ export const ProvidersPage = () => {
80
67
 
81
68
  toggleNotification({
82
69
  type: 'success',
83
- message: { id: getTrad('notification.success.submit') },
70
+ message: formatMessage({ id: getTrad('notification.success.submit') }),
84
71
  });
85
72
 
86
73
  trackUsage('didEditAuthenticationProvider');
87
74
 
88
75
  handleToggleModal();
89
- unlockApp();
90
76
  },
91
77
  onError(error) {
92
78
  toggleNotification({
93
- type: 'warning',
79
+ type: 'danger',
94
80
  message: formatAPIError(error),
95
81
  });
96
-
97
- unlockApp();
98
82
  },
99
83
  refetchActive: false,
100
84
  });
@@ -150,104 +134,105 @@ export const ProvidersPage = () => {
150
134
  };
151
135
 
152
136
  const handleSubmit = async (values) => {
153
- lockApp();
154
-
155
137
  trackUsage('willEditAuthenticationProvider');
156
138
 
157
139
  submitMutation.mutate({ providers: { ...data, [providerToEditName]: values } });
158
140
  };
159
141
 
142
+ if (isLoading) {
143
+ return <Page.Loading />;
144
+ }
145
+
160
146
  return (
161
- <Layout>
162
- <SettingsPageTitle
163
- name={formatMessage({
164
- id: getTrad('HeaderNav.link.providers'),
165
- defaultMessage: 'Providers',
166
- })}
167
- />
168
- <Main>
169
- <HeaderLayout
147
+ <Layouts.Root>
148
+ <Page.Title>
149
+ {formatMessage(
150
+ { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
151
+ {
152
+ name: formatMessage({
153
+ id: getTrad('HeaderNav.link.providers'),
154
+ defaultMessage: 'Providers',
155
+ }),
156
+ }
157
+ )}
158
+ </Page.Title>
159
+ <Page.Main>
160
+ <Layouts.Header
170
161
  title={formatMessage({
171
162
  id: getTrad('HeaderNav.link.providers'),
172
163
  defaultMessage: 'Providers',
173
164
  })}
174
165
  />
175
- {isLoading ? (
176
- <LoadingIndicatorPage />
177
- ) : (
178
- <ContentLayout>
179
- <Table colCount={3} rowCount={providers.length + 1}>
180
- <Thead>
181
- <Tr>
182
- <Th>
183
- <Typography variant="sigma" textColor="neutral600">
184
- {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
166
+ <Layouts.Content>
167
+ <Table colCount={3} rowCount={providers.length + 1}>
168
+ <Thead>
169
+ <Tr>
170
+ <Th>
171
+ <Typography variant="sigma" textColor="neutral600">
172
+ {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
173
+ </Typography>
174
+ </Th>
175
+ <Th>
176
+ <Typography variant="sigma" textColor="neutral600">
177
+ {formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })}
178
+ </Typography>
179
+ </Th>
180
+ <Th>
181
+ <Typography variant="sigma">
182
+ <VisuallyHidden>
183
+ {formatMessage({
184
+ id: 'global.settings',
185
+ defaultMessage: 'Settings',
186
+ })}
187
+ </VisuallyHidden>
188
+ </Typography>
189
+ </Th>
190
+ </Tr>
191
+ </Thead>
192
+ <Tbody>
193
+ {providers.map((provider) => (
194
+ <Tr
195
+ key={provider.name}
196
+ onClick={() => (canUpdate ? handleClickEdit(provider) : undefined)}
197
+ >
198
+ <Td width="45%">
199
+ <Typography fontWeight="semiBold" textColor="neutral800">
200
+ {provider.name}
185
201
  </Typography>
186
- </Th>
187
- <Th>
188
- <Typography variant="sigma" textColor="neutral600">
189
- {formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })}
202
+ </Td>
203
+ <Td width="65%">
204
+ <Typography
205
+ textColor={provider.enabled ? 'success600' : 'danger600'}
206
+ data-testid={`enable-${provider.name}`}
207
+ >
208
+ {provider.enabled
209
+ ? formatMessage({
210
+ id: 'global.enabled',
211
+ defaultMessage: 'Enabled',
212
+ })
213
+ : formatMessage({
214
+ id: 'global.disabled',
215
+ defaultMessage: 'Disabled',
216
+ })}
190
217
  </Typography>
191
- </Th>
192
- <Th>
193
- <Typography variant="sigma">
194
- <VisuallyHidden>
195
- {formatMessage({
196
- id: 'global.settings',
197
- defaultMessage: 'Settings',
198
- })}
199
- </VisuallyHidden>
200
- </Typography>
201
- </Th>
202
- </Tr>
203
- </Thead>
204
- <Tbody>
205
- {providers.map((provider) => (
206
- <Tr
207
- key={provider.name}
208
- {...onRowClick({
209
- fn: () => handleClickEdit(provider),
210
- condition: canUpdate,
211
- })}
212
- >
213
- <Td width="45%">
214
- <Typography fontWeight="semiBold" textColor="neutral800">
215
- {provider.name}
216
- </Typography>
217
- </Td>
218
- <Td width="65%">
219
- <Typography
220
- textColor={provider.enabled ? 'success600' : 'danger600'}
221
- data-testid={`enable-${provider.name}`}
218
+ </Td>
219
+ <Td onClick={(e) => e.stopPropagation()}>
220
+ {canUpdate && (
221
+ <IconButton
222
+ onClick={() => handleClickEdit(provider)}
223
+ variant="ghost"
224
+ label="Edit"
222
225
  >
223
- {provider.enabled
224
- ? formatMessage({
225
- id: 'global.enabled',
226
- defaultMessage: 'Enabled',
227
- })
228
- : formatMessage({
229
- id: 'global.disabled',
230
- defaultMessage: 'Disabled',
231
- })}
232
- </Typography>
233
- </Td>
234
- <Td {...stopPropagation}>
235
- {canUpdate && (
236
- <IconButton
237
- onClick={() => handleClickEdit(provider)}
238
- noBorder
239
- icon={<Pencil />}
240
- label="Edit"
241
- />
242
- )}
243
- </Td>
244
- </Tr>
245
- ))}
246
- </Tbody>
247
- </Table>
248
- </ContentLayout>
249
- )}
250
- </Main>
226
+ <Pencil />
227
+ </IconButton>
228
+ )}
229
+ </Td>
230
+ </Tr>
231
+ ))}
232
+ </Tbody>
233
+ </Table>
234
+ </Layouts.Content>
235
+ </Page.Main>
251
236
  <FormModal
252
237
  initialData={data[providerToEditName]}
253
238
  isOpen={isOpen}
@@ -264,14 +249,14 @@ export const ProvidersPage = () => {
264
249
  onSubmit={handleSubmit}
265
250
  providerToEditName={providerToEditName}
266
251
  />
267
- </Layout>
252
+ </Layouts.Root>
268
253
  );
269
254
  };
270
255
 
271
256
  const ProtectedProvidersPage = () => (
272
- <CheckPagePermissions permissions={PERMISSIONS.readProviders}>
257
+ <Page.Protect permissions={PERMISSIONS.readProviders}>
273
258
  <ProvidersPage />
274
- </CheckPagePermissions>
259
+ </Page.Protect>
275
260
  );
276
261
 
277
262
  export default ProtectedProvidersPage;
@@ -1,4 +1,4 @@
1
- import { translatedErrors } from '@strapi/helper-plugin';
1
+ import { translatedErrors } from '@strapi/strapi/admin';
2
2
  import * as yup from 'yup';
3
3
 
4
4
  import { getTrad } from '../../../utils';
@@ -34,6 +34,9 @@ const secretLabel = {
34
34
  defaultMessage: 'Client Secret',
35
35
  };
36
36
 
37
+ const CALLBACK_REGEX = /^$|^[a-z][a-z0-9+.-]*:\/\/[^\s/$.?#](?:[^\s]*[^\s/$.?#])?$/i;
38
+ const SUBDOMAIN_REGEX = /^(([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+)(:\d+)?(\/\S*)?$/i;
39
+
37
40
  const forms = {
38
41
  email: {
39
42
  form: [
@@ -52,7 +55,7 @@ const forms = {
52
55
  ],
53
56
  ],
54
57
  schema: yup.object().shape({
55
- enabled: yup.bool().required(translatedErrors.required),
58
+ enabled: yup.bool().required(translatedErrors.required.id),
56
59
  }),
57
60
  },
58
61
  providers: {
@@ -117,20 +120,23 @@ const forms = {
117
120
  ],
118
121
  ],
119
122
  schema: yup.object().shape({
120
- enabled: yup.bool().required(translatedErrors.required),
123
+ enabled: yup.bool().required(translatedErrors.required.id),
121
124
  key: yup.string().when('enabled', {
122
125
  is: true,
123
- then: yup.string().required(translatedErrors.required),
126
+ then: yup.string().required(translatedErrors.required.id),
124
127
  otherwise: yup.string(),
125
128
  }),
126
129
  secret: yup.string().when('enabled', {
127
130
  is: true,
128
- then: yup.string().required(translatedErrors.required),
131
+ then: yup.string().required(translatedErrors.required.id),
129
132
  otherwise: yup.string(),
130
133
  }),
131
134
  callback: yup.string().when('enabled', {
132
135
  is: true,
133
- then: yup.string().required(translatedErrors.required),
136
+ then: yup
137
+ .string()
138
+ .matches(CALLBACK_REGEX, translatedErrors.regex.id)
139
+ .required(translatedErrors.required.id),
134
140
  otherwise: yup.string(),
135
141
  }),
136
142
  }),
@@ -231,25 +237,31 @@ const forms = {
231
237
  ],
232
238
  ],
233
239
  schema: yup.object().shape({
234
- enabled: yup.bool().required(translatedErrors.required),
240
+ enabled: yup.bool().required(translatedErrors.required.id),
235
241
  key: yup.string().when('enabled', {
236
242
  is: true,
237
- then: yup.string().required(translatedErrors.required),
243
+ then: yup.string().required(translatedErrors.required.id),
238
244
  otherwise: yup.string(),
239
245
  }),
240
246
  secret: yup.string().when('enabled', {
241
247
  is: true,
242
- then: yup.string().required(translatedErrors.required),
248
+ then: yup.string().required(translatedErrors.required.id),
243
249
  otherwise: yup.string(),
244
250
  }),
245
251
  subdomain: yup.string().when('enabled', {
246
252
  is: true,
247
- then: yup.string().required(translatedErrors.required),
253
+ then: yup
254
+ .string()
255
+ .matches(SUBDOMAIN_REGEX, translatedErrors.regex.id)
256
+ .required(translatedErrors.required.id),
248
257
  otherwise: yup.string(),
249
258
  }),
250
259
  callback: yup.string().when('enabled', {
251
260
  is: true,
252
- then: yup.string().required(translatedErrors.required),
261
+ then: yup
262
+ .string()
263
+ .matches(CALLBACK_REGEX, translatedErrors.regex.id)
264
+ .required(translatedErrors.required.id),
253
265
  otherwise: yup.string(),
254
266
  }),
255
267
  }),
@@ -1,7 +1,7 @@
1
- import { translatedErrors } from '@strapi/helper-plugin';
1
+ import { translatedErrors } from '@strapi/strapi/admin';
2
2
  import * as yup from 'yup';
3
3
 
4
4
  export const createRoleSchema = yup.object().shape({
5
- name: yup.string().required(translatedErrors.required),
6
- description: yup.string().required(translatedErrors.required),
5
+ name: yup.string().required(translatedErrors.required.id),
6
+ description: yup.string().required(translatedErrors.required.id),
7
7
  });
@@ -1,12 +1,12 @@
1
1
  import { useEffect } from 'react';
2
2
 
3
- import { useNotification, useFetchClient, useAPIErrorHandler } from '@strapi/helper-plugin';
3
+ import { useAPIErrorHandler, useNotification, useFetchClient } from '@strapi/strapi/admin';
4
4
  import { useQueries } from 'react-query';
5
5
 
6
6
  import { cleanPermissions, getTrad } from '../../../utils';
7
7
 
8
8
  export const usePlugins = () => {
9
- const toggleNotification = useNotification();
9
+ const { toggleNotification } = useNotification();
10
10
  const { get } = useFetchClient();
11
11
  const { formatAPIError } = useAPIErrorHandler(getTrad);
12
12
 
@@ -48,7 +48,7 @@ export const usePlugins = () => {
48
48
  useEffect(() => {
49
49
  if (permissionsError) {
50
50
  toggleNotification({
51
- type: 'warning',
51
+ type: 'danger',
52
52
  message: formatAPIError(permissionsError),
53
53
  });
54
54
  }
@@ -57,7 +57,7 @@ export const usePlugins = () => {
57
57
  useEffect(() => {
58
58
  if (routesError) {
59
59
  toggleNotification({
60
- type: 'warning',
60
+ type: 'danger',
61
61
  message: formatAPIError(routesError),
62
62
  });
63
63
  }
@@ -1,7 +1,7 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
2
 
3
- import { AnErrorOccurred, CheckPagePermissions } from '@strapi/helper-plugin';
4
- import { Route, Switch } from 'react-router-dom';
3
+ import { Page } from '@strapi/strapi/admin';
4
+ import { Route, Routes } from 'react-router-dom';
5
5
 
6
6
  import { PERMISSIONS } from '../../constants';
7
7
 
@@ -11,22 +11,13 @@ import { ProtectedRolesListPage } from './pages/ListPage';
11
11
 
12
12
  const Roles = () => {
13
13
  return (
14
- <CheckPagePermissions permissions={PERMISSIONS.accessRoles}>
15
- <Switch>
16
- <Route
17
- path="/settings/users-permissions/roles/new"
18
- component={ProtectedRolesCreatePage}
19
- exact
20
- />
21
- <Route
22
- path="/settings/users-permissions/roles/:id"
23
- component={ProtectedRolesEditPage}
24
- exact
25
- />
26
- <Route path="/settings/users-permissions/roles" component={ProtectedRolesListPage} exact />
27
- <Route path="" component={AnErrorOccurred} />
28
- </Switch>
29
- </CheckPagePermissions>
14
+ <Page.Protect permissions={PERMISSIONS.accessRoles}>
15
+ <Routes>
16
+ <Route index element={<ProtectedRolesListPage />} />
17
+ <Route path="new" element={<ProtectedRolesCreatePage />} />
18
+ <Route path=":id" element={<ProtectedRolesEditPage />} />
19
+ </Routes>
20
+ </Page.Protect>
30
21
  );
31
22
  };
32
23