@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,34 +1,17 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
2
 
3
+ import { Box, Button, Flex, Grid, Typography, useNotifyAT } from '@strapi/design-system';
4
+ import { Check } from '@strapi/icons';
3
5
  import {
4
- Box,
5
- Button,
6
- ContentLayout,
7
- Flex,
8
- Grid,
9
- GridItem,
10
- HeaderLayout,
11
- Main,
12
- Option,
13
- Select,
14
- Typography,
15
- useNotifyAT,
16
- } from '@strapi/design-system';
17
- import {
18
- CheckPagePermissions,
19
- Form,
20
- GenericInput,
21
- LoadingIndicatorPage,
22
- SettingsPageTitle,
23
6
  useAPIErrorHandler,
24
- useFetchClient,
25
- useFocusWhenNavigate,
7
+ Page,
8
+ Form,
9
+ InputRenderer,
26
10
  useNotification,
27
- useOverlayBlocker,
11
+ useFetchClient,
28
12
  useRBAC,
29
- } from '@strapi/helper-plugin';
30
- import { Check } from '@strapi/icons';
31
- import { Formik } from 'formik';
13
+ Layouts,
14
+ } from '@strapi/strapi/admin';
32
15
  import { useIntl } from 'react-intl';
33
16
  import { useMutation, useQuery, useQueryClient } from 'react-query';
34
17
 
@@ -39,22 +22,19 @@ import layout from './utils/layout';
39
22
  import schema from './utils/schema';
40
23
 
41
24
  const ProtectedAdvancedSettingsPage = () => (
42
- <CheckPagePermissions permissions={PERMISSIONS.readAdvancedSettings}>
25
+ <Page.Protect permissions={PERMISSIONS.readAdvancedSettings}>
43
26
  <AdvancedSettingsPage />
44
- </CheckPagePermissions>
27
+ </Page.Protect>
45
28
  );
46
29
 
47
30
  const AdvancedSettingsPage = () => {
48
31
  const { formatMessage } = useIntl();
49
- const toggleNotification = useNotification();
50
- const { lockApp, unlockApp } = useOverlayBlocker();
32
+ const { toggleNotification } = useNotification();
51
33
  const { notifyStatus } = useNotifyAT();
52
34
  const queryClient = useQueryClient();
53
35
  const { get, put } = useFetchClient();
54
36
  const { formatAPIError } = useAPIErrorHandler();
55
37
 
56
- useFocusWhenNavigate();
57
-
58
38
  const {
59
39
  isLoading: isLoadingForPermissions,
60
40
  allowedActions: { canUpdate },
@@ -78,8 +58,11 @@ const AdvancedSettingsPage = () => {
78
58
  },
79
59
  onError() {
80
60
  toggleNotification({
81
- type: 'warning',
82
- message: { id: getTrad('notification.error'), defaultMessage: 'An error occured' },
61
+ type: 'danger',
62
+ message: formatMessage({
63
+ id: getTrad('notification.error'),
64
+ defaultMessage: 'An error occured',
65
+ }),
83
66
  });
84
67
  },
85
68
  }
@@ -93,18 +76,17 @@ const AdvancedSettingsPage = () => {
93
76
 
94
77
  toggleNotification({
95
78
  type: 'success',
96
- message: { id: getTrad('notification.success.saved'), defaultMessage: 'Saved' },
79
+ message: formatMessage({
80
+ id: getTrad('notification.success.saved'),
81
+ defaultMessage: 'Saved',
82
+ }),
97
83
  });
98
-
99
- unlockApp();
100
84
  },
101
85
  onError(error) {
102
86
  toggleNotification({
103
- type: 'warning',
87
+ type: 'danger',
104
88
  message: formatAPIError(error),
105
89
  });
106
-
107
- unlockApp();
108
90
  },
109
91
  refetchActive: true,
110
92
  });
