@strapi/plugin-users-permissions 0.0.0-next.e9bb5ccdc459f4c6b6717a2d5d86359b7a47d47d → 0.0.0-next.ea6e3b80ab37f554da4f8bde08dbfe9b57400d31

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 (228) hide show
  1. package/.eslintignore +1 -2
  2. package/.eslintrc +17 -0
  3. package/LICENSE +18 -3
  4. package/admin/src/components/BoundRoute/{index.js → index.jsx} +6 -4
  5. package/admin/src/components/FormModal/Input/{index.js → index.jsx} +37 -33
  6. package/admin/src/components/FormModal/index.jsx +115 -0
  7. package/admin/src/components/Permissions/PermissionRow/{CheckboxWrapper.js → CheckboxWrapper.jsx} +4 -3
  8. package/admin/src/components/Permissions/PermissionRow/{SubCategory.js → SubCategory.jsx} +27 -15
  9. package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +4 -2
  10. package/admin/src/components/Permissions/index.jsx +47 -0
  11. package/admin/src/components/Permissions/reducer.js +1 -1
  12. package/admin/src/components/Policies/{index.js → index.jsx} +9 -6
  13. package/admin/src/components/UsersPermissions/{index.js → index.jsx} +22 -11
  14. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  15. package/admin/src/{permissions.js → constants.js} +1 -3
  16. package/admin/src/contexts/UsersPermissionsContext/{index.js → index.jsx} +1 -0
  17. package/admin/src/index.js +25 -51
  18. package/admin/src/pages/AdvancedSettings/index.jsx +214 -0
  19. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  20. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  21. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +156 -0
  22. package/admin/src/pages/EmailTemplates/components/{EmailTable.js → EmailTable.jsx} +27 -22
  23. package/admin/src/pages/EmailTemplates/index.jsx +148 -0
  24. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  25. package/admin/src/pages/Providers/index.jsx +262 -0
  26. package/admin/src/pages/Providers/utils/forms.js +23 -11
  27. package/admin/src/pages/Roles/constants.js +7 -0
  28. package/admin/src/pages/Roles/hooks/usePlugins.js +78 -0
  29. package/admin/src/pages/Roles/index.jsx +24 -0
  30. package/admin/src/pages/Roles/pages/CreatePage.jsx +194 -0
  31. package/admin/src/pages/Roles/pages/EditPage.jsx +215 -0
  32. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +119 -0
  33. package/admin/src/pages/Roles/{ListPage/index.js → pages/ListPage/index.jsx} +108 -83
  34. package/admin/src/translations/en.json +1 -1
  35. package/admin/src/translations/zh-Hans.json +80 -80
  36. package/admin/src/utils/index.js +1 -2
  37. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  38. package/dist/_chunks/ar-BguGUqwK.js +44 -0
  39. package/dist/_chunks/ar-BguGUqwK.js.map +1 -0
  40. package/dist/_chunks/ar-CK8BRRXB.mjs +44 -0
  41. package/dist/_chunks/ar-CK8BRRXB.mjs.map +1 -0
  42. package/dist/_chunks/cs-BVigMk0l.mjs +50 -0
  43. package/dist/_chunks/cs-BVigMk0l.mjs.map +1 -0
  44. package/dist/_chunks/cs-BW8-K_GY.js +50 -0
  45. package/dist/_chunks/cs-BW8-K_GY.js.map +1 -0
  46. package/dist/_chunks/de-BKUdRFI4.mjs +62 -0
  47. package/dist/_chunks/de-BKUdRFI4.mjs.map +1 -0
  48. package/dist/_chunks/de-owXpVluI.js +62 -0
  49. package/dist/_chunks/de-owXpVluI.js.map +1 -0
  50. package/dist/_chunks/dk-BQiTK50l.mjs +86 -0
  51. package/dist/_chunks/dk-BQiTK50l.mjs.map +1 -0
  52. package/dist/_chunks/dk-LXAnbuBk.js +86 -0
  53. package/dist/_chunks/dk-LXAnbuBk.js.map +1 -0
  54. package/dist/_chunks/en-DOHtPf-2.mjs +86 -0
  55. package/dist/_chunks/en-DOHtPf-2.mjs.map +1 -0
  56. package/dist/_chunks/en-MHo5mcsU.js +86 -0
  57. package/dist/_chunks/en-MHo5mcsU.js.map +1 -0
  58. package/dist/_chunks/es-BwLCLXAQ.js +86 -0
  59. package/dist/_chunks/es-BwLCLXAQ.js.map +1 -0
  60. package/dist/_chunks/es-DNgOVMjD.mjs +86 -0
  61. package/dist/_chunks/es-DNgOVMjD.mjs.map +1 -0
  62. package/dist/_chunks/fr-DkgRugiU.mjs +50 -0
  63. package/dist/_chunks/fr-DkgRugiU.mjs.map +1 -0
  64. package/dist/_chunks/fr-DkhpSjjm.js +50 -0
  65. package/dist/_chunks/fr-DkhpSjjm.js.map +1 -0
  66. package/dist/_chunks/id-BTemOeTZ.js +62 -0
  67. package/dist/_chunks/id-BTemOeTZ.js.map +1 -0
  68. package/dist/_chunks/id-BdEsvnaF.mjs +62 -0
  69. package/dist/_chunks/id-BdEsvnaF.mjs.map +1 -0
  70. package/dist/_chunks/index-BEjCN543-C1E7ADbJ.mjs +11984 -0
  71. package/dist/_chunks/index-BEjCN543-C1E7ADbJ.mjs.map +1 -0
  72. package/dist/_chunks/index-BEjCN543-fMZ4nmrb.js +12008 -0
  73. package/dist/_chunks/index-BEjCN543-fMZ4nmrb.js.map +1 -0
  74. package/dist/_chunks/index-BHbow3DP.js +281 -0
  75. package/dist/_chunks/index-BHbow3DP.js.map +1 -0
  76. package/dist/_chunks/index-BWP-UyKQ.mjs +344 -0
  77. package/dist/_chunks/index-BWP-UyKQ.mjs.map +1 -0
  78. package/dist/_chunks/index-CJPwJ4vq.js +1172 -0
  79. package/dist/_chunks/index-CJPwJ4vq.js.map +1 -0
  80. package/dist/_chunks/index-CKeAk04T.mjs +1142 -0
  81. package/dist/_chunks/index-CKeAk04T.mjs.map +1 -0
  82. package/dist/_chunks/index-CWG-Md7l.js +640 -0
  83. package/dist/_chunks/index-CWG-Md7l.js.map +1 -0
  84. package/dist/_chunks/index-CwilIFCz.js +245 -0
  85. package/dist/_chunks/index-CwilIFCz.js.map +1 -0
  86. package/dist/_chunks/index-DPgyhRuN.mjs +617 -0
  87. package/dist/_chunks/index-DPgyhRuN.mjs.map +1 -0
  88. package/dist/_chunks/index-DnPMwDrT.js +366 -0
  89. package/dist/_chunks/index-DnPMwDrT.js.map +1 -0
  90. package/dist/_chunks/index-N8czFM4v.mjs +246 -0
  91. package/dist/_chunks/index-N8czFM4v.mjs.map +1 -0
  92. package/dist/_chunks/index-WoqT4Vkv.mjs +262 -0
  93. package/dist/_chunks/index-WoqT4Vkv.mjs.map +1 -0
  94. package/dist/_chunks/it-B-rv0E24.mjs +62 -0
  95. package/dist/_chunks/it-B-rv0E24.mjs.map +1 -0
  96. package/dist/_chunks/it-D1rH6V6_.js +62 -0
  97. package/dist/_chunks/it-D1rH6V6_.js.map +1 -0
  98. package/dist/_chunks/ja-C8K-VBPD.mjs +48 -0
  99. package/dist/_chunks/ja-C8K-VBPD.mjs.map +1 -0
  100. package/dist/_chunks/ja-DqShgTMf.js +48 -0
  101. package/dist/_chunks/ja-DqShgTMf.js.map +1 -0
  102. package/dist/_chunks/ko-B9DGEPWH.js +86 -0
  103. package/dist/_chunks/ko-B9DGEPWH.js.map +1 -0
  104. package/dist/_chunks/ko-Busb0wIY.mjs +86 -0
  105. package/dist/_chunks/ko-Busb0wIY.mjs.map +1 -0
  106. package/dist/_chunks/ms-ByvsQjRt.mjs +49 -0
  107. package/dist/_chunks/ms-ByvsQjRt.mjs.map +1 -0
  108. package/dist/_chunks/ms-CPBU3LWf.js +49 -0
  109. package/dist/_chunks/ms-CPBU3LWf.js.map +1 -0
  110. package/dist/_chunks/nl-5qO8Rpcy.mjs +48 -0
  111. package/dist/_chunks/nl-5qO8Rpcy.mjs.map +1 -0
  112. package/dist/_chunks/nl-CwNB6YoO.js +48 -0
  113. package/dist/_chunks/nl-CwNB6YoO.js.map +1 -0
  114. package/dist/_chunks/pl-BdIzifBE.mjs +86 -0
  115. package/dist/_chunks/pl-BdIzifBE.mjs.map +1 -0
  116. package/dist/_chunks/pl-Do9UD69f.js +86 -0
  117. package/dist/_chunks/pl-Do9UD69f.js.map +1 -0
  118. package/dist/_chunks/pt-BIO24ioG.mjs +48 -0
  119. package/dist/_chunks/pt-BIO24ioG.mjs.map +1 -0
  120. package/dist/_chunks/pt-BR-D7dZhxuP.js +44 -0
  121. package/dist/_chunks/pt-BR-D7dZhxuP.js.map +1 -0
  122. package/dist/_chunks/pt-BR-f0p23AQZ.mjs +44 -0
  123. package/dist/_chunks/pt-BR-f0p23AQZ.mjs.map +1 -0
  124. package/dist/_chunks/pt-fdvyOnUp.js +48 -0
  125. package/dist/_chunks/pt-fdvyOnUp.js.map +1 -0
  126. package/dist/_chunks/ru-C94rjPGA.js +86 -0
  127. package/dist/_chunks/ru-C94rjPGA.js.map +1 -0
  128. package/dist/_chunks/ru-VWy-IB7K.mjs +86 -0
  129. package/dist/_chunks/ru-VWy-IB7K.mjs.map +1 -0
  130. package/dist/_chunks/sk-BABEhykl.js +50 -0
  131. package/dist/_chunks/sk-BABEhykl.js.map +1 -0
  132. package/dist/_chunks/sk-B_LIcepm.mjs +50 -0
  133. package/dist/_chunks/sk-B_LIcepm.mjs.map +1 -0
  134. package/dist/_chunks/sv-ABLKOokl.mjs +86 -0
  135. package/dist/_chunks/sv-ABLKOokl.mjs.map +1 -0
  136. package/dist/_chunks/sv-Be43LhA9.js +86 -0
  137. package/dist/_chunks/sv-Be43LhA9.js.map +1 -0
  138. package/dist/_chunks/th-DKyP7ueR.mjs +60 -0
  139. package/dist/_chunks/th-DKyP7ueR.mjs.map +1 -0
  140. package/dist/_chunks/th-DgVhVLhL.js +60 -0
  141. package/dist/_chunks/th-DgVhVLhL.js.map +1 -0
  142. package/dist/_chunks/tr-B_idhkEs.js +85 -0
  143. package/dist/_chunks/tr-B_idhkEs.js.map +1 -0
  144. package/dist/_chunks/tr-qa1Q5UjC.mjs +85 -0
  145. package/dist/_chunks/tr-qa1Q5UjC.mjs.map +1 -0
  146. package/dist/_chunks/uk-BmRqbeQc.mjs +49 -0
  147. package/dist/_chunks/uk-BmRqbeQc.mjs.map +1 -0
  148. package/dist/_chunks/uk-LHOivnhP.js +49 -0
  149. package/dist/_chunks/uk-LHOivnhP.js.map +1 -0
  150. package/dist/_chunks/vi-CdVRdKDw.js +50 -0
  151. package/dist/_chunks/vi-CdVRdKDw.js.map +1 -0
  152. package/dist/_chunks/vi-HW-EdMea.mjs +50 -0
  153. package/dist/_chunks/vi-HW-EdMea.mjs.map +1 -0
  154. package/dist/_chunks/zh-5hKkVPA4.mjs +86 -0
  155. package/dist/_chunks/zh-5hKkVPA4.mjs.map +1 -0
  156. package/dist/_chunks/zh-Cuq8gMnF.js +86 -0
  157. package/dist/_chunks/zh-Cuq8gMnF.js.map +1 -0
  158. package/dist/_chunks/zh-Hans-BHilK-yc.mjs +86 -0
  159. package/dist/_chunks/zh-Hans-BHilK-yc.mjs.map +1 -0
  160. package/dist/_chunks/zh-Hans-GQDMKtY4.js +86 -0
  161. package/dist/_chunks/zh-Hans-GQDMKtY4.js.map +1 -0
  162. package/dist/admin/index.js +4 -0
  163. package/dist/admin/index.js.map +1 -0
  164. package/dist/admin/index.mjs +5 -0
  165. package/dist/admin/index.mjs.map +1 -0
  166. package/documentation/content-api.yaml +1 -1
  167. package/jest.config.front.js +1 -0
  168. package/package.json +51 -35
  169. package/packup.config.ts +22 -0
  170. package/server/bootstrap/index.js +18 -15
  171. package/server/bootstrap/users-permissions-actions.js +6 -0
  172. package/server/config.js +29 -0
  173. package/server/content-types/user/index.js +0 -1
  174. package/server/controllers/auth.js +74 -38
  175. package/server/controllers/content-manager-user.js +28 -30
  176. package/server/controllers/role.js +17 -4
  177. package/server/controllers/user.js +18 -8
  178. package/server/controllers/validation/auth.js +81 -25
  179. package/server/middlewares/rateLimit.js +41 -21
  180. package/server/register.js +1 -1
  181. package/server/services/jwt.js +3 -3
  182. package/server/services/permission.js +3 -7
  183. package/server/services/providers-registry.js +469 -261
  184. package/server/services/providers.js +10 -5
  185. package/server/services/role.js +15 -13
  186. package/server/services/user.js +56 -19
  187. package/server/services/users-permissions.js +15 -13
  188. package/server/strategies/users-permissions.js +1 -8
  189. package/server/utils/index.d.ts +2 -1
  190. package/server/utils/sanitize/sanitizers.js +7 -3
  191. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  192. package/.eslintrc.js +0 -14
  193. package/admin/src/components/FormModal/index.js +0 -123
  194. package/admin/src/components/Permissions/index.js +0 -54
  195. package/admin/src/hooks/index.js +0 -5
  196. package/admin/src/hooks/useFetchRole/index.js +0 -64
  197. package/admin/src/hooks/useFetchRole/reducer.js +0 -31
  198. package/admin/src/hooks/useForm/index.js +0 -67
  199. package/admin/src/hooks/useForm/reducer.js +0 -40
  200. package/admin/src/hooks/usePlugins/index.js +0 -67
  201. package/admin/src/hooks/usePlugins/init.js +0 -5
  202. package/admin/src/hooks/usePlugins/reducer.js +0 -34
  203. package/admin/src/hooks/useRolesList/index.js +0 -62
  204. package/admin/src/hooks/useRolesList/init.js +0 -5
  205. package/admin/src/hooks/useRolesList/reducer.js +0 -31
  206. package/admin/src/pages/AdvancedSettings/index.js +0 -243
  207. package/admin/src/pages/AdvancedSettings/utils/api.js +0 -17
  208. package/admin/src/pages/EmailTemplates/components/EmailForm.js +0 -175
  209. package/admin/src/pages/EmailTemplates/index.js +0 -160
  210. package/admin/src/pages/EmailTemplates/utils/api.js +0 -17
  211. package/admin/src/pages/Providers/index.js +0 -272
  212. package/admin/src/pages/Providers/reducer.js +0 -54
  213. package/admin/src/pages/Providers/utils/api.js +0 -25
  214. package/admin/src/pages/Providers/utils/createProvidersArray.js +0 -21
  215. package/admin/src/pages/Roles/CreatePage/index.js +0 -182
  216. package/admin/src/pages/Roles/CreatePage/utils/schema.js +0 -9
  217. package/admin/src/pages/Roles/EditPage/index.js +0 -194
  218. package/admin/src/pages/Roles/EditPage/utils/schema.js +0 -9
  219. package/admin/src/pages/Roles/ListPage/components/TableBody.js +0 -92
  220. package/admin/src/pages/Roles/ListPage/utils/api.js +0 -31
  221. package/admin/src/pages/Roles/ProtectedCreatePage/index.js +0 -12
  222. package/admin/src/pages/Roles/ProtectedEditPage/index.js +0 -12
  223. package/admin/src/pages/Roles/ProtectedListPage/index.js +0 -15
  224. package/admin/src/pages/Roles/index.js +0 -27
  225. package/admin/src/utils/getRequestURL.js +0 -5
  226. package/server/bootstrap/grant-config.js +0 -131
  227. package/strapi-admin.js +0 -3
  228. package/strapi-server.js +0 -3
