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

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 (157) hide show
  1. package/.eslintignore +1 -2
  2. package/.eslintrc +17 -0
  3. package/LICENSE +18 -3
  4. package/admin/src/index.js +5 -15
  5. package/admin/src/pages/Providers/{index.js → index.jsx} +1 -1
  6. package/dist/_chunks/ar-MvD8Ghac.mjs +44 -0
  7. package/dist/_chunks/ar-MvD8Ghac.mjs.map +1 -0
  8. package/dist/_chunks/ar-t5qTFaAD.js +44 -0
  9. package/dist/_chunks/ar-t5qTFaAD.js.map +1 -0
  10. package/dist/_chunks/cs-BMuXwxA1.mjs +50 -0
  11. package/dist/_chunks/cs-BMuXwxA1.mjs.map +1 -0
  12. package/dist/_chunks/cs-I8N4u-Sd.js +50 -0
  13. package/dist/_chunks/cs-I8N4u-Sd.js.map +1 -0
  14. package/dist/_chunks/de-YTjtq89K.js +62 -0
  15. package/dist/_chunks/de-YTjtq89K.js.map +1 -0
  16. package/dist/_chunks/de-zs2qqc0W.mjs +62 -0
  17. package/dist/_chunks/de-zs2qqc0W.mjs.map +1 -0
  18. package/dist/_chunks/dk-HctVBMsG.mjs +86 -0
  19. package/dist/_chunks/dk-HctVBMsG.mjs.map +1 -0
  20. package/dist/_chunks/dk-TF-dWjzl.js +86 -0
  21. package/dist/_chunks/dk-TF-dWjzl.js.map +1 -0
  22. package/dist/_chunks/en-CE3wEy_c.mjs +86 -0
  23. package/dist/_chunks/en-CE3wEy_c.mjs.map +1 -0
  24. package/dist/_chunks/en-m608rMZx.js +86 -0
  25. package/dist/_chunks/en-m608rMZx.js.map +1 -0
  26. package/dist/_chunks/es-9381tih_.mjs +86 -0
  27. package/dist/_chunks/es-9381tih_.mjs.map +1 -0
  28. package/dist/_chunks/es-XBQsB8_9.js +86 -0
  29. package/dist/_chunks/es-XBQsB8_9.js.map +1 -0
  30. package/dist/_chunks/fr-6cz3U-IF.js +50 -0
  31. package/dist/_chunks/fr-6cz3U-IF.js.map +1 -0
  32. package/dist/_chunks/fr-CMSc77If.mjs +50 -0
  33. package/dist/_chunks/fr-CMSc77If.mjs.map +1 -0
  34. package/dist/_chunks/id-RJ934rq-.js +62 -0
  35. package/dist/_chunks/id-RJ934rq-.js.map +1 -0
  36. package/dist/_chunks/id-SDuyIkZa.mjs +62 -0
  37. package/dist/_chunks/id-SDuyIkZa.mjs.map +1 -0
  38. package/dist/_chunks/index-7cDy9OFu.mjs +301 -0
  39. package/dist/_chunks/index-7cDy9OFu.mjs.map +1 -0
  40. package/dist/_chunks/index-F7bt_caK.mjs +1159 -0
  41. package/dist/_chunks/index-F7bt_caK.mjs.map +1 -0
  42. package/dist/_chunks/index-H1mhyWXP.mjs +385 -0
  43. package/dist/_chunks/index-H1mhyWXP.mjs.map +1 -0
  44. package/dist/_chunks/index-Uclk5uc0.mjs +250 -0
  45. package/dist/_chunks/index-Uclk5uc0.mjs.map +1 -0
  46. package/dist/_chunks/index-cNS7FpQt.js +320 -0
  47. package/dist/_chunks/index-cNS7FpQt.js.map +1 -0
  48. package/dist/_chunks/index-e4dnRonE.js +407 -0
  49. package/dist/_chunks/index-e4dnRonE.js.map +1 -0
  50. package/dist/_chunks/index-oFjO2L1S.mjs +615 -0
  51. package/dist/_chunks/index-oFjO2L1S.mjs.map +1 -0
  52. package/dist/_chunks/index-rU_BkerL.js +1191 -0
  53. package/dist/_chunks/index-rU_BkerL.js.map +1 -0
  54. package/dist/_chunks/index-sm9u2cPw.js +638 -0
  55. package/dist/_chunks/index-sm9u2cPw.js.map +1 -0
  56. package/dist/_chunks/index-vLWD-DRR.js +249 -0
  57. package/dist/_chunks/index-vLWD-DRR.js.map +1 -0
  58. package/dist/_chunks/it-YhZOlM2X.js +62 -0
  59. package/dist/_chunks/it-YhZOlM2X.js.map +1 -0
  60. package/dist/_chunks/it-bvH7DgQo.mjs +62 -0
  61. package/dist/_chunks/it-bvH7DgQo.mjs.map +1 -0
  62. package/dist/_chunks/ja-o_-JPvQv.mjs +48 -0
  63. package/dist/_chunks/ja-o_-JPvQv.mjs.map +1 -0
  64. package/dist/_chunks/ja-xssHUXFv.js +48 -0
  65. package/dist/_chunks/ja-xssHUXFv.js.map +1 -0
  66. package/dist/_chunks/ko-C3mHUSJa.js +86 -0
  67. package/dist/_chunks/ko-C3mHUSJa.js.map +1 -0
  68. package/dist/_chunks/ko-XJbPSez_.mjs +86 -0
  69. package/dist/_chunks/ko-XJbPSez_.mjs.map +1 -0
  70. package/dist/_chunks/ms-II5Ea73J.mjs +49 -0
  71. package/dist/_chunks/ms-II5Ea73J.mjs.map +1 -0
  72. package/dist/_chunks/ms-d0hfg65Z.js +49 -0
  73. package/dist/_chunks/ms-d0hfg65Z.js.map +1 -0
  74. package/dist/_chunks/nl-TA7TfK_5.js +48 -0
  75. package/dist/_chunks/nl-TA7TfK_5.js.map +1 -0
  76. package/dist/_chunks/nl-vEy6TN0K.mjs +48 -0
  77. package/dist/_chunks/nl-vEy6TN0K.mjs.map +1 -0
  78. package/dist/_chunks/pl-0pUL9hdA.js +86 -0
  79. package/dist/_chunks/pl-0pUL9hdA.js.map +1 -0
  80. package/dist/_chunks/pl-2VowaFGt.mjs +86 -0
  81. package/dist/_chunks/pl-2VowaFGt.mjs.map +1 -0
  82. package/dist/_chunks/pt-BR-WNOhafR4.js +44 -0
  83. package/dist/_chunks/pt-BR-WNOhafR4.js.map +1 -0
  84. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs +44 -0
  85. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +1 -0
  86. package/dist/_chunks/pt-Rf9W51IO.mjs +48 -0
  87. package/dist/_chunks/pt-Rf9W51IO.mjs.map +1 -0
  88. package/dist/_chunks/pt-guNR9Gax.js +48 -0
  89. package/dist/_chunks/pt-guNR9Gax.js.map +1 -0
  90. package/dist/_chunks/ru-X3BMXDds.js +86 -0
  91. package/dist/_chunks/ru-X3BMXDds.js.map +1 -0
  92. package/dist/_chunks/ru-qKHnd5or.mjs +86 -0
  93. package/dist/_chunks/ru-qKHnd5or.mjs.map +1 -0
  94. package/dist/_chunks/sk-NWPw1oTN.js +50 -0
  95. package/dist/_chunks/sk-NWPw1oTN.js.map +1 -0
  96. package/dist/_chunks/sk-_Ryr-eTT.mjs +50 -0
  97. package/dist/_chunks/sk-_Ryr-eTT.mjs.map +1 -0
  98. package/dist/_chunks/sv-76NnbB__.js +86 -0
  99. package/dist/_chunks/sv-76NnbB__.js.map +1 -0
  100. package/dist/_chunks/sv-BqzScFXS.mjs +86 -0
  101. package/dist/_chunks/sv-BqzScFXS.mjs.map +1 -0
  102. package/dist/_chunks/th-WsknMEpq.mjs +60 -0
  103. package/dist/_chunks/th-WsknMEpq.mjs.map +1 -0
  104. package/dist/_chunks/th-cbppX21D.js +60 -0
  105. package/dist/_chunks/th-cbppX21D.js.map +1 -0
  106. package/dist/_chunks/tr-6mm_Fmz7.js +85 -0
  107. package/dist/_chunks/tr-6mm_Fmz7.js.map +1 -0
  108. package/dist/_chunks/tr-_DB1F1GW.mjs +85 -0
  109. package/dist/_chunks/tr-_DB1F1GW.mjs.map +1 -0
  110. package/dist/_chunks/uk-sI2I1ogF.js +49 -0
  111. package/dist/_chunks/uk-sI2I1ogF.js.map +1 -0
  112. package/dist/_chunks/uk-yxMSQAwI.mjs +49 -0
  113. package/dist/_chunks/uk-yxMSQAwI.mjs.map +1 -0
  114. package/dist/_chunks/vi-A3zJxaiI.js +50 -0
  115. package/dist/_chunks/vi-A3zJxaiI.js.map +1 -0
  116. package/dist/_chunks/vi-xY0zCW3d.mjs +50 -0
  117. package/dist/_chunks/vi-xY0zCW3d.mjs.map +1 -0
  118. package/dist/_chunks/zh-72SpmFXa.js +86 -0
  119. package/dist/_chunks/zh-72SpmFXa.js.map +1 -0
  120. package/dist/_chunks/zh-Hans-ArWWtyP4.js +86 -0
  121. package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +1 -0
  122. package/dist/_chunks/zh-Hans-E84cu4kP.mjs +86 -0
  123. package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +1 -0
  124. package/dist/_chunks/zh-OFeldzbX.mjs +86 -0
  125. package/dist/_chunks/zh-OFeldzbX.mjs.map +1 -0
  126. package/dist/admin/index.js +5 -0
  127. package/dist/admin/index.js.map +1 -0
  128. package/dist/admin/index.mjs +6 -0
  129. package/dist/admin/index.mjs.map +1 -0
  130. package/package.json +33 -13
  131. package/packup.config.ts +22 -0
  132. package/server/bootstrap/grant-config.js +9 -0
  133. package/server/bootstrap/users-permissions-actions.js +6 -0
  134. package/server/config.js +29 -0
  135. package/server/controllers/auth.js +22 -4
  136. package/server/services/providers-registry.js +21 -2
  137. package/.eslintrc.js +0 -14
  138. package/strapi-admin.js +0 -3
  139. /package/admin/src/components/BoundRoute/{index.js → index.jsx} +0 -0
  140. /package/admin/src/components/FormModal/Input/{index.js → index.jsx} +0 -0
  141. /package/admin/src/components/FormModal/{index.js → index.jsx} +0 -0
  142. /package/admin/src/components/Permissions/PermissionRow/{CheckboxWrapper.js → CheckboxWrapper.jsx} +0 -0
  143. /package/admin/src/components/Permissions/PermissionRow/{SubCategory.js → SubCategory.jsx} +0 -0
  144. /package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +0 -0
  145. /package/admin/src/components/Permissions/{index.js → index.jsx} +0 -0
  146. /package/admin/src/components/Policies/{index.js → index.jsx} +0 -0
  147. /package/admin/src/components/UsersPermissions/{index.js → index.jsx} +0 -0
  148. /package/admin/src/contexts/UsersPermissionsContext/{index.js → index.jsx} +0 -0
  149. /package/admin/src/pages/AdvancedSettings/{index.js → index.jsx} +0 -0
  150. /package/admin/src/pages/EmailTemplates/components/{EmailForm.js → EmailForm.jsx} +0 -0
  151. /package/admin/src/pages/EmailTemplates/components/{EmailTable.js → EmailTable.jsx} +0 -0
  152. /package/admin/src/pages/EmailTemplates/{index.js → index.jsx} +0 -0
  153. /package/admin/src/pages/Roles/{index.js → index.jsx} +0 -0
  154. /package/admin/src/pages/Roles/pages/{CreatePage.js → CreatePage.jsx} +0 -0
  155. /package/admin/src/pages/Roles/pages/{EditPage.js → EditPage.jsx} +0 -0
  156. /package/admin/src/pages/Roles/pages/ListPage/components/{TableBody.js → TableBody.jsx} +0 -0
  157. /package/admin/src/pages/Roles/pages/ListPage/{index.js → index.jsx} +0 -0
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const id = {
4
+ "BoundRoute.title": "Rute terikat ke",
5
+ "EditForm.inputSelect.description.role": "Ini akan melampirkan pengguna baru yang diautentikasi ke peran yang dipilih.",
6
+ "EditForm.inputSelect.label.role": "Peran default untuk pengguna yang diautentikasi",
7
+ "EditForm.inputToggle.description.email": "Larang pengguna membuat beberapa akun menggunakan alamat email yang sama dengan penyedia otentikasi yang berbeda.",
8
+ "EditForm.inputToggle.description.email-confirmation": "Saat diaktifkan (ON), pengguna baru yang terdaftar menerima email konfirmasi.",
9
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Setelah Anda mengkonfirmasi email Anda, pilih ke mana Anda akan diarahkan.",
10
+ "EditForm.inputToggle.description.email-reset-password": "URL halaman setel ulang sandi aplikasi Anda",
11
+ "EditForm.inputToggle.description.sign-up": "Saat dinonaktifkan (OFF), proses pendaftaran dilarang. Tidak ada yang bisa berlangganan lagi tidak peduli penyedia yang digunakan.",
12
+ "EditForm.inputToggle.label.email": "Satu akun per alamat email",
13
+ "EditForm.inputToggle.label.email-confirmation": "Aktifkan konfirmasi email",
14
+ "EditForm.inputToggle.label.email-confirmation-redirection": "URL pengalihan",
15
+ "EditForm.inputToggle.label.email-reset-password": "Atur ulang halaman kata sandi",
16
+ "EditForm.inputToggle.label.sign-up": "Aktifkan pendaftaran",
17
+ "Email.template.email_confirmation": "Konfirmasi alamat email",
18
+ "HeaderNav.link.advancedSettings": "Pengaturan lanjutan",
19
+ "HeaderNav.link.emailTemplates": "Template email",
20
+ "HeaderNav.link.providers": "Penyedia",
21
+ "Plugin.permissions.plugins.description": "Tentukan semua tindakan yang diizinkan untuk plugin {name}.",
22
+ "Plugins.header.description": "Hanya tindakan yang terikat oleh rute yang dicantumkan di bawah.",
23
+ "Plugins.header.title": "Izin",
24
+ "Policies.header.hint": "Pilih tindakan aplikasi atau tindakan plugin dan klik ikon roda gigi untuk menampilkan rute terikat",
25
+ "Policies.header.title": "Pengaturan lanjutan",
26
+ "PopUpForm.Email.email_templates.inputDescription": "Jika Anda tidak yakin bagaimana menggunakan variabel, {link}",
27
+ "PopUpForm.Email.link.documentation": "lihat dokumentasi kami.",
28
+ "PopUpForm.Email.options.from.email.label": "Email pengirim",
29
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
30
+ "PopUpForm.Email.options.from.name.label": "Nama pengirim",
31
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
32
+ "PopUpForm.Email.options.message.label": "Pesan",
33
+ "PopUpForm.Email.options.object.label": "Subyek",
34
+ "PopUpForm.Email.options.object.placeholder": "Harap konfirmasi alamat email Anda untuk% APP_NAME%",
35
+ "PopUpForm.Email.options.response_email.label": "Email tanggapan",
36
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
37
+ "PopUpForm.Providers.enabled.description": "Jika dinonaktifkan, pengguna tidak akan dapat menggunakan penyedia ini.",
38
+ "PopUpForm.Providers.enabled.label": "Memungkinkan",
39
+ "PopUpForm.Providers.key.label": "ID Klien",
40
+ "PopUpForm.Providers.key.placeholder": "TEKS",
41
+ "PopUpForm.Providers.redirectURL.front-end.label": "URL pengalihan ke aplikasi front-end Anda",
42
+ "PopUpForm.Providers.redirectURL.label": "URL pengalihan yang akan ditambahkan dalam konfigurasi aplikasi {provider} Anda",
43
+ "PopUpForm.Providers.secret.label": "Client Secret",
44
+ "PopUpForm.Providers.secret.placeholder": "TEKS",
45
+ "PopUpForm.Providers.subdomain.label": "URI Host (Subdomain)",
46
+ "PopUpForm.Providers.subdomain.placeholder": "saya.subdomain.com",
47
+ "PopUpForm.header.edit.email-templates": "Edit Template Email",
48
+ "PopUpForm.header.edit.providers": "Edit Penyedia",
49
+ "Settings.roles.deleted": "Peran dihapus",
50
+ "Settings.roles.edited": "Peran diedit",
51
+ "Settings.section-label": "Plugin Pengguna & Izin",
52
+ "notification.success.submit": "Pengaturan telah diperbarui",
53
+ "plugin.description.long": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT. Plugin ini juga dilengkapi dengan strategi ACL yang memungkinkan Anda untuk mengelola izin di antara grup pengguna.",
54
+ "plugin.description.short": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT",
55
+ "plugin.name": "Plugin Pengguna & Izin",
56
+ "popUpWarning.button.cancel": "Batalkan",
57
+ "popUpWarning.button.confirm": "Konfirmasi",
58
+ "popUpWarning.title": "Harap konfirmasi",
59
+ "popUpWarning.warning.cancel": "Anda yakin ingin membatalkan modifikasi Anda?"
60
+ };
61
+ exports.default = id;
62
+ //# sourceMappingURL=id-RJ934rq-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-RJ934rq-.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,62 @@
1
+ const id = {
2
+ "BoundRoute.title": "Rute terikat ke",
3
+ "EditForm.inputSelect.description.role": "Ini akan melampirkan pengguna baru yang diautentikasi ke peran yang dipilih.",
4
+ "EditForm.inputSelect.label.role": "Peran default untuk pengguna yang diautentikasi",
5
+ "EditForm.inputToggle.description.email": "Larang pengguna membuat beberapa akun menggunakan alamat email yang sama dengan penyedia otentikasi yang berbeda.",
6
+ "EditForm.inputToggle.description.email-confirmation": "Saat diaktifkan (ON), pengguna baru yang terdaftar menerima email konfirmasi.",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Setelah Anda mengkonfirmasi email Anda, pilih ke mana Anda akan diarahkan.",
8
+ "EditForm.inputToggle.description.email-reset-password": "URL halaman setel ulang sandi aplikasi Anda",
9
+ "EditForm.inputToggle.description.sign-up": "Saat dinonaktifkan (OFF), proses pendaftaran dilarang. Tidak ada yang bisa berlangganan lagi tidak peduli penyedia yang digunakan.",
10
+ "EditForm.inputToggle.label.email": "Satu akun per alamat email",
11
+ "EditForm.inputToggle.label.email-confirmation": "Aktifkan konfirmasi email",
12
+ "EditForm.inputToggle.label.email-confirmation-redirection": "URL pengalihan",
13
+ "EditForm.inputToggle.label.email-reset-password": "Atur ulang halaman kata sandi",
14
+ "EditForm.inputToggle.label.sign-up": "Aktifkan pendaftaran",
15
+ "Email.template.email_confirmation": "Konfirmasi alamat email",
16
+ "HeaderNav.link.advancedSettings": "Pengaturan lanjutan",
17
+ "HeaderNav.link.emailTemplates": "Template email",
18
+ "HeaderNav.link.providers": "Penyedia",
19
+ "Plugin.permissions.plugins.description": "Tentukan semua tindakan yang diizinkan untuk plugin {name}.",
20
+ "Plugins.header.description": "Hanya tindakan yang terikat oleh rute yang dicantumkan di bawah.",
21
+ "Plugins.header.title": "Izin",
22
+ "Policies.header.hint": "Pilih tindakan aplikasi atau tindakan plugin dan klik ikon roda gigi untuk menampilkan rute terikat",
23
+ "Policies.header.title": "Pengaturan lanjutan",
24
+ "PopUpForm.Email.email_templates.inputDescription": "Jika Anda tidak yakin bagaimana menggunakan variabel, {link}",
25
+ "PopUpForm.Email.link.documentation": "lihat dokumentasi kami.",
26
+ "PopUpForm.Email.options.from.email.label": "Email pengirim",
27
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
28
+ "PopUpForm.Email.options.from.name.label": "Nama pengirim",
29
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
30
+ "PopUpForm.Email.options.message.label": "Pesan",
31
+ "PopUpForm.Email.options.object.label": "Subyek",
32
+ "PopUpForm.Email.options.object.placeholder": "Harap konfirmasi alamat email Anda untuk% APP_NAME%",
33
+ "PopUpForm.Email.options.response_email.label": "Email tanggapan",
34
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
35
+ "PopUpForm.Providers.enabled.description": "Jika dinonaktifkan, pengguna tidak akan dapat menggunakan penyedia ini.",
36
+ "PopUpForm.Providers.enabled.label": "Memungkinkan",
37
+ "PopUpForm.Providers.key.label": "ID Klien",
38
+ "PopUpForm.Providers.key.placeholder": "TEKS",
39
+ "PopUpForm.Providers.redirectURL.front-end.label": "URL pengalihan ke aplikasi front-end Anda",
40
+ "PopUpForm.Providers.redirectURL.label": "URL pengalihan yang akan ditambahkan dalam konfigurasi aplikasi {provider} Anda",
41
+ "PopUpForm.Providers.secret.label": "Client Secret",
42
+ "PopUpForm.Providers.secret.placeholder": "TEKS",
43
+ "PopUpForm.Providers.subdomain.label": "URI Host (Subdomain)",
44
+ "PopUpForm.Providers.subdomain.placeholder": "saya.subdomain.com",
45
+ "PopUpForm.header.edit.email-templates": "Edit Template Email",
46
+ "PopUpForm.header.edit.providers": "Edit Penyedia",
47
+ "Settings.roles.deleted": "Peran dihapus",
48
+ "Settings.roles.edited": "Peran diedit",
49
+ "Settings.section-label": "Plugin Pengguna & Izin",
50
+ "notification.success.submit": "Pengaturan telah diperbarui",
51
+ "plugin.description.long": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT. Plugin ini juga dilengkapi dengan strategi ACL yang memungkinkan Anda untuk mengelola izin di antara grup pengguna.",
52
+ "plugin.description.short": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT",
53
+ "plugin.name": "Plugin Pengguna & Izin",
54
+ "popUpWarning.button.cancel": "Batalkan",
55
+ "popUpWarning.button.confirm": "Konfirmasi",
56
+ "popUpWarning.title": "Harap konfirmasi",
57
+ "popUpWarning.warning.cancel": "Anda yakin ingin membatalkan modifikasi Anda?"
58
+ };
59
+ export {
60
+ id as default
61
+ };
62
+ //# sourceMappingURL=id-SDuyIkZa.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-SDuyIkZa.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,301 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import "react";
3
+ import { useNotifyAT, Main, HeaderLayout, ContentLayout, Button, Box, Flex, Typography, Grid, GridItem, Select, Option } from "@strapi/design-system";
4
+ import { translatedErrors, CheckPagePermissions, useNotification, useOverlayBlocker, useFetchClient, useAPIErrorHandler, useFocusWhenNavigate, useRBAC, SettingsPageTitle, LoadingIndicatorPage, Form, GenericInput } from "@strapi/helper-plugin";
5
+ import { Check } from "@strapi/icons";
6
+ import { Formik } from "formik";
7
+ import { useIntl } from "react-intl";
8
+ import { useQueryClient, useQuery, useMutation } from "react-query";
9
+ import { g as getTrad, P as PERMISSIONS } from "./index-Uclk5uc0.mjs";
10
+ import "lodash/isEmpty";
11
+ import * as yup from "yup";
12
+ const layout = [
13
+ {
14
+ intlLabel: {
15
+ id: getTrad("EditForm.inputToggle.label.email"),
16
+ defaultMessage: "One account per email address"
17
+ },
18
+ description: {
19
+ id: getTrad("EditForm.inputToggle.description.email"),
20
+ defaultMessage: "Disallow the user to create multiple accounts using the same email address with different authentication providers."
21
+ },
22
+ name: "unique_email",
23
+ type: "bool",
24
+ size: {
25
+ col: 12,
26
+ xs: 12
27
+ }
28
+ },
29
+ {
30
+ intlLabel: {
31
+ id: getTrad("EditForm.inputToggle.label.sign-up"),
32
+ defaultMessage: "Enable sign-ups"
33
+ },
34
+ description: {
35
+ id: getTrad("EditForm.inputToggle.description.sign-up"),
36
+ defaultMessage: "When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider."
37
+ },
38
+ name: "allow_register",
39
+ type: "bool",
40
+ size: {
41
+ col: 12,
42
+ xs: 12
43
+ }
44
+ },
45
+ {
46
+ intlLabel: {
47
+ id: getTrad("EditForm.inputToggle.label.email-reset-password"),
48
+ defaultMessage: "Reset password page"
49
+ },
50
+ description: {
51
+ id: getTrad("EditForm.inputToggle.description.email-reset-password"),
52
+ defaultMessage: "URL of your application's reset password page."
53
+ },
54
+ placeholder: {
55
+ id: getTrad("EditForm.inputToggle.placeholder.email-reset-password"),
56
+ defaultMessage: "ex: https://youtfrontend.com/reset-password"
57
+ },
58
+ name: "email_reset_password",
59
+ type: "text",
60
+ size: {
61
+ col: 6,
62
+ xs: 12
63
+ }
64
+ },
65
+ {
66
+ intlLabel: {
67
+ id: getTrad("EditForm.inputToggle.label.email-confirmation"),
68
+ defaultMessage: "Enable email confirmation"
69
+ },
70
+ description: {
71
+ id: getTrad("EditForm.inputToggle.description.email-confirmation"),
72
+ defaultMessage: "When enabled (ON), new registered users receive a confirmation email."
73
+ },
74
+ name: "email_confirmation",
75
+ type: "bool",
76
+ size: {
77
+ col: 12,
78
+ xs: 12
79
+ }
80
+ },
81
+ {
82
+ intlLabel: {
83
+ id: getTrad("EditForm.inputToggle.label.email-confirmation-redirection"),
84
+ defaultMessage: "Redirection url"
85
+ },
86
+ description: {
87
+ id: getTrad("EditForm.inputToggle.description.email-confirmation-redirection"),
88
+ defaultMessage: "After you confirmed your email, choose where you will be redirected."
89
+ },
90
+ placeholder: {
91
+ id: getTrad("EditForm.inputToggle.placeholder.email-confirmation-redirection"),
92
+ defaultMessage: "ex: https://youtfrontend.com/email-confirmation"
93
+ },
94
+ name: "email_confirmation_redirection",
95
+ type: "text",
96
+ size: {
97
+ col: 6,
98
+ xs: 12
99
+ }
100
+ }
101
+ ];
102
+ const URL_REGEX = new RegExp("(^$)|((.+:\\/\\/.*)(d*)\\/?(.*))");
103
+ const schema = yup.object().shape({
104
+ email_confirmation_redirection: yup.mixed().when("email_confirmation", {
105
+ is: true,
106
+ then: yup.string().matches(URL_REGEX).required(),
107
+ otherwise: yup.string().nullable()
108
+ }),
109
+ email_reset_password: yup.string(translatedErrors.string).matches(URL_REGEX, translatedErrors.regex).nullable()
110
+ });
111
+ const ProtectedAdvancedSettingsPage = () => /* @__PURE__ */ jsx(CheckPagePermissions, { permissions: PERMISSIONS.readAdvancedSettings, children: /* @__PURE__ */ jsx(AdvancedSettingsPage, {}) });
112
+ const AdvancedSettingsPage = () => {
113
+ const { formatMessage } = useIntl();
114
+ const toggleNotification = useNotification();
115
+ const { lockApp, unlockApp } = useOverlayBlocker();
116
+ const { notifyStatus } = useNotifyAT();
117
+ const queryClient = useQueryClient();
118
+ const { get, put } = useFetchClient();
119
+ const { formatAPIError } = useAPIErrorHandler();
120
+ useFocusWhenNavigate();
121
+ const {
122
+ isLoading: isLoadingForPermissions,
123
+ allowedActions: { canUpdate }
124
+ } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });
125
+ const { isLoading: isLoadingData, data } = useQuery(
126
+ ["users-permissions", "advanced"],
127
+ async () => {
128
+ const { data: data2 } = await get("/users-permissions/advanced");
129
+ return data2;
130
+ },
131
+ {
132
+ onSuccess() {
133
+ notifyStatus(
134
+ formatMessage({
135
+ id: getTrad("Form.advancedSettings.data.loaded"),
136
+ defaultMessage: "Advanced settings data has been loaded"
137
+ })
138
+ );
139
+ },
140
+ onError() {
141
+ toggleNotification({
142
+ type: "warning",
143
+ message: { id: getTrad("notification.error"), defaultMessage: "An error occured" }
144
+ });
145
+ }
146
+ }
147
+ );
148
+ const isLoading = isLoadingForPermissions || isLoadingData;
149
+ const submitMutation = useMutation((body) => put("/users-permissions/advanced", body), {
150
+ async onSuccess() {
151
+ await queryClient.invalidateQueries(["users-permissions", "advanced"]);
152
+ toggleNotification({
153
+ type: "success",
154
+ message: { id: getTrad("notification.success.saved"), defaultMessage: "Saved" }
155
+ });
156
+ unlockApp();
157
+ },
158
+ onError(error) {
159
+ toggleNotification({
160
+ type: "warning",
161
+ message: formatAPIError(error)
162
+ });
163
+ unlockApp();
164
+ },
165
+ refetchActive: true
166
+ });
167
+ const { isLoading: isSubmittingForm } = submitMutation;
168
+ const handleSubmit = async (body) => {
169
+ lockApp();
170
+ submitMutation.mutate({
171
+ ...body,
172
+ email_confirmation_redirection: body.email_confirmation ? body.email_confirmation_redirection : ""
173
+ });
174
+ };
175
+ if (isLoading) {
176
+ return /* @__PURE__ */ jsxs(Main, { "aria-busy": "true", children: [
177
+ /* @__PURE__ */ jsx(
178
+ SettingsPageTitle,
179
+ {
180
+ name: formatMessage({
181
+ id: getTrad("HeaderNav.link.advancedSettings"),
182
+ defaultMessage: "Advanced Settings"
183
+ })
184
+ }
185
+ ),
186
+ /* @__PURE__ */ jsx(
187
+ HeaderLayout,
188
+ {
189
+ title: formatMessage({
190
+ id: getTrad("HeaderNav.link.advancedSettings"),
191
+ defaultMessage: "Advanced Settings"
192
+ })
193
+ }
194
+ ),
195
+ /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(LoadingIndicatorPage, {}) })
196
+ ] });
197
+ }
198
+ return /* @__PURE__ */ jsxs(Main, { "aria-busy": isSubmittingForm, children: [
199
+ /* @__PURE__ */ jsx(
200
+ SettingsPageTitle,
201
+ {
202
+ name: formatMessage({
203
+ id: getTrad("HeaderNav.link.advancedSettings"),
204
+ defaultMessage: "Advanced Settings"
205
+ })
206
+ }
207
+ ),
208
+ /* @__PURE__ */ jsx(
209
+ Formik,
210
+ {
211
+ onSubmit: handleSubmit,
212
+ initialValues: data.settings,
213
+ validateOnChange: false,
214
+ validationSchema: schema,
215
+ enableReinitialize: true,
216
+ children: ({ errors, values, handleChange, isSubmitting, dirty }) => {
217
+ return /* @__PURE__ */ jsxs(Form, { children: [
218
+ /* @__PURE__ */ jsx(
219
+ HeaderLayout,
220
+ {
221
+ title: formatMessage({
222
+ id: getTrad("HeaderNav.link.advancedSettings"),
223
+ defaultMessage: "Advanced Settings"
224
+ }),
225
+ primaryAction: /* @__PURE__ */ jsx(
226
+ Button,
227
+ {
228
+ loading: isSubmitting,
229
+ type: "submit",
230
+ disabled: canUpdate ? !dirty : !canUpdate,
231
+ startIcon: /* @__PURE__ */ jsx(Check, {}),
232
+ size: "S",
233
+ children: formatMessage({ id: "global.save", defaultMessage: "Save" })
234
+ }
235
+ )
236
+ }
237
+ ),
238
+ /* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(
239
+ Box,
240
+ {
241
+ background: "neutral0",
242
+ hasRadius: true,
243
+ shadow: "filterShadow",
244
+ paddingTop: 6,
245
+ paddingBottom: 6,
246
+ paddingLeft: 7,
247
+ paddingRight: 7,
248
+ children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
249
+ /* @__PURE__ */ jsx(Typography, { variant: "delta", as: "h2", children: formatMessage({
250
+ id: "global.settings",
251
+ defaultMessage: "Settings"
252
+ }) }),
253
+ /* @__PURE__ */ jsxs(Grid, { gap: 6, children: [
254
+ /* @__PURE__ */ jsx(GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsx(
255
+ Select,
256
+ {
257
+ label: formatMessage({
258
+ id: getTrad("EditForm.inputSelect.label.role"),
259
+ defaultMessage: "Default role for authenticated users"
260
+ }),
261
+ value: values.default_role,
262
+ hint: formatMessage({
263
+ id: getTrad("EditForm.inputSelect.description.role"),
264
+ defaultMessage: "It will attach the new authenticated user to the selected role."
265
+ }),
266
+ onChange: (e) => handleChange({ target: { name: "default_role", value: e } }),
267
+ children: data.roles.map((role) => {
268
+ return /* @__PURE__ */ jsx(Option, { value: role.type, children: role.name }, role.type);
269
+ })
270
+ }
271
+ ) }),
272
+ layout.map((input) => {
273
+ let value = values[input.name];
274
+ if (!value) {
275
+ value = input.type === "bool" ? false : "";
276
+ }
277
+ return /* @__PURE__ */ jsx(GridItem, { ...input.size, children: /* @__PURE__ */ jsx(
278
+ GenericInput,
279
+ {
280
+ ...input,
281
+ value,
282
+ error: errors[input.name],
283
+ disabled: input.name === "email_confirmation_redirection" && values.email_confirmation === false,
284
+ onChange: handleChange
285
+ }
286
+ ) }, input.name);
287
+ })
288
+ ] })
289
+ ] })
290
+ }
291
+ ) })
292
+ ] });
293
+ }
294
+ }
295
+ )
296
+ ] });
297
+ };
298
+ export {
299
+ ProtectedAdvancedSettingsPage as default
300
+ };
301
+ //# sourceMappingURL=index-7cDy9OFu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-7cDy9OFu.mjs","sources":["../../admin/src/pages/AdvancedSettings/utils/layout.js","../../admin/src/pages/AdvancedSettings/utils/schema.js","../../admin/src/pages/AdvancedSettings/index.jsx"],"sourcesContent":["import { getTrad } from '../../../utils';\n\nconst layout = [\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email'),\n defaultMessage: 'One account per email address',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email'),\n defaultMessage:\n 'Disallow the user to create multiple accounts using the same email address with different authentication providers.',\n },\n name: 'unique_email',\n type: 'bool',\n size: {\n col: 12,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.sign-up'),\n defaultMessage: 'Enable sign-ups',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.sign-up'),\n defaultMessage:\n 'When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider.',\n },\n name: 'allow_register',\n type: 'bool',\n size: {\n col: 12,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email-reset-password'),\n defaultMessage: 'Reset password page',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email-reset-password'),\n defaultMessage: \"URL of your application's reset password page.\",\n },\n placeholder: {\n id: getTrad('EditForm.inputToggle.placeholder.email-reset-password'),\n defaultMessage: 'ex: https://youtfrontend.com/reset-password',\n },\n name: 'email_reset_password',\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email-confirmation'),\n defaultMessage: 'Enable email confirmation',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email-confirmation'),\n defaultMessage: 'When enabled (ON), new registered users receive a confirmation email.',\n },\n name: 'email_confirmation',\n type: 'bool',\n size: {\n col: 12,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email-confirmation-redirection'),\n defaultMessage: 'Redirection url',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email-confirmation-redirection'),\n defaultMessage: 'After you confirmed your email, choose where you will be redirected.',\n },\n placeholder: {\n id: getTrad('EditForm.inputToggle.placeholder.email-confirmation-redirection'),\n defaultMessage: 'ex: https://youtfrontend.com/email-confirmation',\n },\n name: 'email_confirmation_redirection',\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n];\n\nexport default layout;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\n// eslint-disable-next-line prefer-regex-literals\nconst URL_REGEX = new RegExp('(^$)|((.+:\\\\/\\\\/.*)(d*)\\\\/?(.*))');\n\nconst schema = yup.object().shape({\n email_confirmation_redirection: yup.mixed().when('email_confirmation', {\n is: true,\n then: yup.string().matches(URL_REGEX).required(),\n otherwise: yup.string().nullable(),\n }),\n email_reset_password: yup\n .string(translatedErrors.string)\n .matches(URL_REGEX, translatedErrors.regex)\n .nullable(),\n});\n\nexport default schema;\n","import React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Option,\n Select,\n Typography,\n useNotifyAT,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n GenericInput,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport layout from './utils/layout';\nimport schema from './utils/schema';\n\nconst ProtectedAdvancedSettingsPage = () => (\n <CheckPagePermissions permissions={PERMISSIONS.readAdvancedSettings}>\n <AdvancedSettingsPage />\n </CheckPagePermissions>\n);\n\nconst AdvancedSettingsPage = () => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { notifyStatus } = useNotifyAT();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n\n useFocusWhenNavigate();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'advanced'],\n async () => {\n const { data } = await get('/users-permissions/advanced');\n\n return data;\n },\n {\n onSuccess() {\n notifyStatus(\n formatMessage({\n id: getTrad('Form.advancedSettings.data.loaded'),\n defaultMessage: 'Advanced settings data has been loaded',\n })\n );\n },\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: getTrad('notification.error'), defaultMessage: 'An error occured' },\n });\n },\n }\n );\n\n const isLoading = isLoadingForPermissions || isLoadingData;\n\n const submitMutation = useMutation((body) => put('/users-permissions/advanced', body), {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'advanced']);\n\n toggleNotification({\n type: 'success',\n message: { id: getTrad('notification.success.saved'), defaultMessage: 'Saved' },\n });\n\n unlockApp();\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n unlockApp();\n },\n refetchActive: true,\n });\n\n const { isLoading: isSubmittingForm } = submitMutation;\n\n const handleSubmit = async (body) => {\n lockApp();\n\n submitMutation.mutate({\n ...body,\n email_confirmation_redirection: body.email_confirmation\n ? body.email_confirmation_redirection\n : '',\n });\n };\n\n if (isLoading) {\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle\n name={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n />\n <HeaderLayout\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n }\n\n return (\n <Main aria-busy={isSubmittingForm}>\n <SettingsPageTitle\n name={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n />\n <Formik\n onSubmit={handleSubmit}\n initialValues={data.settings}\n validateOnChange={false}\n validationSchema={schema}\n enableReinitialize\n >\n {({ errors, values, handleChange, isSubmitting, dirty }) => {\n return (\n <Form>\n <HeaderLayout\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n primaryAction={\n <Button\n loading={isSubmitting}\n type=\"submit\"\n disabled={canUpdate ? !dirty : !canUpdate}\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <ContentLayout>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={6}>\n <GridItem col={6} s={12}>\n <Select\n label={formatMessage({\n id: getTrad('EditForm.inputSelect.label.role'),\n defaultMessage: 'Default role for authenticated users',\n })}\n value={values.default_role}\n hint={formatMessage({\n id: getTrad('EditForm.inputSelect.description.role'),\n defaultMessage:\n 'It will attach the new authenticated user to the selected role.',\n })}\n onChange={(e) =>\n handleChange({ target: { name: 'default_role', value: e } })\n }\n >\n {data.roles.map((role) => {\n return (\n <Option key={role.type} value={role.type}>\n {role.name}\n </Option>\n );\n })}\n </Select>\n </GridItem>\n {layout.map((input) => {\n let value = values[input.name];\n\n if (!value) {\n value = input.type === 'bool' ? false : '';\n }\n\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n value={value}\n error={errors[input.name]}\n disabled={\n input.name === 'email_confirmation_redirection' &&\n values.email_confirmation === false\n }\n onChange={handleChange}\n />\n </GridItem>\n );\n })}\n </Grid>\n </Flex>\n </Box>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nexport default ProtectedAdvancedSettingsPage;\n"],"names":["data"],"mappings":"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"}