@@ -112,8 +94,6 @@ const AdvancedSettingsPage = () => {
112
94
  const { isLoading: isSubmittingForm } = submitMutation;
113
95
 
114
96
  const handleSubmit = async (body) => {
115
- lockApp();
116
-
117
97
  submitMutation.mutate({
118
98
  ...body,
119
99
  email_confirmation_redirection: body.email_confirmation
@@ -123,46 +103,27 @@ const AdvancedSettingsPage = () => {
123
103
  };
124
104
 
125
105
  if (isLoading) {
126
- return (
127
- <Main aria-busy="true">
128
- <SettingsPageTitle
129
- name={formatMessage({
130
- id: getTrad('HeaderNav.link.advancedSettings'),
131
- defaultMessage: 'Advanced Settings',
132
- })}
133
- />
134
- <HeaderLayout
135
- title={formatMessage({
136
- id: getTrad('HeaderNav.link.advancedSettings'),
137
- defaultMessage: 'Advanced Settings',
138
- })}
139
- />
140
- <ContentLayout>
141
- <LoadingIndicatorPage />
142
- </ContentLayout>
143
- </Main>
144
- );
106
+ return <Page.Loading />;
145
107
  }
146
108
 
147
109
  return (
148
- <Main aria-busy={isSubmittingForm}>
149
- <SettingsPageTitle
150
- name={formatMessage({
151
- id: getTrad('HeaderNav.link.advancedSettings'),
152
- defaultMessage: 'Advanced Settings',
153
- })}
154
- />
155
- <Formik
156
- onSubmit={handleSubmit}
157
- initialValues={data.settings}
158
- validateOnChange={false}
159
- validationSchema={schema}
160
- enableReinitialize
161
- >
162
- {({ errors, values, handleChange, isSubmitting, dirty }) => {
110
+ <Page.Main aria-busy={isSubmittingForm}>
111
+ <Page.Title>
112
+ {formatMessage(
113
+ { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
114
+ {
115
+ name: formatMessage({
116
+ id: getTrad('HeaderNav.link.advancedSettings'),
117
+ defaultMessage: 'Advanced Settings',
118
+ }),
119
+ }
120
+ )}
121
+ </Page.Title>
122
+ <Form onSubmit={handleSubmit} initialValues={data.settings} validationSchema={schema}>
123
+ {({ values, isSubmitting, modified }) => {
163
124
  return (
164
- <Form>
165
- <HeaderLayout
125
+ <>
126
+ <Layouts.Header
166
127
  title={formatMessage({
167
128
  id: getTrad('HeaderNav.link.advancedSettings'),
168
129
  defaultMessage: 'Advanced Settings',
@@ -171,7 +132,7 @@ const AdvancedSettingsPage = () => {
171
132
  <Button
172
133
  loading={isSubmitting}
173
134
  type="submit"
174
- disabled={canUpdate ? !dirty : !canUpdate}
135
+ disabled={!modified || !canUpdate}
175
136
  startIcon={<Check />}
176
137
  size="S"
177
138
  >
@@ -179,7 +140,7 @@ const AdvancedSettingsPage = () => {
179
140
  </Button>
180
141
  }
181
142
  />
182
- <ContentLayout>
143
+ <Layouts.Content>
183
144
  <Box
184
145
  background="neutral0"
185
146
  hasRadius
@@ -190,70 +151,64 @@ const AdvancedSettingsPage = () => {
190
151
  paddingRight={7}
191
152
  >
192
153
  <Flex direction="column" alignItems="stretch" gap={4}>
193
- <Typography variant="delta" as="h2">
154
+ <Typography variant="delta" tag="h2">
194
155
  {formatMessage({
195
156
  id: 'global.settings',
196
157
  defaultMessage: 'Settings',
197
158
  })}
198
159
  </Typography>
199
- <Grid gap={6}>
200
- <GridItem col={6} s={12}>
201
- <Select
202
- label={formatMessage({
160
+ <Grid.Root gap={6}>
161
+ {[
162
+ {
163
+ label: {
203
164
  id: getTrad('EditForm.inputSelect.label.role'),
204
165
  defaultMessage: 'Default role for authenticated users',
205
- })}
206
- value={values.default_role}
207
- hint={formatMessage({
166
+ },
167
+ hint: {
208
168
  id: getTrad('EditForm.inputSelect.description.role'),
209
169
  defaultMessage:
210
170
  'It will attach the new authenticated user to the selected role.',
211
- })}
212
- onChange={(e) =>
213
- handleChange({ target: { name: 'default_role', value: e } })
214
- }
171
+ },
172
+ options: data.roles.map((role) => ({
173
+ label: role.name,
174
+ value: role.type,
175
+ })),
176
+ name: 'default_role',
177
+ size: 6,
178
+ type: 'enumeration',
179
+ },
180
+ ...layout,
181
+ ].map(({ size, ...field }) => (
182
+ <Grid.Item
183
+ key={field.name}
184
+ col={size}
185
+ direction="column"
186
+ alignItems="stretch"
215
187
  >
216
- {data.roles.map((role) => {
217
- return (
218
- <Option key={role.type} value={role.type}>
219
- {role.name}
220
- </Option>
221
- );
222
- })}
223
- </Select>
224
- </GridItem>
225
- {layout.map((input) => {
226
- let value = values[input.name];
227
-
228
- if (!value) {
229
- value = input.type === 'bool' ? false : '';
230
- }
231
-
232
- return (
233
- <GridItem key={input.name} {...input.size}>
234
- <GenericInput
235
- {...input}
236
- value={value}
237
- error={errors[input.name]}
238
- disabled={
239
- input.name === 'email_confirmation_redirection' &&
240
- values.email_confirmation === false
241
- }
242
- onChange={handleChange}
243
- />
244
- </GridItem>
245
- );
246
- })}
247
- </Grid>
188
+ <InputRenderer
189
+ {...field}
190
+ disabled={
191
+ field.name === 'email_confirmation_redirection' &&
192
+ values.email_confirmation === false
193
+ }
194
+ label={formatMessage(field.label)}
195
+ hint={field.hint ? formatMessage(field.hint) : undefined}
196
+ placeholder={
197
+ field.placeholder ? formatMessage(field.placeholder) : undefined
198
+ }
199
+ />
200
+ </Grid.Item>
201
+ ))}
202
+ </Grid.Root>
248
203
  </Flex>
249
204
  </Box>
250
- </ContentLayout>
251
- </Form>
205
+ </Layouts.Content>
206
+ </>
252
207
  );
253
208
  }}
254
- </Formik>
255
- </Main>
209
+ </Form>
210
+ </Page.Main>
256
211
  );
257
212
  };
258
213
 
259
- export default ProtectedAdvancedSettingsPage;
214
+ export { ProtectedAdvancedSettingsPage, AdvancedSettingsPage };
@@ -2,45 +2,39 @@ import { getTrad } from '../../../utils';
2
2
 
3
3
  const layout = [
4
4
  {
5
- intlLabel: {
5
+ label: {
6
6
  id: getTrad('EditForm.inputToggle.label.email'),
7
7
  defaultMessage: 'One account per email address',
8
8
  },
9
- description: {
9
+ hint: {
10
10
  id: getTrad('EditForm.inputToggle.description.email'),
11
11
  defaultMessage:
12
12
  'Disallow the user to create multiple accounts using the same email address with different authentication providers.',
13
13
  },
14
14
  name: 'unique_email',
15
- type: 'bool',
16
- size: {
17
- col: 12,
18
- xs: 12,
19
- },
15
+ type: 'boolean',
16
+ size: 12,
20
17
  },
21
18
  {
22
- intlLabel: {
19
+ label: {
23
20
  id: getTrad('EditForm.inputToggle.label.sign-up'),
24
21
  defaultMessage: 'Enable sign-ups',
25
22
  },
26
- description: {
23
+ hint: {
27
24
  id: getTrad('EditForm.inputToggle.description.sign-up'),
28
25
  defaultMessage:
29
26
  'When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider.',
30
27
  },
31
28
  name: 'allow_register',
32
- type: 'bool',
33
- size: {
34
- col: 12,
35
- xs: 12,
36
- },
29
+ type: 'boolean',
30
+ size: 12,
37
31
  },
38
32
  {
39
- intlLabel: {
33
+ label: {
40
34
  id: getTrad('EditForm.inputToggle.label.email-reset-password'),
41
35
  defaultMessage: 'Reset password page',
42
36
  },
43
- description: {
37
+ hint: {
44
38
  id: getTrad('EditForm.inputToggle.description.email-reset-password'),
45
39
  defaultMessage: "URL of your application's reset password page.",
46
40
  },
@@ -49,34 +43,28 @@ const layout = [
49
43
  defaultMessage: 'ex: https://youtfrontend.com/reset-password',
50
44
  },
51
45
  name: 'email_reset_password',
52
- type: 'text',
53
- size: {
54
- col: 6,
55
- xs: 12,
56
- },
46
+ type: 'string',
47
+ size: 12,
57
48
  },
58
49
  {
59
- intlLabel: {
50
+ label: {
60
51
  id: getTrad('EditForm.inputToggle.label.email-confirmation'),
61
52
  defaultMessage: 'Enable email confirmation',
62
53
  },
63
- description: {
54
+ hint: {
64
55
  id: getTrad('EditForm.inputToggle.description.email-confirmation'),
65
56
  defaultMessage: 'When enabled (ON), new registered users receive a confirmation email.',
66
57
  },
67
58
  name: 'email_confirmation',
68
- type: 'bool',
69
- size: {
70
- col: 12,
71
- xs: 12,
72
- },
59
+ type: 'boolean',
60
+ size: 12,
73
61
  },
74
62
  {
75
- intlLabel: {
63
+ label: {
76
64
  id: getTrad('EditForm.inputToggle.label.email-confirmation-redirection'),
77
65
  defaultMessage: 'Redirection url',
78
66
  },
79
- description: {
67
+ hint: {
80
68
  id: getTrad('EditForm.inputToggle.description.email-confirmation-redirection'),
81
69
  defaultMessage: 'After you confirmed your email, choose where you will be redirected.',
82
70
  },
@@ -85,11 +73,8 @@ const layout = [
85
73
  defaultMessage: 'ex: https://youtfrontend.com/email-confirmation',
86
74
  },
87
75
  name: 'email_confirmation_redirection',
88
- type: 'text',
89
- size: {
90
- col: 6,
91
- xs: 12,
92
- },
76
+ type: 'string',
77
+ size: 12,
93
78
  },
94
79
  ];
95
80
 
@@ -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
  // eslint-disable-next-line prefer-regex-literals
@@ -12,7 +12,10 @@ const schema = yup.object().shape({
12
12
  }),
13
13
  email_reset_password: yup
14
14
  .string(translatedErrors.string)
15
- .matches(URL_REGEX, translatedErrors.regex)
15
+ .matches(URL_REGEX, {
16
+ id: translatedErrors.regex.id,
17
+ defaultMessage: 'This is not a valid URL',
18
+ })
16
19
  .nullable(),
17
20
  });
18
21