@@ -0,0 +1,246 @@
1
+ const __variableDynamicImportRuntimeHelper = (glob, path) => {
2
+ const v = glob[path];
3
+ if (v) {
4
+ return typeof v === "function" ? v() : Promise.resolve(v);
5
+ }
6
+ return new Promise((_, reject) => {
7
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
8
+ });
9
+ };
10
+ const name$1 = "@strapi/plugin-users-permissions";
11
+ const version = "5.3.0";
12
+ const description = "Protect your API with a full-authentication process based on JWT";
13
+ const repository = {
14
+ type: "git",
15
+ url: "git://github.com/strapi/strapi.git"
16
+ };
17
+ const license = "SEE LICENSE IN LICENSE";
18
+ const author = {
19
+ name: "Strapi Solutions SAS",
20
+ email: "hi@strapi.io",
21
+ url: "https://strapi.io"
22
+ };
23
+ const maintainers = [
24
+ {
25
+ name: "Strapi Solutions SAS",
26
+ email: "hi@strapi.io",
27
+ url: "https://strapi.io"
28
+ }
29
+ ];
30
+ const exports = {
31
+ "./strapi-admin": {
32
+ source: "./admin/src/index.js",
33
+ "import": "./dist/admin/index.mjs",
34
+ require: "./dist/admin/index.js",
35
+ "default": "./dist/admin/index.js"
36
+ },
37
+ "./strapi-server": {
38
+ source: "./server/index.js",
39
+ require: "./server/index.js",
40
+ "default": "./server/index.js"
41
+ },
42
+ "./package.json": "./package.json"
43
+ };
44
+ const scripts = {
45
+ build: "pack-up build",
46
+ clean: "run -T rimraf dist",
47
+ lint: "run -T eslint .",
48
+ "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
49
+ "test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js",
50
+ "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
51
+ "test:front:watch:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
52
+ "test:unit": "run -T jest",
53
+ "test:unit:watch": "run -T jest --watch",
54
+ watch: "pack-up watch"
55
+ };
56
+ const dependencies = {
57
+ "@strapi/design-system": "2.0.0-rc.12",
58
+ "@strapi/icons": "2.0.0-rc.12",
59
+ "@strapi/utils": "workspace:*",
60
+ bcryptjs: "2.4.3",
61
+ formik: "2.4.5",
62
+ "grant-koa": "5.4.8",
63
+ immer: "9.0.21",
64
+ jsonwebtoken: "9.0.0",
65
+ "jwk-to-pem": "2.0.5",
66
+ koa: "2.15.2",
67
+ "koa2-ratelimit": "^1.1.3",
68
+ lodash: "4.17.21",
69
+ "prop-types": "^15.8.1",
70
+ purest: "4.0.2",
71
+ "react-intl": "6.6.2",
72
+ "react-query": "3.39.3",
73
+ "react-redux": "8.1.3",
74
+ "url-join": "4.0.1",
75
+ yup: "0.32.9"
76
+ };
77
+ const devDependencies = {
78
+ "@strapi/pack-up": "5.0.0",
79
+ "@strapi/strapi": "workspace:*",
80
+ "@testing-library/dom": "10.1.0",
81
+ "@testing-library/react": "15.0.7",
82
+ "@testing-library/user-event": "14.5.2",
83
+ msw: "1.3.0",
84
+ react: "18.3.1",
85
+ "react-dom": "18.3.1",
86
+ "react-router-dom": "6.22.3",
87
+ "styled-components": "6.1.8"
88
+ };
89
+ const peerDependencies = {
90
+ "@strapi/strapi": "^5.0.0 || ^5.0.0-beta || ^5.0.0-alpha || ^5.0.0-rc",
91
+ react: "^17.0.0 || ^18.0.0",
92
+ "react-dom": "^17.0.0 || ^18.0.0",
93
+ "react-router-dom": "^6.0.0",
94
+ "styled-components": "^6.0.0"
95
+ };
96
+ const engines = {
97
+ node: ">=18.0.0 <=22.x.x",
98
+ npm: ">=6.0.0"
99
+ };
100
+ const strapi = {
101
+ displayName: "Roles & Permissions",
102
+ name: "users-permissions",
103
+ description: "Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.",
104
+ required: true,
105
+ kind: "plugin"
106
+ };
107
+ const pluginPkg = {
108
+ name: name$1,
109
+ version,
110
+ description,
111
+ repository,
112
+ license,
113
+ author,
114
+ maintainers,
115
+ exports,
116
+ scripts,
117
+ dependencies,
118
+ devDependencies,
119
+ peerDependencies,
120
+ engines,
121
+ strapi
122
+ };
123
+ const PERMISSIONS = {
124
+ // Roles
125
+ accessRoles: [
126
+ { action: "plugin::users-permissions.roles.create", subject: null },
127
+ { action: "plugin::users-permissions.roles.read", subject: null }
128
+ ],
129
+ createRole: [{ action: "plugin::users-permissions.roles.create", subject: null }],
130
+ deleteRole: [{ action: "plugin::users-permissions.roles.delete", subject: null }],
131
+ readRoles: [{ action: "plugin::users-permissions.roles.read", subject: null }],
132
+ updateRole: [{ action: "plugin::users-permissions.roles.update", subject: null }],
133
+ // AdvancedSettings
134
+ readAdvancedSettings: [
135
+ { action: "plugin::users-permissions.advanced-settings.read", subject: null }
136
+ ],
137
+ updateAdvancedSettings: [
138
+ { action: "plugin::users-permissions.advanced-settings.update", subject: null }
139
+ ],
140
+ // Emails
141
+ readEmailTemplates: [{ action: "plugin::users-permissions.email-templates.read", subject: null }],
142
+ updateEmailTemplates: [
143
+ { action: "plugin::users-permissions.email-templates.update", subject: null }
144
+ ],
145
+ // Providers
146
+ readProviders: [{ action: "plugin::users-permissions.providers.read", subject: null }],
147
+ updateProviders: [{ action: "plugin::users-permissions.providers.update", subject: null }]
148
+ };
149
+ const pluginId = pluginPkg.name.replace(/^@strapi\/plugin-/i, "");
150
+ const getTrad = (id) => `${pluginId}.${id}`;
151
+ const prefixPluginTranslations = (trad, pluginId2) => {
152
+ return Object.keys(trad).reduce((acc, current) => {
153
+ acc[`${pluginId2}.${current}`] = trad[current];
154
+ return acc;
155
+ }, {});
156
+ };
157
+ const name = pluginPkg.strapi.name;
158
+ const index = {
159
+ register(app) {
160
+ app.createSettingSection(
161
+ {
162
+ id: "users-permissions",
163
+ intlLabel: {
164
+ id: getTrad("Settings.section-label"),
165
+ defaultMessage: "Users & Permissions plugin"
166
+ }
167
+ },
168
+ [
169
+ {
170
+ intlLabel: {
171
+ id: "global.roles",
172
+ defaultMessage: "Roles"
173
+ },
174
+ id: "roles",
175
+ to: `users-permissions/roles`,
176
+ Component: () => import("./index-CKeAk04T.mjs"),
177
+ permissions: PERMISSIONS.accessRoles
178
+ },
179
+ {
180
+ intlLabel: {
181
+ id: getTrad("HeaderNav.link.providers"),
182
+ defaultMessage: "Providers"
183
+ },
184
+ id: "providers",
185
+ to: `users-permissions/providers`,
186
+ Component: () => import("./index-DPgyhRuN.mjs"),
187
+ permissions: PERMISSIONS.readProviders
188
+ },
189
+ {
190
+ intlLabel: {
191
+ id: getTrad("HeaderNav.link.emailTemplates"),
192
+ defaultMessage: "Email templates"
193
+ },
194
+ id: "email-templates",
195
+ to: `users-permissions/email-templates`,
196
+ Component: () => import("./index-BWP-UyKQ.mjs").then((mod) => ({
197
+ default: mod.ProtectedEmailTemplatesPage
198
+ })),
199
+ permissions: PERMISSIONS.readEmailTemplates
200
+ },
201
+ {
202
+ intlLabel: {
203
+ id: getTrad("HeaderNav.link.advancedSettings"),
204
+ defaultMessage: "Advanced Settings"
205
+ },
206
+ id: "advanced-settings",
207
+ to: `users-permissions/advanced-settings`,
208
+ Component: () => import("./index-WoqT4Vkv.mjs").then((mod) => ({
209
+ default: mod.ProtectedAdvancedSettingsPage
210
+ })),
211
+ permissions: PERMISSIONS.readAdvancedSettings
212
+ }
213
+ ]
214
+ );
215
+ app.registerPlugin({
216
+ id: "users-permissions",
217
+ name
218
+ });
219
+ },
220
+ bootstrap() {
221
+ },
222
+ async registerTrads({ locales }) {
223
+ const importedTrads = await Promise.all(
224
+ locales.map((locale) => {
225
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-CK8BRRXB.mjs"), "./translations/cs.json": () => import("./cs-BVigMk0l.mjs"), "./translations/de.json": () => import("./de-BKUdRFI4.mjs"), "./translations/dk.json": () => import("./dk-BQiTK50l.mjs"), "./translations/en.json": () => import("./en-DOHtPf-2.mjs"), "./translations/es.json": () => import("./es-DNgOVMjD.mjs"), "./translations/fr.json": () => import("./fr-DkgRugiU.mjs"), "./translations/id.json": () => import("./id-BdEsvnaF.mjs"), "./translations/it.json": () => import("./it-B-rv0E24.mjs"), "./translations/ja.json": () => import("./ja-C8K-VBPD.mjs"), "./translations/ko.json": () => import("./ko-Busb0wIY.mjs"), "./translations/ms.json": () => import("./ms-ByvsQjRt.mjs"), "./translations/nl.json": () => import("./nl-5qO8Rpcy.mjs"), "./translations/pl.json": () => import("./pl-BdIzifBE.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-f0p23AQZ.mjs"), "./translations/pt.json": () => import("./pt-BIO24ioG.mjs"), "./translations/ru.json": () => import("./ru-VWy-IB7K.mjs"), "./translations/sk.json": () => import("./sk-B_LIcepm.mjs"), "./translations/sv.json": () => import("./sv-ABLKOokl.mjs"), "./translations/th.json": () => import("./th-DKyP7ueR.mjs"), "./translations/tr.json": () => import("./tr-qa1Q5UjC.mjs"), "./translations/uk.json": () => import("./uk-BmRqbeQc.mjs"), "./translations/vi.json": () => import("./vi-HW-EdMea.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-BHilK-yc.mjs"), "./translations/zh.json": () => import("./zh-5hKkVPA4.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
226
+ return {
227
+ data: prefixPluginTranslations(data, "users-permissions"),
228
+ locale
229
+ };
230
+ }).catch(() => {
231
+ return {
232
+ data: {},
233
+ locale
234
+ };
235
+ });
236
+ })
237
+ );
238
+ return Promise.resolve(importedTrads);
239
+ }
240
+ };
241
+ export {
242
+ PERMISSIONS as P,
243
+ getTrad as g,
244
+ index as i
245
+ };
246
+ //# sourceMappingURL=index-N8czFM4v.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-N8czFM4v.mjs","sources":["../../admin/src/constants.js","../../admin/src/pluginId.js","../../admin/src/utils/getTrad.js","../../admin/src/utils/prefixPluginTranslations.js","../../admin/src/index.js"],"sourcesContent":["export const PERMISSIONS = {\n // Roles\n accessRoles: [\n { action: 'plugin::users-permissions.roles.create', subject: null },\n { action: 'plugin::users-permissions.roles.read', subject: null },\n ],\n createRole: [{ action: 'plugin::users-permissions.roles.create', subject: null }],\n deleteRole: [{ action: 'plugin::users-permissions.roles.delete', subject: null }],\n readRoles: [{ action: 'plugin::users-permissions.roles.read', subject: null }],\n updateRole: [{ action: 'plugin::users-permissions.roles.update', subject: null }],\n\n // AdvancedSettings\n readAdvancedSettings: [\n { action: 'plugin::users-permissions.advanced-settings.read', subject: null },\n ],\n updateAdvancedSettings: [\n { action: 'plugin::users-permissions.advanced-settings.update', subject: null },\n ],\n\n // Emails\n readEmailTemplates: [{ action: 'plugin::users-permissions.email-templates.read', subject: null }],\n updateEmailTemplates: [\n { action: 'plugin::users-permissions.email-templates.update', subject: null },\n ],\n\n // Providers\n readProviders: [{ action: 'plugin::users-permissions.providers.read', subject: null }],\n updateProviders: [{ action: 'plugin::users-permissions.providers.update', subject: null }],\n};\n","import pluginPkg from '../../package.json';\n\nconst pluginId = pluginPkg.name.replace(/^@strapi\\/plugin-/i, '');\n\nexport default pluginId;\n","import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n","const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n","import pluginPkg from '../../package.json';\n\nimport { PERMISSIONS } from './constants';\nimport getTrad from './utils/getTrad';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nconst name = pluginPkg.strapi.name;\n\nexport default {\n register(app) {\n // Create the plugin's settings section\n app.createSettingSection(\n {\n id: 'users-permissions',\n intlLabel: {\n id: getTrad('Settings.section-label'),\n defaultMessage: 'Users & Permissions plugin',\n },\n },\n [\n {\n intlLabel: {\n id: 'global.roles',\n defaultMessage: 'Roles',\n },\n id: 'roles',\n to: `users-permissions/roles`,\n Component: () => import('./pages/Roles'),\n permissions: PERMISSIONS.accessRoles,\n },\n {\n intlLabel: {\n id: getTrad('HeaderNav.link.providers'),\n defaultMessage: 'Providers',\n },\n id: 'providers',\n to: `users-permissions/providers`,\n Component: () => import('./pages/Providers'),\n permissions: PERMISSIONS.readProviders,\n },\n {\n intlLabel: {\n id: getTrad('HeaderNav.link.emailTemplates'),\n defaultMessage: 'Email templates',\n },\n id: 'email-templates',\n to: `users-permissions/email-templates`,\n Component: () =>\n import('./pages/EmailTemplates').then((mod) => ({\n default: mod.ProtectedEmailTemplatesPage,\n })),\n permissions: PERMISSIONS.readEmailTemplates,\n },\n {\n intlLabel: {\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n },\n id: 'advanced-settings',\n to: `users-permissions/advanced-settings`,\n Component: () =>\n import('./pages/AdvancedSettings').then((mod) => ({\n default: mod.ProtectedAdvancedSettingsPage,\n })),\n permissions: PERMISSIONS.readAdvancedSettings,\n },\n ]\n );\n\n app.registerPlugin({\n id: 'users-permissions',\n name,\n });\n },\n bootstrap() {},\n async registerTrads({ locales }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, 'users-permissions'),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n"],"names":["pluginId"],"mappings":"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"}
@@ -0,0 +1,262 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import "react";
3
+ import { useNotifyAT, Button, Box, Flex, Typography, Grid } from "@strapi/design-system";
4
+ import { Check } from "@strapi/icons";
5
+ import { translatedErrors, Page, useNotification, useFetchClient, useAPIErrorHandler, useRBAC, Form, Layouts, InputRenderer } from "@strapi/strapi/admin";
6
+ import { useIntl } from "react-intl";
7
+ import { useQueryClient, useQuery, useMutation } from "react-query";
8
+ import { g as getTrad, P as PERMISSIONS } from "./index-N8czFM4v.mjs";
9
+ import "lodash/isEmpty";
10
+ import * as yup from "yup";
11
+ const layout = [
12
+ {
13
+ label: {
14
+ id: getTrad("EditForm.inputToggle.label.email"),
15
+ defaultMessage: "One account per email address"
16
+ },
17
+ hint: {
18
+ id: getTrad("EditForm.inputToggle.description.email"),
19
+ defaultMessage: "Disallow the user to create multiple accounts using the same email address with different authentication providers."
20
+ },
21
+ name: "unique_email",
22
+ type: "boolean",
23
+ size: 12
24
+ },
25
+ {
26
+ label: {
27
+ id: getTrad("EditForm.inputToggle.label.sign-up"),
28
+ defaultMessage: "Enable sign-ups"
29
+ },
30
+ hint: {
31
+ id: getTrad("EditForm.inputToggle.description.sign-up"),
32
+ defaultMessage: "When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider."
33
+ },
34
+ name: "allow_register",
35
+ type: "boolean",
36
+ size: 12
37
+ },
38
+ {
39
+ label: {
40
+ id: getTrad("EditForm.inputToggle.label.email-reset-password"),
41
+ defaultMessage: "Reset password page"
42
+ },
43
+ hint: {
44
+ id: getTrad("EditForm.inputToggle.description.email-reset-password"),
45
+ defaultMessage: "URL of your application's reset password page."
46
+ },
47
+ placeholder: {
48
+ id: getTrad("EditForm.inputToggle.placeholder.email-reset-password"),
49
+ defaultMessage: "ex: https://youtfrontend.com/reset-password"
50
+ },
51
+ name: "email_reset_password",
52
+ type: "string",
53
+ size: 12
54
+ },
55
+ {
56
+ label: {
57
+ id: getTrad("EditForm.inputToggle.label.email-confirmation"),
58
+ defaultMessage: "Enable email confirmation"
59
+ },
60
+ hint: {
61
+ id: getTrad("EditForm.inputToggle.description.email-confirmation"),
62
+ defaultMessage: "When enabled (ON), new registered users receive a confirmation email."
63
+ },
64
+ name: "email_confirmation",
65
+ type: "boolean",
66
+ size: 12
67
+ },
68
+ {
69
+ label: {
70
+ id: getTrad("EditForm.inputToggle.label.email-confirmation-redirection"),
71
+ defaultMessage: "Redirection url"
72
+ },
73
+ hint: {
74
+ id: getTrad("EditForm.inputToggle.description.email-confirmation-redirection"),
75
+ defaultMessage: "After you confirmed your email, choose where you will be redirected."
76
+ },
77
+ placeholder: {
78
+ id: getTrad("EditForm.inputToggle.placeholder.email-confirmation-redirection"),
79
+ defaultMessage: "ex: https://youtfrontend.com/email-confirmation"
80
+ },
81
+ name: "email_confirmation_redirection",
82
+ type: "string",
83
+ size: 12
84
+ }
85
+ ];
86
+ const URL_REGEX = new RegExp("(^$)|((.+:\\/\\/.*)(d*)\\/?(.*))");
87
+ const schema = yup.object().shape({
88
+ email_confirmation_redirection: yup.mixed().when("email_confirmation", {
89
+ is: true,
90
+ then: yup.string().matches(URL_REGEX).required(),
91
+ otherwise: yup.string().nullable()
92
+ }),
93
+ email_reset_password: yup.string(translatedErrors.string).matches(URL_REGEX, {
94
+ id: translatedErrors.regex.id,
95
+ defaultMessage: "This is not a valid URL"
96
+ }).nullable()
97
+ });
98
+ const ProtectedAdvancedSettingsPage = () => /* @__PURE__ */ jsx(Page.Protect, { permissions: PERMISSIONS.readAdvancedSettings, children: /* @__PURE__ */ jsx(AdvancedSettingsPage, {}) });
99
+ const AdvancedSettingsPage = () => {
100
+ const { formatMessage } = useIntl();
101
+ const { toggleNotification } = useNotification();
102
+ const { notifyStatus } = useNotifyAT();
103
+ const queryClient = useQueryClient();
104
+ const { get, put } = useFetchClient();
105
+ const { formatAPIError } = useAPIErrorHandler();
106
+ const {
107
+ isLoading: isLoadingForPermissions,
108
+ allowedActions: { canUpdate }
109
+ } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });
110
+ const { isLoading: isLoadingData, data } = useQuery(
111
+ ["users-permissions", "advanced"],
112
+ async () => {
113
+ const { data: data2 } = await get("/users-permissions/advanced");
114
+ return data2;
115
+ },
116
+ {
117
+ onSuccess() {
118
+ notifyStatus(
119
+ formatMessage({
120
+ id: getTrad("Form.advancedSettings.data.loaded"),
121
+ defaultMessage: "Advanced settings data has been loaded"
122
+ })
123
+ );
124
+ },
125
+ onError() {
126
+ toggleNotification({
127
+ type: "danger",
128
+ message: formatMessage({
129
+ id: getTrad("notification.error"),
130
+ defaultMessage: "An error occured"
131
+ })
132
+ });
133
+ }
134
+ }
135
+ );
136
+ const isLoading = isLoadingForPermissions || isLoadingData;
137
+ const submitMutation = useMutation((body) => put("/users-permissions/advanced", body), {
138
+ async onSuccess() {
139
+ await queryClient.invalidateQueries(["users-permissions", "advanced"]);
140
+ toggleNotification({
141
+ type: "success",
142
+ message: formatMessage({
143
+ id: getTrad("notification.success.saved"),
144
+ defaultMessage: "Saved"
145
+ })
146
+ });
147
+ },
148
+ onError(error) {
149
+ toggleNotification({
150
+ type: "danger",
151
+ message: formatAPIError(error)
152
+ });
153
+ },
154
+ refetchActive: true
155
+ });
156
+ const { isLoading: isSubmittingForm } = submitMutation;
157
+ const handleSubmit = async (body) => {
158
+ submitMutation.mutate({
159
+ ...body,
160
+ email_confirmation_redirection: body.email_confirmation ? body.email_confirmation_redirection : ""
161
+ });
162
+ };
163
+ if (isLoading) {
164
+ return /* @__PURE__ */ jsx(Page.Loading, {});
165
+ }
166
+ return /* @__PURE__ */ jsxs(Page.Main, { "aria-busy": isSubmittingForm, children: [
167
+ /* @__PURE__ */ jsx(Page.Title, { children: formatMessage(
168
+ { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
169
+ {
170
+ name: formatMessage({
171
+ id: getTrad("HeaderNav.link.advancedSettings"),
172
+ defaultMessage: "Advanced Settings"
173
+ })
174
+ }
175
+ ) }),
176
+ /* @__PURE__ */ jsx(Form, { onSubmit: handleSubmit, initialValues: data.settings, validationSchema: schema, children: ({ values, isSubmitting, modified }) => {
177
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
178
+ /* @__PURE__ */ jsx(
179
+ Layouts.Header,
180
+ {
181
+ title: formatMessage({
182
+ id: getTrad("HeaderNav.link.advancedSettings"),
183
+ defaultMessage: "Advanced Settings"
184
+ }),
185
+ primaryAction: /* @__PURE__ */ jsx(
186
+ Button,
187
+ {
188
+ loading: isSubmitting,
189
+ type: "submit",
190
+ disabled: !modified || !canUpdate,
191
+ startIcon: /* @__PURE__ */ jsx(Check, {}),
192
+ size: "S",
193
+ children: formatMessage({ id: "global.save", defaultMessage: "Save" })
194
+ }
195
+ )
196
+ }
197
+ ),
198
+ /* @__PURE__ */ jsx(Layouts.Content, { children: /* @__PURE__ */ jsx(
199
+ Box,
200
+ {
201
+ background: "neutral0",
202
+ hasRadius: true,
203
+ shadow: "filterShadow",
204
+ paddingTop: 6,
205
+ paddingBottom: 6,
206
+ paddingLeft: 7,
207
+ paddingRight: 7,
208
+ children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
209
+ /* @__PURE__ */ jsx(Typography, { variant: "delta", tag: "h2", children: formatMessage({
210
+ id: "global.settings",
211
+ defaultMessage: "Settings"
212
+ }) }),
213
+ /* @__PURE__ */ jsx(Grid.Root, { gap: 6, children: [
214
+ {
215
+ label: {
216
+ id: getTrad("EditForm.inputSelect.label.role"),
217
+ defaultMessage: "Default role for authenticated users"
218
+ },
219
+ hint: {
220
+ id: getTrad("EditForm.inputSelect.description.role"),
221
+ defaultMessage: "It will attach the new authenticated user to the selected role."
222
+ },
223
+ options: data.roles.map((role) => ({
224
+ label: role.name,
225
+ value: role.type
226
+ })),
227
+ name: "default_role",
228
+ size: 6,
229
+ type: "enumeration"
230
+ },
231
+ ...layout
232
+ ].map(({ size, ...field }) => /* @__PURE__ */ jsx(
233
+ Grid.Item,
234
+ {
235
+ col: size,
236
+ direction: "column",
237
+ alignItems: "stretch",
238
+ children: /* @__PURE__ */ jsx(
239
+ InputRenderer,
240
+ {
241
+ ...field,
242
+ disabled: field.name === "email_confirmation_redirection" && values.email_confirmation === false,
243
+ label: formatMessage(field.label),
244
+ hint: field.hint ? formatMessage(field.hint) : void 0,
245
+ placeholder: field.placeholder ? formatMessage(field.placeholder) : void 0
246
+ }
247
+ )
248
+ },
249
+ field.name
250
+ )) })
251
+ ] })
252
+ }
253
+ ) })
254
+ ] });
255
+ } })
256
+ ] });
257
+ };
258
+ export {
259
+ AdvancedSettingsPage,
260
+ ProtectedAdvancedSettingsPage
261
+ };
262
+ //# sourceMappingURL=index-WoqT4Vkv.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-WoqT4Vkv.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 label: {\n id: getTrad('EditForm.inputToggle.label.email'),\n defaultMessage: 'One account per email address',\n },\n hint: {\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: 'boolean',\n size: 12,\n },\n {\n label: {\n id: getTrad('EditForm.inputToggle.label.sign-up'),\n defaultMessage: 'Enable sign-ups',\n },\n hint: {\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: 'boolean',\n size: 12,\n },\n {\n label: {\n id: getTrad('EditForm.inputToggle.label.email-reset-password'),\n defaultMessage: 'Reset password page',\n },\n hint: {\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: 'string',\n size: 12,\n },\n {\n label: {\n id: getTrad('EditForm.inputToggle.label.email-confirmation'),\n defaultMessage: 'Enable email confirmation',\n },\n hint: {\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: 'boolean',\n size: 12,\n },\n {\n label: {\n id: getTrad('EditForm.inputToggle.label.email-confirmation-redirection'),\n defaultMessage: 'Redirection url',\n },\n hint: {\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: 'string',\n size: 12,\n },\n];\n\nexport default layout;\n","import { translatedErrors } from '@strapi/strapi/admin';\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, {\n id: translatedErrors.regex.id,\n defaultMessage: 'This is not a valid URL',\n })\n .nullable(),\n});\n\nexport default schema;\n","import React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, useNotifyAT } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n useAPIErrorHandler,\n Page,\n Form,\n InputRenderer,\n useNotification,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\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 <Page.Protect permissions={PERMISSIONS.readAdvancedSettings}>\n <AdvancedSettingsPage />\n </Page.Protect>\n);\n\nconst AdvancedSettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\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: 'danger',\n message: formatMessage({\n id: getTrad('notification.error'),\n defaultMessage: 'An error occured',\n }),\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: formatMessage({\n id: getTrad('notification.success.saved'),\n defaultMessage: 'Saved',\n }),\n });\n },\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n refetchActive: true,\n });\n\n const { isLoading: isSubmittingForm } = submitMutation;\n\n const handleSubmit = async (body) => {\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 <Page.Loading />;\n }\n\n return (\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n }),\n }\n )}\n </Page.Title>\n <Form onSubmit={handleSubmit} initialValues={data.settings} validationSchema={schema}>\n {({ values, isSubmitting, modified }) => {\n return (\n <>\n <Layouts.Header\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={!modified || !canUpdate}\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Layouts.Content>\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\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={6}>\n {[\n {\n label: {\n id: getTrad('EditForm.inputSelect.label.role'),\n defaultMessage: 'Default role for authenticated users',\n },\n hint: {\n id: getTrad('EditForm.inputSelect.description.role'),\n defaultMessage:\n 'It will attach the new authenticated user to the selected role.',\n },\n options: data.roles.map((role) => ({\n label: role.name,\n value: role.type,\n })),\n name: 'default_role',\n size: 6,\n type: 'enumeration',\n },\n ...layout,\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer\n {...field}\n disabled={\n field.name === 'email_confirmation_redirection' &&\n values.email_confirmation === false\n }\n label={formatMessage(field.label)}\n hint={field.hint ? formatMessage(field.hint) : undefined}\n placeholder={\n field.placeholder ? formatMessage(field.placeholder) : undefined\n }\n />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n </Box>\n </Layouts.Content>\n </>\n );\n }}\n </Form>\n </Page.Main>\n );\n};\n\nexport { ProtectedAdvancedSettingsPage, AdvancedSettingsPage };\n"],"names":["data"],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ const it = {
2
+ "BoundRoute.title": "Vincola route a",
3
+ "EditForm.inputSelect.description.role": "Questa operazione assocerà i nuovi utenti autenticati al ruolo selezionato.",
4
+ "EditForm.inputSelect.label.role": "Ruolo di default per gli utenti registrati",
5
+ "EditForm.inputToggle.description.email": "Non consentire all'utente di creare account multipli usando lo stesso indirizzo email con provider di autenticazione diversi.",
6
+ "EditForm.inputToggle.description.email-confirmation": "Quando abilitato (ON), i nuovi utenti registrati riceveranno una richiesta di conferma via email.",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Scegli dove redirigere gli utenti che completano la conferma dell'indirizzo email.",
8
+ "EditForm.inputToggle.description.email-reset-password": "URL della pagina per il reset della password della tua applicazione",
9
+ "EditForm.inputToggle.description.sign-up": "Quando disabilitata (OFF), il processo di registrazione è proibito. Nessuno può iscriversi indipendentemente dal provider utilizzato.",
10
+ "EditForm.inputToggle.label.email": "Un solo account per indirizzo email",
11
+ "EditForm.inputToggle.label.email-confirmation": "Abilita conferma email",
12
+ "EditForm.inputToggle.label.email-confirmation-redirection": "URL di reindirizzamento",
13
+ "EditForm.inputToggle.label.email-reset-password": "Pagina reset password",
14
+ "EditForm.inputToggle.label.sign-up": "Abilita registrazione",
15
+ "Email.template.email_confirmation": "Conferma dell'indirizzo Email",
16
+ "HeaderNav.link.advancedSettings": "Impostazioni avanzate",
17
+ "HeaderNav.link.emailTemplates": "Template delle Email",
18
+ "HeaderNav.link.providers": "Provider",
19
+ "Plugin.permissions.plugins.description": "Definisce tutte le azioni consentite per il plugin {name}.",
20
+ "Plugins.header.description": "Di seguito sono elencate solo le azioni vincolate da una route.",
21
+ "Plugins.header.title": "Permessi",
22
+ "Policies.header.hint": "Seleziona le azioni dell'applicazione o del plugin e clicca sull'ingranaggio per mostrare il percorso corrispondente",
23
+ "Policies.header.title": "Impostazioni avanzate",
24
+ "PopUpForm.Email.email_templates.inputDescription": "Se non sai bene come usare le variabili, {link}",
25
+ "PopUpForm.Email.link.documentation": "controlla la nostra documentazione.",
26
+ "PopUpForm.Email.options.from.email.label": "Email del mittente",
27
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
28
+ "PopUpForm.Email.options.from.name.label": "Nome del mittente",
29
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
30
+ "PopUpForm.Email.options.message.label": "Messaggio",
31
+ "PopUpForm.Email.options.object.label": "Oggetto",
32
+ "PopUpForm.Email.options.object.placeholder": "Conferma il tuo indirizzo email per %APP_NAME%",
33
+ "PopUpForm.Email.options.response_email.label": "Email di risposta",
34
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
35
+ "PopUpForm.Providers.enabled.description": "Se disabilitato, gli utenti non potranno usare questo provider.",
36
+ "PopUpForm.Providers.enabled.label": "Abilita",
37
+ "PopUpForm.Providers.key.label": "Client ID",
38
+ "PopUpForm.Providers.key.placeholder": "TEXT",
39
+ "PopUpForm.Providers.redirectURL.front-end.label": "L'URL di reindirizzamento per la tua app di front-end",
40
+ "PopUpForm.Providers.redirectURL.label": "L'URL di reindirizzamento da aggiungere nelle impostazioni dell'applicazione di {provider}",
41
+ "PopUpForm.Providers.secret.label": "Client Secret",
42
+ "PopUpForm.Providers.secret.placeholder": "TEXT",
43
+ "PopUpForm.Providers.subdomain.label": "Host URI (Sottodominio)",
44
+ "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
45
+ "PopUpForm.header.edit.email-templates": "Modifica i Template Email",
46
+ "PopUpForm.header.edit.providers": "Modifica Provider",
47
+ "Settings.roles.deleted": "Ruolo eliminato",
48
+ "Settings.roles.edited": "Ruolo modificato",
49
+ "Settings.section-label": "Plugin Utenti & Permessi",
50
+ "notification.success.submit": "Impostazioni aggiornate",
51
+ "plugin.description.long": "Proteggi le tue API con un processo di autenticazione completo basato su JWT. Questo plugin è implementato con una strategia ACL che ti consente di gestire i permessi tra i gruppi di utenti.",
52
+ "plugin.description.short": "Proteggi le tue API con un processo di autenticazione completo basato su JWT",
53
+ "plugin.name": "Plugin Utenti & Permessi",
54
+ "popUpWarning.button.cancel": "Annulla",
55
+ "popUpWarning.button.confirm": "Conferma",
56
+ "popUpWarning.title": "Si prega di confermare",
57
+ "popUpWarning.warning.cancel": "Sei sicuro di voler annullare le tue modifiche?"
58
+ };
59
+ export {
60
+ it as default
61
+ };
62
+ //# sourceMappingURL=it-B-rv0E24.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"it-B-rv0E24.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}