@strapi/plugin-users-permissions 0.0.0-next.fc231041206e6f3999b094160cfa05db2892ad54 → 0.0.0-next.fc9d26d995624dc886b29f563e1de655d47e6609

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 (310) hide show
  1. package/.eslintignore +2 -1
  2. package/LICENSE +18 -3
  3. package/admin/src/components/BoundRoute/index.jsx +3 -3
  4. package/admin/src/components/FormModal/Input/index.jsx +33 -32
  5. package/admin/src/components/FormModal/index.jsx +58 -69
  6. package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.jsx +4 -3
  7. package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +13 -22
  8. package/admin/src/components/Permissions/index.jsx +27 -35
  9. package/admin/src/components/Permissions/reducer.js +1 -1
  10. package/admin/src/components/Policies/index.jsx +8 -6
  11. package/admin/src/components/UsersPermissions/index.jsx +15 -7
  12. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  13. package/admin/src/index.js +17 -34
  14. package/admin/src/pages/AdvancedSettings/index.jsx +84 -129
  15. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  16. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  17. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +120 -140
  18. package/admin/src/pages/EmailTemplates/components/EmailTable.jsx +21 -18
  19. package/admin/src/pages/EmailTemplates/index.jsx +36 -62
  20. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  21. package/admin/src/pages/Providers/index.jsx +98 -113
  22. package/admin/src/pages/Providers/utils/forms.js +23 -11
  23. package/admin/src/pages/Roles/constants.js +3 -3
  24. package/admin/src/pages/Roles/hooks/usePlugins.js +4 -4
  25. package/admin/src/pages/Roles/index.jsx +10 -19
  26. package/admin/src/pages/Roles/pages/CreatePage.jsx +53 -58
  27. package/admin/src/pages/Roles/pages/EditPage.jsx +63 -68
  28. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +28 -32
  29. package/admin/src/pages/Roles/pages/ListPage/index.jsx +79 -55
  30. package/admin/src/pluginId.js +2 -2
  31. package/admin/src/translations/en.json +1 -1
  32. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  33. package/dist/admin/chunks/ar-BJwjobLp.js +45 -0
  34. package/dist/admin/chunks/ar-BJwjobLp.js.map +1 -0
  35. package/dist/admin/chunks/ar-G6bUGuUb.js +43 -0
  36. package/dist/admin/chunks/ar-G6bUGuUb.js.map +1 -0
  37. package/dist/admin/chunks/cs-Bu59JqhG.js +49 -0
  38. package/dist/admin/chunks/cs-Bu59JqhG.js.map +1 -0
  39. package/dist/admin/chunks/cs-uS_SIEo8.js +51 -0
  40. package/dist/admin/chunks/cs-uS_SIEo8.js.map +1 -0
  41. package/dist/admin/chunks/de-7MVMrqqI.js +63 -0
  42. package/dist/admin/chunks/de-7MVMrqqI.js.map +1 -0
  43. package/dist/admin/chunks/de-B81A69_5.js +61 -0
  44. package/dist/admin/chunks/de-B81A69_5.js.map +1 -0
  45. package/dist/admin/chunks/dk-BaelzvBE.js +85 -0
  46. package/dist/admin/chunks/dk-BaelzvBE.js.map +1 -0
  47. package/dist/admin/chunks/dk-DwCLGmy9.js +87 -0
  48. package/dist/admin/chunks/dk-DwCLGmy9.js.map +1 -0
  49. package/dist/admin/chunks/en-BhgCBe7M.js +85 -0
  50. package/dist/admin/chunks/en-BhgCBe7M.js.map +1 -0
  51. package/dist/admin/chunks/en-DwQjkHi_.js +87 -0
  52. package/dist/admin/chunks/en-DwQjkHi_.js.map +1 -0
  53. package/dist/admin/chunks/es-B0wXmvRj.js +85 -0
  54. package/dist/admin/chunks/es-B0wXmvRj.js.map +1 -0
  55. package/dist/admin/chunks/es-BOJOedG5.js +87 -0
  56. package/dist/admin/chunks/es-BOJOedG5.js.map +1 -0
  57. package/dist/admin/chunks/fr-BDNWCNs0.js +51 -0
  58. package/dist/admin/chunks/fr-BDNWCNs0.js.map +1 -0
  59. package/dist/admin/chunks/fr-CGYvGUXg.js +49 -0
  60. package/dist/admin/chunks/fr-CGYvGUXg.js.map +1 -0
  61. package/dist/admin/chunks/id-CNzbwFjA.js +61 -0
  62. package/dist/admin/chunks/id-CNzbwFjA.js.map +1 -0
  63. package/dist/admin/chunks/id-UqUPykHZ.js +63 -0
  64. package/dist/admin/chunks/id-UqUPykHZ.js.map +1 -0
  65. package/dist/admin/chunks/index-BPiDUOGt.js +471 -0
  66. package/dist/admin/chunks/index-BPiDUOGt.js.map +1 -0
  67. package/dist/admin/chunks/index-BtYUb_br.js +741 -0
  68. package/dist/admin/chunks/index-BtYUb_br.js.map +1 -0
  69. package/dist/admin/chunks/index-CkYplz_3.js +301 -0
  70. package/dist/admin/chunks/index-CkYplz_3.js.map +1 -0
  71. package/dist/admin/chunks/index-CxiKMwJn.js +279 -0
  72. package/dist/admin/chunks/index-CxiKMwJn.js.map +1 -0
  73. package/dist/admin/chunks/index-D01zzG9y.js +1537 -0
  74. package/dist/admin/chunks/index-D01zzG9y.js.map +1 -0
  75. package/dist/admin/chunks/index-DAclA-0k.js +217 -0
  76. package/dist/admin/chunks/index-DAclA-0k.js.map +1 -0
  77. package/dist/admin/chunks/index-DG6Abn44.js +213 -0
  78. package/dist/admin/chunks/index-DG6Abn44.js.map +1 -0
  79. package/dist/admin/chunks/index-De_N0gr1.js +448 -0
  80. package/dist/admin/chunks/index-De_N0gr1.js.map +1 -0
  81. package/dist/admin/chunks/index-DgONbTcJ.js +718 -0
  82. package/dist/admin/chunks/index-DgONbTcJ.js.map +1 -0
  83. package/dist/admin/chunks/index-xVVRcuDA.js +1516 -0
  84. package/dist/admin/chunks/index-xVVRcuDA.js.map +1 -0
  85. package/dist/admin/chunks/it-B2H2foTf.js +61 -0
  86. package/dist/admin/chunks/it-B2H2foTf.js.map +1 -0
  87. package/dist/admin/chunks/it-D5VuyoLU.js +63 -0
  88. package/dist/admin/chunks/it-D5VuyoLU.js.map +1 -0
  89. package/dist/admin/chunks/ja-C0z9d7L9.js +47 -0
  90. package/dist/admin/chunks/ja-C0z9d7L9.js.map +1 -0
  91. package/dist/admin/chunks/ja-MpqVsCgs.js +49 -0
  92. package/dist/admin/chunks/ja-MpqVsCgs.js.map +1 -0
  93. package/dist/admin/chunks/ko-Bm-grPSc.js +87 -0
  94. package/dist/admin/chunks/ko-Bm-grPSc.js.map +1 -0
  95. package/dist/admin/chunks/ko-CzUgzpeS.js +85 -0
  96. package/dist/admin/chunks/ko-CzUgzpeS.js.map +1 -0
  97. package/dist/admin/chunks/ms-CCacxjim.js +48 -0
  98. package/dist/admin/chunks/ms-CCacxjim.js.map +1 -0
  99. package/dist/admin/chunks/ms-D7eyBD5H.js +50 -0
  100. package/dist/admin/chunks/ms-D7eyBD5H.js.map +1 -0
  101. package/dist/admin/chunks/nl-BIOwAQtI.js +49 -0
  102. package/dist/admin/chunks/nl-BIOwAQtI.js.map +1 -0
  103. package/dist/admin/chunks/nl-DDC3nZW-.js +47 -0
  104. package/dist/admin/chunks/nl-DDC3nZW-.js.map +1 -0
  105. package/dist/admin/chunks/pl-D5BeNrg_.js +87 -0
  106. package/dist/admin/chunks/pl-D5BeNrg_.js.map +1 -0
  107. package/dist/admin/chunks/pl-XkS463rN.js +85 -0
  108. package/dist/admin/chunks/pl-XkS463rN.js.map +1 -0
  109. package/dist/admin/chunks/pt-BR-8cC7z8Km.js +43 -0
  110. package/dist/admin/chunks/pt-BR-8cC7z8Km.js.map +1 -0
  111. package/dist/admin/chunks/pt-BR-DxPBzQGx.js +45 -0
  112. package/dist/admin/chunks/pt-BR-DxPBzQGx.js.map +1 -0
  113. package/dist/admin/chunks/pt-DQpEvio8.js +47 -0
  114. package/dist/admin/chunks/pt-DQpEvio8.js.map +1 -0
  115. package/dist/admin/chunks/pt-kkCwzNvH.js +49 -0
  116. package/dist/admin/chunks/pt-kkCwzNvH.js.map +1 -0
  117. package/dist/admin/chunks/ru-BQ0gHmp3.js +87 -0
  118. package/dist/admin/chunks/ru-BQ0gHmp3.js.map +1 -0
  119. package/dist/admin/chunks/ru-nzL_7Mhg.js +85 -0
  120. package/dist/admin/chunks/ru-nzL_7Mhg.js.map +1 -0
  121. package/dist/admin/chunks/sk-Ddxc_tZA.js +49 -0
  122. package/dist/admin/chunks/sk-Ddxc_tZA.js.map +1 -0
  123. package/dist/admin/chunks/sk-nVwAPdYC.js +51 -0
  124. package/dist/admin/chunks/sk-nVwAPdYC.js.map +1 -0
  125. package/dist/admin/chunks/sv-BDfk2A-F.js +87 -0
  126. package/dist/admin/chunks/sv-BDfk2A-F.js.map +1 -0
  127. package/dist/admin/chunks/sv-By3RYpMG.js +85 -0
  128. package/dist/admin/chunks/sv-By3RYpMG.js.map +1 -0
  129. package/dist/admin/chunks/th-BtTtpHe2.js +61 -0
  130. package/dist/admin/chunks/th-BtTtpHe2.js.map +1 -0
  131. package/dist/admin/chunks/th-COl50vqb.js +59 -0
  132. package/dist/admin/chunks/th-COl50vqb.js.map +1 -0
  133. package/dist/admin/chunks/tr-80SJU6jg.js +84 -0
  134. package/dist/admin/chunks/tr-80SJU6jg.js.map +1 -0
  135. package/dist/admin/chunks/tr-Di-Nf7cT.js +86 -0
  136. package/dist/admin/chunks/tr-Di-Nf7cT.js.map +1 -0
  137. package/dist/admin/chunks/uk-CggQOx1l.js +50 -0
  138. package/dist/admin/chunks/uk-CggQOx1l.js.map +1 -0
  139. package/dist/admin/chunks/uk-D8JHuzch.js +48 -0
  140. package/dist/admin/chunks/uk-D8JHuzch.js.map +1 -0
  141. package/dist/admin/chunks/vi-69AF03Iv.js +49 -0
  142. package/dist/admin/chunks/vi-69AF03Iv.js.map +1 -0
  143. package/dist/admin/chunks/vi-D9cCsHsU.js +51 -0
  144. package/dist/admin/chunks/vi-D9cCsHsU.js.map +1 -0
  145. package/dist/admin/chunks/zh-BzSkqxo-.js +85 -0
  146. package/dist/admin/chunks/zh-BzSkqxo-.js.map +1 -0
  147. package/dist/admin/chunks/zh-BzWgJEzz.js +87 -0
  148. package/dist/admin/chunks/zh-BzWgJEzz.js.map +1 -0
  149. package/dist/admin/chunks/zh-Hans-CKqQbpsM.js +87 -0
  150. package/dist/admin/chunks/zh-Hans-CKqQbpsM.js.map +1 -0
  151. package/dist/admin/chunks/zh-Hans-DmDcSsp7.js +85 -0
  152. package/dist/admin/chunks/zh-Hans-DmDcSsp7.js.map +1 -0
  153. package/dist/admin/index.js +6 -3
  154. package/dist/admin/index.js.map +1 -1
  155. package/dist/admin/index.mjs +1 -5
  156. package/dist/admin/index.mjs.map +1 -1
  157. package/dist/server/index.js +4739 -0
  158. package/dist/server/index.js.map +1 -0
  159. package/dist/server/index.mjs +4737 -0
  160. package/dist/server/index.mjs.map +1 -0
  161. package/package.json +31 -32
  162. package/rollup.config.mjs +52 -0
  163. package/server/bootstrap/index.js +18 -51
  164. package/server/bootstrap/users-permissions-actions.js +6 -0
  165. package/server/config.js +29 -0
  166. package/server/content-types/user/index.js +0 -1
  167. package/server/controllers/auth.js +63 -64
  168. package/server/controllers/content-manager-user.js +28 -30
  169. package/server/controllers/role.js +17 -4
  170. package/server/controllers/user.js +8 -9
  171. package/server/controllers/validation/auth.js +81 -25
  172. package/server/graphql/types/index.js +1 -0
  173. package/server/graphql/types/me.js +1 -0
  174. package/server/graphql/types/user-input.js +20 -0
  175. package/server/middlewares/rateLimit.js +1 -1
  176. package/server/register.js +2 -2
  177. package/server/services/jwt.js +3 -3
  178. package/server/services/permission.js +3 -7
  179. package/server/services/providers-registry.js +468 -275
  180. package/server/services/providers.js +10 -5
  181. package/server/services/role.js +15 -13
  182. package/server/services/user.js +56 -19
  183. package/server/services/users-permissions.js +15 -13
  184. package/server/utils/index.d.ts +2 -1
  185. package/server/utils/sanitize/sanitizers.js +7 -3
  186. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  187. package/admin/src/pages/Roles/pages/ListPage/utils/api.js +0 -30
  188. package/dist/_chunks/ar-MvD8Ghac.mjs +0 -44
  189. package/dist/_chunks/ar-MvD8Ghac.mjs.map +0 -1
  190. package/dist/_chunks/ar-t5qTFaAD.js +0 -44
  191. package/dist/_chunks/ar-t5qTFaAD.js.map +0 -1
  192. package/dist/_chunks/cs-BMuXwxA1.mjs +0 -50
  193. package/dist/_chunks/cs-BMuXwxA1.mjs.map +0 -1
  194. package/dist/_chunks/cs-I8N4u-Sd.js +0 -50
  195. package/dist/_chunks/cs-I8N4u-Sd.js.map +0 -1
  196. package/dist/_chunks/de-YTjtq89K.js +0 -62
  197. package/dist/_chunks/de-YTjtq89K.js.map +0 -1
  198. package/dist/_chunks/de-zs2qqc0W.mjs +0 -62
  199. package/dist/_chunks/de-zs2qqc0W.mjs.map +0 -1
  200. package/dist/_chunks/dk-HctVBMsG.mjs +0 -86
  201. package/dist/_chunks/dk-HctVBMsG.mjs.map +0 -1
  202. package/dist/_chunks/dk-TF-dWjzl.js +0 -86
  203. package/dist/_chunks/dk-TF-dWjzl.js.map +0 -1
  204. package/dist/_chunks/en-CE3wEy_c.mjs +0 -86
  205. package/dist/_chunks/en-CE3wEy_c.mjs.map +0 -1
  206. package/dist/_chunks/en-m608rMZx.js +0 -86
  207. package/dist/_chunks/en-m608rMZx.js.map +0 -1
  208. package/dist/_chunks/es-9381tih_.mjs +0 -86
  209. package/dist/_chunks/es-9381tih_.mjs.map +0 -1
  210. package/dist/_chunks/es-XBQsB8_9.js +0 -86
  211. package/dist/_chunks/es-XBQsB8_9.js.map +0 -1
  212. package/dist/_chunks/fr-6cz3U-IF.js +0 -50
  213. package/dist/_chunks/fr-6cz3U-IF.js.map +0 -1
  214. package/dist/_chunks/fr-CMSc77If.mjs +0 -50
  215. package/dist/_chunks/fr-CMSc77If.mjs.map +0 -1
  216. package/dist/_chunks/id-RJ934rq-.js +0 -62
  217. package/dist/_chunks/id-RJ934rq-.js.map +0 -1
  218. package/dist/_chunks/id-SDuyIkZa.mjs +0 -62
  219. package/dist/_chunks/id-SDuyIkZa.mjs.map +0 -1
  220. package/dist/_chunks/index-5-krOCaE.mjs +0 -250
  221. package/dist/_chunks/index-5-krOCaE.mjs.map +0 -1
  222. package/dist/_chunks/index-Aq7T7skI.js +0 -1191
  223. package/dist/_chunks/index-Aq7T7skI.js.map +0 -1
  224. package/dist/_chunks/index-LN8gSFZ3.mjs +0 -385
  225. package/dist/_chunks/index-LN8gSFZ3.mjs.map +0 -1
  226. package/dist/_chunks/index-RWAJu_-T.js +0 -407
  227. package/dist/_chunks/index-RWAJu_-T.js.map +0 -1
  228. package/dist/_chunks/index-SICvbeQf.mjs +0 -301
  229. package/dist/_chunks/index-SICvbeQf.mjs.map +0 -1
  230. package/dist/_chunks/index-YkMqn-9t.js +0 -249
  231. package/dist/_chunks/index-YkMqn-9t.js.map +0 -1
  232. package/dist/_chunks/index-_wwOOuf_.js +0 -320
  233. package/dist/_chunks/index-_wwOOuf_.js.map +0 -1
  234. package/dist/_chunks/index-dnfs8wOQ.js +0 -638
  235. package/dist/_chunks/index-dnfs8wOQ.js.map +0 -1
  236. package/dist/_chunks/index-l_QWM0NZ.mjs +0 -1159
  237. package/dist/_chunks/index-l_QWM0NZ.mjs.map +0 -1
  238. package/dist/_chunks/index-wiA9qAAp.mjs +0 -615
  239. package/dist/_chunks/index-wiA9qAAp.mjs.map +0 -1
  240. package/dist/_chunks/it-YhZOlM2X.js +0 -62
  241. package/dist/_chunks/it-YhZOlM2X.js.map +0 -1
  242. package/dist/_chunks/it-bvH7DgQo.mjs +0 -62
  243. package/dist/_chunks/it-bvH7DgQo.mjs.map +0 -1
  244. package/dist/_chunks/ja-o_-JPvQv.mjs +0 -48
  245. package/dist/_chunks/ja-o_-JPvQv.mjs.map +0 -1
  246. package/dist/_chunks/ja-xssHUXFv.js +0 -48
  247. package/dist/_chunks/ja-xssHUXFv.js.map +0 -1
  248. package/dist/_chunks/ko-C3mHUSJa.js +0 -86
  249. package/dist/_chunks/ko-C3mHUSJa.js.map +0 -1
  250. package/dist/_chunks/ko-XJbPSez_.mjs +0 -86
  251. package/dist/_chunks/ko-XJbPSez_.mjs.map +0 -1
  252. package/dist/_chunks/ms-II5Ea73J.mjs +0 -49
  253. package/dist/_chunks/ms-II5Ea73J.mjs.map +0 -1
  254. package/dist/_chunks/ms-d0hfg65Z.js +0 -49
  255. package/dist/_chunks/ms-d0hfg65Z.js.map +0 -1
  256. package/dist/_chunks/nl-TA7TfK_5.js +0 -48
  257. package/dist/_chunks/nl-TA7TfK_5.js.map +0 -1
  258. package/dist/_chunks/nl-vEy6TN0K.mjs +0 -48
  259. package/dist/_chunks/nl-vEy6TN0K.mjs.map +0 -1
  260. package/dist/_chunks/pl-0pUL9hdA.js +0 -86
  261. package/dist/_chunks/pl-0pUL9hdA.js.map +0 -1
  262. package/dist/_chunks/pl-2VowaFGt.mjs +0 -86
  263. package/dist/_chunks/pl-2VowaFGt.mjs.map +0 -1
  264. package/dist/_chunks/pt-BR-WNOhafR4.js +0 -44
  265. package/dist/_chunks/pt-BR-WNOhafR4.js.map +0 -1
  266. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs +0 -44
  267. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +0 -1
  268. package/dist/_chunks/pt-Rf9W51IO.mjs +0 -48
  269. package/dist/_chunks/pt-Rf9W51IO.mjs.map +0 -1
  270. package/dist/_chunks/pt-guNR9Gax.js +0 -48
  271. package/dist/_chunks/pt-guNR9Gax.js.map +0 -1
  272. package/dist/_chunks/ru-X3BMXDds.js +0 -86
  273. package/dist/_chunks/ru-X3BMXDds.js.map +0 -1
  274. package/dist/_chunks/ru-qKHnd5or.mjs +0 -86
  275. package/dist/_chunks/ru-qKHnd5or.mjs.map +0 -1
  276. package/dist/_chunks/sk-NWPw1oTN.js +0 -50
  277. package/dist/_chunks/sk-NWPw1oTN.js.map +0 -1
  278. package/dist/_chunks/sk-_Ryr-eTT.mjs +0 -50
  279. package/dist/_chunks/sk-_Ryr-eTT.mjs.map +0 -1
  280. package/dist/_chunks/sv-76NnbB__.js +0 -86
  281. package/dist/_chunks/sv-76NnbB__.js.map +0 -1
  282. package/dist/_chunks/sv-BqzScFXS.mjs +0 -86
  283. package/dist/_chunks/sv-BqzScFXS.mjs.map +0 -1
  284. package/dist/_chunks/th-WsknMEpq.mjs +0 -60
  285. package/dist/_chunks/th-WsknMEpq.mjs.map +0 -1
  286. package/dist/_chunks/th-cbppX21D.js +0 -60
  287. package/dist/_chunks/th-cbppX21D.js.map +0 -1
  288. package/dist/_chunks/tr-6mm_Fmz7.js +0 -85
  289. package/dist/_chunks/tr-6mm_Fmz7.js.map +0 -1
  290. package/dist/_chunks/tr-_DB1F1GW.mjs +0 -85
  291. package/dist/_chunks/tr-_DB1F1GW.mjs.map +0 -1
  292. package/dist/_chunks/uk-sI2I1ogF.js +0 -49
  293. package/dist/_chunks/uk-sI2I1ogF.js.map +0 -1
  294. package/dist/_chunks/uk-yxMSQAwI.mjs +0 -49
  295. package/dist/_chunks/uk-yxMSQAwI.mjs.map +0 -1
  296. package/dist/_chunks/vi-A3zJxaiI.js +0 -50
  297. package/dist/_chunks/vi-A3zJxaiI.js.map +0 -1
  298. package/dist/_chunks/vi-xY0zCW3d.mjs +0 -50
  299. package/dist/_chunks/vi-xY0zCW3d.mjs.map +0 -1
  300. package/dist/_chunks/zh-72SpmFXa.js +0 -86
  301. package/dist/_chunks/zh-72SpmFXa.js.map +0 -1
  302. package/dist/_chunks/zh-Hans-ArWWtyP4.js +0 -86
  303. package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +0 -1
  304. package/dist/_chunks/zh-Hans-E84cu4kP.mjs +0 -86
  305. package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +0 -1
  306. package/dist/_chunks/zh-OFeldzbX.mjs +0 -86
  307. package/dist/_chunks/zh-OFeldzbX.mjs.map +0 -1
  308. package/packup.config.ts +0 -22
  309. package/server/bootstrap/grant-config.js +0 -140
  310. package/strapi-server.js +0 -3
@@ -1,638 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- const designSystem = require("@strapi/design-system");
6
- const helperPlugin = require("@strapi/helper-plugin");
7
- const icons = require("@strapi/icons");
8
- const upperFirst = require("lodash/upperFirst");
9
- const reactIntl = require("react-intl");
10
- const reactQuery = require("react-query");
11
- const v2 = require("@strapi/design-system/v2");
12
- const formik = require("formik");
13
- const PropTypes = require("prop-types");
14
- const index = require("./index-YkMqn-9t.js");
15
- require("lodash/isEmpty");
16
- const yup = require("yup");
17
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
18
- function _interopNamespace(e) {
19
- if (e && e.__esModule)
20
- return e;
21
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
22
- if (e) {
23
- for (const k in e) {
24
- if (k !== "default") {
25
- const d = Object.getOwnPropertyDescriptor(e, k);
26
- Object.defineProperty(n, k, d.get ? d : {
27
- enumerable: true,
28
- get: () => e[k]
29
- });
30
- }
31
- }
32
- }
33
- n.default = e;
34
- return Object.freeze(n);
35
- }
36
- const React__namespace = /* @__PURE__ */ _interopNamespace(React);
37
- const upperFirst__default = /* @__PURE__ */ _interopDefault(upperFirst);
38
- const PropTypes__default = /* @__PURE__ */ _interopDefault(PropTypes);
39
- const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
40
- const Input = ({
41
- description,
42
- disabled,
43
- intlLabel,
44
- error,
45
- name,
46
- onChange,
47
- placeholder,
48
- providerToEditName,
49
- type,
50
- value
51
- }) => {
52
- const { formatMessage } = reactIntl.useIntl();
53
- const inputValue = name === "noName" ? `${window.strapi.backendURL}/api/connect/${providerToEditName}/callback` : value;
54
- const label = formatMessage(
55
- { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },
56
- { provider: providerToEditName, ...intlLabel.values }
57
- );
58
- const hint = description ? formatMessage(
59
- { id: description.id, defaultMessage: description.defaultMessage },
60
- { provider: providerToEditName, ...description.values }
61
- ) : "";
62
- if (type === "bool") {
63
- return /* @__PURE__ */ jsxRuntime.jsx(
64
- designSystem.ToggleInput,
65
- {
66
- "aria-label": name,
67
- checked: value,
68
- disabled,
69
- hint,
70
- label,
71
- name,
72
- offLabel: formatMessage({
73
- id: "app.components.ToggleCheckbox.off-label",
74
- defaultMessage: "Off"
75
- }),
76
- onLabel: formatMessage({
77
- id: "app.components.ToggleCheckbox.on-label",
78
- defaultMessage: "On"
79
- }),
80
- onChange: (e) => {
81
- onChange({ target: { name, value: e.target.checked } });
82
- }
83
- }
84
- );
85
- }
86
- const formattedPlaceholder = placeholder ? formatMessage(
87
- { id: placeholder.id, defaultMessage: placeholder.defaultMessage },
88
- { ...placeholder.values }
89
- ) : "";
90
- const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : "";
91
- return /* @__PURE__ */ jsxRuntime.jsx(
92
- designSystem.TextInput,
93
- {
94
- "aria-label": name,
95
- disabled,
96
- error: errorMessage,
97
- label,
98
- name,
99
- onChange,
100
- placeholder: formattedPlaceholder,
101
- type,
102
- value: inputValue
103
- }
104
- );
105
- };
106
- Input.defaultProps = {
107
- description: null,
108
- disabled: false,
109
- error: "",
110
- placeholder: null,
111
- value: ""
112
- };
113
- Input.propTypes = {
114
- description: PropTypes__default.default.shape({
115
- id: PropTypes__default.default.string.isRequired,
116
- defaultMessage: PropTypes__default.default.string.isRequired,
117
- values: PropTypes__default.default.object
118
- }),
119
- disabled: PropTypes__default.default.bool,
120
- error: PropTypes__default.default.string,
121
- intlLabel: PropTypes__default.default.shape({
122
- id: PropTypes__default.default.string.isRequired,
123
- defaultMessage: PropTypes__default.default.string.isRequired,
124
- values: PropTypes__default.default.object
125
- }).isRequired,
126
- name: PropTypes__default.default.string.isRequired,
127
- onChange: PropTypes__default.default.func.isRequired,
128
- placeholder: PropTypes__default.default.shape({
129
- id: PropTypes__default.default.string.isRequired,
130
- defaultMessage: PropTypes__default.default.string.isRequired,
131
- values: PropTypes__default.default.object
132
- }),
133
- providerToEditName: PropTypes__default.default.string.isRequired,
134
- type: PropTypes__default.default.string.isRequired,
135
- value: PropTypes__default.default.oneOfType([PropTypes__default.default.bool, PropTypes__default.default.string])
136
- };
137
- const FormModal = ({
138
- headerBreadcrumbs,
139
- initialData,
140
- isSubmiting,
141
- layout,
142
- isOpen,
143
- onSubmit,
144
- onToggle,
145
- providerToEditName
146
- }) => {
147
- const { formatMessage } = reactIntl.useIntl();
148
- if (!isOpen) {
149
- return null;
150
- }
151
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ModalLayout, { onClose: onToggle, labelledBy: "title", children: [
152
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(v2.Breadcrumbs, { label: headerBreadcrumbs.join(", "), children: headerBreadcrumbs.map((crumb, index2, arr) => /* @__PURE__ */ jsxRuntime.jsx(v2.Crumb, { isCurrent: index2 === arr.length - 1, children: crumb }, crumb)) }) }),
153
- /* @__PURE__ */ jsxRuntime.jsx(
154
- formik.Formik,
155
- {
156
- onSubmit: (values) => onSubmit(values),
157
- initialValues: initialData,
158
- validationSchema: layout.schema,
159
- validateOnChange: false,
160
- children: ({ errors, handleChange, values }) => {
161
- return /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Form, { children: [
162
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalBody, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 1, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 5, children: layout.form.map((row) => {
163
- return row.map((input) => {
164
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: input.size, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
165
- Input,
166
- {
167
- ...input,
168
- error: errors[input.name],
169
- onChange: handleChange,
170
- value: values[input.name],
171
- providerToEditName
172
- }
173
- ) }, input.name);
174
- });
175
- }) }) }) }),
176
- /* @__PURE__ */ jsxRuntime.jsx(
177
- designSystem.ModalFooter,
178
- {
179
- startActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: onToggle, type: "button", children: formatMessage({
180
- id: "app.components.Button.cancel",
181
- defaultMessage: "Cancel"
182
- }) }),
183
- endActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", loading: isSubmiting, children: formatMessage({ id: "global.save", defaultMessage: "Save" }) })
184
- }
185
- )
186
- ] });
187
- }
188
- }
189
- )
190
- ] });
191
- };
192
- FormModal.defaultProps = {
193
- initialData: null,
194
- providerToEditName: null
195
- };
196
- FormModal.propTypes = {
197
- headerBreadcrumbs: PropTypes__default.default.arrayOf(PropTypes__default.default.string).isRequired,
198
- initialData: PropTypes__default.default.object,
199
- layout: PropTypes__default.default.shape({
200
- form: PropTypes__default.default.arrayOf(PropTypes__default.default.array),
201
- schema: PropTypes__default.default.object
202
- }).isRequired,
203
- isOpen: PropTypes__default.default.bool.isRequired,
204
- isSubmiting: PropTypes__default.default.bool.isRequired,
205
- onSubmit: PropTypes__default.default.func.isRequired,
206
- onToggle: PropTypes__default.default.func.isRequired,
207
- providerToEditName: PropTypes__default.default.string
208
- };
209
- const callbackLabel = {
210
- id: index.getTrad("PopUpForm.Providers.redirectURL.front-end.label"),
211
- defaultMessage: "The redirect URL to your front-end app"
212
- };
213
- const callbackPlaceholder = {
214
- id: "http://www.client-app.com",
215
- defaultMessage: "http://www.client-app.com"
216
- };
217
- const enabledDescription = {
218
- id: index.getTrad("PopUpForm.Providers.enabled.description"),
219
- defaultMessage: "If disabled, users won't be able to use this provider."
220
- };
221
- const enabledLabel = {
222
- id: index.getTrad("PopUpForm.Providers.enabled.label"),
223
- defaultMessage: "Enable"
224
- };
225
- const keyLabel = { id: index.getTrad("PopUpForm.Providers.key.label"), defaultMessage: "Client ID" };
226
- const hintLabel = {
227
- id: index.getTrad("PopUpForm.Providers.redirectURL.label"),
228
- defaultMessage: "The redirect URL to add in your {provider} application configurations"
229
- };
230
- const textPlaceholder = {
231
- id: index.getTrad("PopUpForm.Providers.key.placeholder"),
232
- defaultMessage: "TEXT"
233
- };
234
- const secretLabel = {
235
- id: index.getTrad("PopUpForm.Providers.secret.label"),
236
- defaultMessage: "Client Secret"
237
- };
238
- const forms = {
239
- email: {
240
- form: [
241
- [
242
- {
243
- intlLabel: enabledLabel,
244
- name: "enabled",
245
- type: "bool",
246
- description: enabledDescription,
247
- size: 6
248
- // TODO check if still needed
249
- // validations: {
250
- // required: true,
251
- // },
252
- }
253
- ]
254
- ],
255
- schema: yup__namespace.object().shape({
256
- enabled: yup__namespace.bool().required(helperPlugin.translatedErrors.required)
257
- })
258
- },
259
- providers: {
260
- form: [
261
- [
262
- {
263
- intlLabel: enabledLabel,
264
- name: "enabled",
265
- type: "bool",
266
- description: enabledDescription,
267
- size: 6,
268
- validations: {
269
- required: true
270
- }
271
- }
272
- ],
273
- [
274
- {
275
- intlLabel: keyLabel,
276
- name: "key",
277
- type: "text",
278
- placeholder: textPlaceholder,
279
- size: 12,
280
- validations: {
281
- required: true
282
- }
283
- }
284
- ],
285
- [
286
- {
287
- intlLabel: secretLabel,
288
- name: "secret",
289
- type: "text",
290
- placeholder: textPlaceholder,
291
- size: 12,
292
- validations: {
293
- required: true
294
- }
295
- }
296
- ],
297
- [
298
- {
299
- intlLabel: callbackLabel,
300
- placeholder: callbackPlaceholder,
301
- name: "callback",
302
- type: "text",
303
- size: 12,
304
- validations: {
305
- required: true
306
- }
307
- }
308
- ],
309
- [
310
- {
311
- intlLabel: hintLabel,
312
- name: "noName",
313
- type: "text",
314
- validations: {},
315
- size: 12,
316
- disabled: true
317
- }
318
- ]
319
- ],
320
- schema: yup__namespace.object().shape({
321
- enabled: yup__namespace.bool().required(helperPlugin.translatedErrors.required),
322
- key: yup__namespace.string().when("enabled", {
323
- is: true,
324
- then: yup__namespace.string().required(helperPlugin.translatedErrors.required),
325
- otherwise: yup__namespace.string()
326
- }),
327
- secret: yup__namespace.string().when("enabled", {
328
- is: true,
329
- then: yup__namespace.string().required(helperPlugin.translatedErrors.required),
330
- otherwise: yup__namespace.string()
331
- }),
332
- callback: yup__namespace.string().when("enabled", {
333
- is: true,
334
- then: yup__namespace.string().required(helperPlugin.translatedErrors.required),
335
- otherwise: yup__namespace.string()
336
- })
337
- })
338
- },
339
- providersWithSubdomain: {
340
- form: [
341
- [
342
- {
343
- intlLabel: enabledLabel,
344
- name: "enabled",
345
- type: "bool",
346
- description: enabledDescription,
347
- size: 6,
348
- validations: {
349
- required: true
350
- }
351
- }
352
- ],
353
- [
354
- {
355
- intlLabel: keyLabel,
356
- name: "key",
357
- type: "text",
358
- placeholder: textPlaceholder,
359
- size: 12,
360
- validations: {
361
- required: true
362
- }
363
- }
364
- ],
365
- [
366
- {
367
- intlLabel: secretLabel,
368
- name: "secret",
369
- type: "text",
370
- placeholder: textPlaceholder,
371
- size: 12,
372
- validations: {
373
- required: true
374
- }
375
- }
376
- ],
377
- [
378
- {
379
- intlLabel: {
380
- id: index.getTrad({ id: "PopUpForm.Providers.jwksurl.label" }),
381
- defaultMessage: "JWKS URL"
382
- },
383
- name: "jwksurl",
384
- type: "text",
385
- placeholder: textPlaceholder,
386
- size: 12,
387
- validations: {
388
- required: false
389
- }
390
- }
391
- ],
392
- [
393
- {
394
- intlLabel: {
395
- id: index.getTrad("PopUpForm.Providers.subdomain.label"),
396
- defaultMessage: "Host URI (Subdomain)"
397
- },
398
- name: "subdomain",
399
- type: "text",
400
- placeholder: {
401
- id: index.getTrad("PopUpForm.Providers.subdomain.placeholder"),
402
- defaultMessage: "my.subdomain.com"
403
- },
404
- size: 12,
405
- validations: {
406
- required: true
407
- }
408
- }
409
- ],
410
- [
411
- {
412
- intlLabel: callbackLabel,
413
- placeholder: callbackPlaceholder,
414
- name: "callback",
415
- type: "text",
416
- size: 12,
417
- validations: {
418
- required: true
419
- }
420
- }
421
- ],
422
- [
423
- {
424
- intlLabel: hintLabel,
425
- name: "noName",
426
- type: "text",
427
- validations: {},
428
- size: 12,
429
- disabled: true
430
- }
431
- ]
432
- ],
433
- schema: yup__namespace.object().shape({
434
- enabled: yup__namespace.bool().required(helperPlugin.translatedErrors.required),
435
- key: yup__namespace.string().when("enabled", {
436
- is: true,
437
- then: yup__namespace.string().required(helperPlugin.translatedErrors.required),
438
- otherwise: yup__namespace.string()
439
- }),
440
- secret: yup__namespace.string().when("enabled", {
441
- is: true,
442
- then: yup__namespace.string().required(helperPlugin.translatedErrors.required),
443
- otherwise: yup__namespace.string()
444
- }),
445
- subdomain: yup__namespace.string().when("enabled", {
446
- is: true,
447
- then: yup__namespace.string().required(helperPlugin.translatedErrors.required),
448
- otherwise: yup__namespace.string()
449
- }),
450
- callback: yup__namespace.string().when("enabled", {
451
- is: true,
452
- then: yup__namespace.string().required(helperPlugin.translatedErrors.required),
453
- otherwise: yup__namespace.string()
454
- })
455
- })
456
- }
457
- };
458
- const ProvidersPage = () => {
459
- const { formatMessage, locale } = reactIntl.useIntl();
460
- const queryClient = reactQuery.useQueryClient();
461
- const { trackUsage } = helperPlugin.useTracking();
462
- const [isOpen, setIsOpen] = React__namespace.useState(false);
463
- const [providerToEditName, setProviderToEditName] = React__namespace.useState(null);
464
- const toggleNotification = helperPlugin.useNotification();
465
- const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
466
- const { get, put } = helperPlugin.useFetchClient();
467
- const { formatAPIError } = helperPlugin.useAPIErrorHandler();
468
- const formatter = helperPlugin.useCollator(locale, {
469
- sensitivity: "base"
470
- });
471
- helperPlugin.useFocusWhenNavigate();
472
- const {
473
- isLoading: isLoadingPermissions,
474
- allowedActions: { canUpdate }
475
- } = helperPlugin.useRBAC({ update: index.PERMISSIONS.updateProviders });
476
- const { isLoading: isLoadingData, data } = reactQuery.useQuery(
477
- ["users-permissions", "get-providers"],
478
- async () => {
479
- const { data: data2 } = await get("/users-permissions/providers");
480
- return data2;
481
- },
482
- {
483
- initialData: {}
484
- }
485
- );
486
- const submitMutation = reactQuery.useMutation((body) => put("/users-permissions/providers", body), {
487
- async onSuccess() {
488
- await queryClient.invalidateQueries(["users-permissions", "providers"]);
489
- toggleNotification({
490
- type: "success",
491
- message: { id: index.getTrad("notification.success.submit") }
492
- });
493
- trackUsage("didEditAuthenticationProvider");
494
- handleToggleModal();
495
- unlockApp();
496
- },
497
- onError(error) {
498
- toggleNotification({
499
- type: "warning",
500
- message: formatAPIError(error)
501
- });
502
- unlockApp();
503
- },
504
- refetchActive: false
505
- });
506
- const providers = Object.entries(data).reduce((acc, [name, provider]) => {
507
- const { icon, enabled, subdomain } = provider;
508
- acc.push({
509
- name,
510
- icon: icon === "envelope" ? ["fas", "envelope"] : ["fab", icon],
511
- enabled,
512
- subdomain
513
- });
514
- return acc;
515
- }, []).sort((a, b) => formatter.compare(a.name, b.name));
516
- const isLoading = isLoadingData || isLoadingPermissions;
517
- const isProviderWithSubdomain = React__namespace.useMemo(() => {
518
- if (!providerToEditName) {
519
- return false;
520
- }
521
- const providerToEdit = providers.find((obj) => obj.name === providerToEditName);
522
- return !!providerToEdit?.subdomain;
523
- }, [providers, providerToEditName]);
524
- const layoutToRender = React__namespace.useMemo(() => {
525
- if (providerToEditName === "email") {
526
- return forms.email;
527
- }
528
- if (isProviderWithSubdomain) {
529
- return forms.providersWithSubdomain;
530
- }
531
- return forms.providers;
532
- }, [providerToEditName, isProviderWithSubdomain]);
533
- const handleToggleModal = () => {
534
- setIsOpen((prev) => !prev);
535
- };
536
- const handleClickEdit = (provider) => {
537
- if (canUpdate) {
538
- setProviderToEditName(provider.name);
539
- handleToggleModal();
540
- }
541
- };
542
- const handleSubmit = async (values) => {
543
- lockApp();
544
- trackUsage("willEditAuthenticationProvider");
545
- submitMutation.mutate({ providers: { ...data, [providerToEditName]: values } });
546
- };
547
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Layout, { children: [
548
- /* @__PURE__ */ jsxRuntime.jsx(
549
- helperPlugin.SettingsPageTitle,
550
- {
551
- name: formatMessage({
552
- id: index.getTrad("HeaderNav.link.providers"),
553
- defaultMessage: "Providers"
554
- })
555
- }
556
- ),
557
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { children: [
558
- /* @__PURE__ */ jsxRuntime.jsx(
559
- designSystem.HeaderLayout,
560
- {
561
- title: formatMessage({
562
- id: index.getTrad("HeaderNav.link.providers"),
563
- defaultMessage: "Providers"
564
- })
565
- }
566
- ),
567
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount: 3, rowCount: providers.length + 1, children: [
568
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
569
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.name", defaultMessage: "Name" }) }) }),
570
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: index.getTrad("Providers.status"), defaultMessage: "Status" }) }) }),
571
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: formatMessage({
572
- id: "global.settings",
573
- defaultMessage: "Settings"
574
- }) }) }) })
575
- ] }) }),
576
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: providers.map((provider) => /* @__PURE__ */ jsxRuntime.jsxs(
577
- designSystem.Tr,
578
- {
579
- ...helperPlugin.onRowClick({
580
- fn: () => handleClickEdit(provider),
581
- condition: canUpdate
582
- }),
583
- children: [
584
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "45%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "semiBold", textColor: "neutral800", children: provider.name }) }),
585
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "65%", children: /* @__PURE__ */ jsxRuntime.jsx(
586
- designSystem.Typography,
587
- {
588
- textColor: provider.enabled ? "success600" : "danger600",
589
- "data-testid": `enable-${provider.name}`,
590
- children: provider.enabled ? formatMessage({
591
- id: "global.enabled",
592
- defaultMessage: "Enabled"
593
- }) : formatMessage({
594
- id: "global.disabled",
595
- defaultMessage: "Disabled"
596
- })
597
- }
598
- ) }),
599
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { ...helperPlugin.stopPropagation, children: canUpdate && /* @__PURE__ */ jsxRuntime.jsx(
600
- designSystem.IconButton,
601
- {
602
- onClick: () => handleClickEdit(provider),
603
- noBorder: true,
604
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {}),
605
- label: "Edit"
606
- }
607
- ) })
608
- ]
609
- },
610
- provider.name
611
- )) })
612
- ] }) })
613
- ] }),
614
- /* @__PURE__ */ jsxRuntime.jsx(
615
- FormModal,
616
- {
617
- initialData: data[providerToEditName],
618
- isOpen,
619
- isSubmiting: submitMutation.isLoading,
620
- layout: layoutToRender,
621
- headerBreadcrumbs: [
622
- formatMessage({
623
- id: index.getTrad("PopUpForm.header.edit.providers"),
624
- defaultMessage: "Edit Provider"
625
- }),
626
- upperFirst__default.default(providerToEditName)
627
- ],
628
- onToggle: handleToggleModal,
629
- onSubmit: handleSubmit,
630
- providerToEditName
631
- }
632
- )
633
- ] });
634
- };
635
- const ProtectedProvidersPage = () => /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.readProviders, children: /* @__PURE__ */ jsxRuntime.jsx(ProvidersPage, {}) });
636
- exports.ProvidersPage = ProvidersPage;
637
- exports.default = ProtectedProvidersPage;
638
- //# sourceMappingURL=index-dnfs8wOQ.js.map