@strapi/plugin-users-permissions 4.15.3 → 4.15.5-alpha.0

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 (125) hide show
  1. package/dist/_chunks/ar-20af7bfe.js +44 -0
  2. package/dist/_chunks/ar-20af7bfe.js.map +1 -0
  3. package/dist/_chunks/ar-56e57465.mjs +44 -0
  4. package/dist/_chunks/ar-56e57465.mjs.map +1 -0
  5. package/dist/_chunks/cs-0521a3c8.mjs +50 -0
  6. package/dist/_chunks/cs-0521a3c8.mjs.map +1 -0
  7. package/dist/_chunks/cs-6d7de06a.js +50 -0
  8. package/dist/_chunks/cs-6d7de06a.js.map +1 -0
  9. package/dist/_chunks/de-4af0884b.js +62 -0
  10. package/dist/_chunks/de-4af0884b.js.map +1 -0
  11. package/dist/_chunks/de-84fed33d.mjs +62 -0
  12. package/dist/_chunks/de-84fed33d.mjs.map +1 -0
  13. package/dist/_chunks/dk-21e25c4b.js +86 -0
  14. package/dist/_chunks/dk-21e25c4b.js.map +1 -0
  15. package/dist/_chunks/dk-d8302360.mjs +86 -0
  16. package/dist/_chunks/dk-d8302360.mjs.map +1 -0
  17. package/dist/_chunks/en-746a275e.js +86 -0
  18. package/dist/_chunks/en-746a275e.js.map +1 -0
  19. package/dist/_chunks/en-a610d7d0.mjs +86 -0
  20. package/dist/_chunks/en-a610d7d0.mjs.map +1 -0
  21. package/dist/_chunks/es-9d9ad31c.mjs +86 -0
  22. package/dist/_chunks/es-9d9ad31c.mjs.map +1 -0
  23. package/dist/_chunks/es-b6ae0f5e.js +86 -0
  24. package/dist/_chunks/es-b6ae0f5e.js.map +1 -0
  25. package/dist/_chunks/fr-0722d6cd.mjs +50 -0
  26. package/dist/_chunks/fr-0722d6cd.mjs.map +1 -0
  27. package/dist/_chunks/fr-dd77fc67.js +50 -0
  28. package/dist/_chunks/fr-dd77fc67.js.map +1 -0
  29. package/dist/_chunks/id-03eb1a4c.mjs +62 -0
  30. package/dist/_chunks/id-03eb1a4c.mjs.map +1 -0
  31. package/dist/_chunks/id-c19698f1.js +62 -0
  32. package/dist/_chunks/id-c19698f1.js.map +1 -0
  33. package/dist/_chunks/index-0eede1f1.js +319 -0
  34. package/dist/_chunks/index-0eede1f1.js.map +1 -0
  35. package/dist/_chunks/index-1cd6f0a7.mjs +253 -0
  36. package/dist/_chunks/index-1cd6f0a7.mjs.map +1 -0
  37. package/dist/_chunks/index-51eee77a.js +638 -0
  38. package/dist/_chunks/index-51eee77a.js.map +1 -0
  39. package/dist/_chunks/index-6c0cecec.js +252 -0
  40. package/dist/_chunks/index-6c0cecec.js.map +1 -0
  41. package/dist/_chunks/index-7d355a9f.js +1191 -0
  42. package/dist/_chunks/index-7d355a9f.js.map +1 -0
  43. package/dist/_chunks/index-99152e5d.mjs +300 -0
  44. package/dist/_chunks/index-99152e5d.mjs.map +1 -0
  45. package/dist/_chunks/index-a190e7bb.mjs +1159 -0
  46. package/dist/_chunks/index-a190e7bb.mjs.map +1 -0
  47. package/dist/_chunks/index-d032b685.js +407 -0
  48. package/dist/_chunks/index-d032b685.js.map +1 -0
  49. package/dist/_chunks/index-dd3ad10e.mjs +615 -0
  50. package/dist/_chunks/index-dd3ad10e.mjs.map +1 -0
  51. package/dist/_chunks/index-f115ada4.mjs +385 -0
  52. package/dist/_chunks/index-f115ada4.mjs.map +1 -0
  53. package/dist/_chunks/it-06b8d8a3.js +62 -0
  54. package/dist/_chunks/it-06b8d8a3.js.map +1 -0
  55. package/dist/_chunks/it-95fb8dcc.mjs +62 -0
  56. package/dist/_chunks/it-95fb8dcc.mjs.map +1 -0
  57. package/dist/_chunks/ja-557e03ee.mjs +48 -0
  58. package/dist/_chunks/ja-557e03ee.mjs.map +1 -0
  59. package/dist/_chunks/ja-e92e9903.js +48 -0
  60. package/dist/_chunks/ja-e92e9903.js.map +1 -0
  61. package/dist/_chunks/ko-5148326d.js +86 -0
  62. package/dist/_chunks/ko-5148326d.js.map +1 -0
  63. package/dist/_chunks/ko-d3b19f18.mjs +86 -0
  64. package/dist/_chunks/ko-d3b19f18.mjs.map +1 -0
  65. package/dist/_chunks/ms-1e62b726.js +49 -0
  66. package/dist/_chunks/ms-1e62b726.js.map +1 -0
  67. package/dist/_chunks/ms-b8a16476.mjs +49 -0
  68. package/dist/_chunks/ms-b8a16476.mjs.map +1 -0
  69. package/dist/_chunks/nl-66ef33aa.js +48 -0
  70. package/dist/_chunks/nl-66ef33aa.js.map +1 -0
  71. package/dist/_chunks/nl-fb114313.mjs +48 -0
  72. package/dist/_chunks/nl-fb114313.mjs.map +1 -0
  73. package/dist/_chunks/pl-5d70d4e8.mjs +86 -0
  74. package/dist/_chunks/pl-5d70d4e8.mjs.map +1 -0
  75. package/dist/_chunks/pl-7aa4933a.js +86 -0
  76. package/dist/_chunks/pl-7aa4933a.js.map +1 -0
  77. package/dist/_chunks/pt-95c2c76f.mjs +48 -0
  78. package/dist/_chunks/pt-95c2c76f.mjs.map +1 -0
  79. package/dist/_chunks/pt-BR-075f271a.mjs +44 -0
  80. package/dist/_chunks/pt-BR-075f271a.mjs.map +1 -0
  81. package/dist/_chunks/pt-BR-820fcd20.js +44 -0
  82. package/dist/_chunks/pt-BR-820fcd20.js.map +1 -0
  83. package/dist/_chunks/pt-a470d4e6.js +48 -0
  84. package/dist/_chunks/pt-a470d4e6.js.map +1 -0
  85. package/dist/_chunks/ru-625a0fe5.mjs +86 -0
  86. package/dist/_chunks/ru-625a0fe5.mjs.map +1 -0
  87. package/dist/_chunks/ru-cd0d1ac9.js +86 -0
  88. package/dist/_chunks/ru-cd0d1ac9.js.map +1 -0
  89. package/dist/_chunks/sk-495ecbe4.mjs +50 -0
  90. package/dist/_chunks/sk-495ecbe4.mjs.map +1 -0
  91. package/dist/_chunks/sk-8334fbf7.js +50 -0
  92. package/dist/_chunks/sk-8334fbf7.js.map +1 -0
  93. package/dist/_chunks/sv-137a2f79.js +86 -0
  94. package/dist/_chunks/sv-137a2f79.js.map +1 -0
  95. package/dist/_chunks/sv-60a1fabf.mjs +86 -0
  96. package/dist/_chunks/sv-60a1fabf.mjs.map +1 -0
  97. package/dist/_chunks/th-7fe328ef.js +60 -0
  98. package/dist/_chunks/th-7fe328ef.js.map +1 -0
  99. package/dist/_chunks/th-f633d0ed.mjs +60 -0
  100. package/dist/_chunks/th-f633d0ed.mjs.map +1 -0
  101. package/dist/_chunks/tr-16211986.mjs +85 -0
  102. package/dist/_chunks/tr-16211986.mjs.map +1 -0
  103. package/dist/_chunks/tr-eae92999.js +85 -0
  104. package/dist/_chunks/tr-eae92999.js.map +1 -0
  105. package/dist/_chunks/uk-0c33935a.js +49 -0
  106. package/dist/_chunks/uk-0c33935a.js.map +1 -0
  107. package/dist/_chunks/uk-f1fae414.mjs +49 -0
  108. package/dist/_chunks/uk-f1fae414.mjs.map +1 -0
  109. package/dist/_chunks/vi-b5d581a1.js +50 -0
  110. package/dist/_chunks/vi-b5d581a1.js.map +1 -0
  111. package/dist/_chunks/vi-e8fd97e4.mjs +50 -0
  112. package/dist/_chunks/vi-e8fd97e4.mjs.map +1 -0
  113. package/dist/_chunks/zh-284557f3.mjs +86 -0
  114. package/dist/_chunks/zh-284557f3.mjs.map +1 -0
  115. package/dist/_chunks/zh-9babf307.js +86 -0
  116. package/dist/_chunks/zh-9babf307.js.map +1 -0
  117. package/dist/_chunks/zh-Hans-68e4b43a.mjs +86 -0
  118. package/dist/_chunks/zh-Hans-68e4b43a.mjs.map +1 -0
  119. package/dist/_chunks/zh-Hans-baae8c78.js +86 -0
  120. package/dist/_chunks/zh-Hans-baae8c78.js.map +1 -0
  121. package/dist/admin/index.js +5 -0
  122. package/dist/admin/index.js.map +1 -0
  123. package/dist/admin/index.mjs +6 -0
  124. package/dist/admin/index.mjs.map +1 -0
  125. package/package.json +7 -6
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const designSystem = require("@strapi/design-system");
5
+ const helperPlugin = require("@strapi/helper-plugin");
6
+ const icons = require("@strapi/icons");
7
+ const formik = require("formik");
8
+ const reactIntl = require("react-intl");
9
+ const reactQuery = require("react-query");
10
+ const index = require("./index-6c0cecec.js");
11
+ require("lodash/isEmpty");
12
+ const yup = require("yup");
13
+ function _interopNamespace(e) {
14
+ if (e && e.__esModule)
15
+ return e;
16
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
17
+ if (e) {
18
+ for (const k in e) {
19
+ if (k !== "default") {
20
+ const d = Object.getOwnPropertyDescriptor(e, k);
21
+ Object.defineProperty(n, k, d.get ? d : {
22
+ enumerable: true,
23
+ get: () => e[k]
24
+ });
25
+ }
26
+ }
27
+ }
28
+ n.default = e;
29
+ return Object.freeze(n);
30
+ }
31
+ const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
32
+ const layout = [
33
+ {
34
+ intlLabel: {
35
+ id: index.getTrad("EditForm.inputToggle.label.email"),
36
+ defaultMessage: "One account per email address"
37
+ },
38
+ description: {
39
+ id: index.getTrad("EditForm.inputToggle.description.email"),
40
+ defaultMessage: "Disallow the user to create multiple accounts using the same email address with different authentication providers."
41
+ },
42
+ name: "unique_email",
43
+ type: "bool",
44
+ size: {
45
+ col: 12,
46
+ xs: 12
47
+ }
48
+ },
49
+ {
50
+ intlLabel: {
51
+ id: index.getTrad("EditForm.inputToggle.label.sign-up"),
52
+ defaultMessage: "Enable sign-ups"
53
+ },
54
+ description: {
55
+ id: index.getTrad("EditForm.inputToggle.description.sign-up"),
56
+ defaultMessage: "When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider."
57
+ },
58
+ name: "allow_register",
59
+ type: "bool",
60
+ size: {
61
+ col: 12,
62
+ xs: 12
63
+ }
64
+ },
65
+ {
66
+ intlLabel: {
67
+ id: index.getTrad("EditForm.inputToggle.label.email-reset-password"),
68
+ defaultMessage: "Reset password page"
69
+ },
70
+ description: {
71
+ id: index.getTrad("EditForm.inputToggle.description.email-reset-password"),
72
+ defaultMessage: "URL of your application's reset password page."
73
+ },
74
+ placeholder: {
75
+ id: index.getTrad("EditForm.inputToggle.placeholder.email-reset-password"),
76
+ defaultMessage: "ex: https://youtfrontend.com/reset-password"
77
+ },
78
+ name: "email_reset_password",
79
+ type: "text",
80
+ size: {
81
+ col: 6,
82
+ xs: 12
83
+ }
84
+ },
85
+ {
86
+ intlLabel: {
87
+ id: index.getTrad("EditForm.inputToggle.label.email-confirmation"),
88
+ defaultMessage: "Enable email confirmation"
89
+ },
90
+ description: {
91
+ id: index.getTrad("EditForm.inputToggle.description.email-confirmation"),
92
+ defaultMessage: "When enabled (ON), new registered users receive a confirmation email."
93
+ },
94
+ name: "email_confirmation",
95
+ type: "bool",
96
+ size: {
97
+ col: 12,
98
+ xs: 12
99
+ }
100
+ },
101
+ {
102
+ intlLabel: {
103
+ id: index.getTrad("EditForm.inputToggle.label.email-confirmation-redirection"),
104
+ defaultMessage: "Redirection url"
105
+ },
106
+ description: {
107
+ id: index.getTrad("EditForm.inputToggle.description.email-confirmation-redirection"),
108
+ defaultMessage: "After you confirmed your email, choose where you will be redirected."
109
+ },
110
+ placeholder: {
111
+ id: index.getTrad("EditForm.inputToggle.placeholder.email-confirmation-redirection"),
112
+ defaultMessage: "ex: https://youtfrontend.com/email-confirmation"
113
+ },
114
+ name: "email_confirmation_redirection",
115
+ type: "text",
116
+ size: {
117
+ col: 6,
118
+ xs: 12
119
+ }
120
+ }
121
+ ];
122
+ const URL_REGEX = new RegExp("(^$)|((.+:\\/\\/.*)(d*)\\/?(.*))");
123
+ const schema = yup__namespace.object().shape({
124
+ email_confirmation_redirection: yup__namespace.mixed().when("email_confirmation", {
125
+ is: true,
126
+ then: yup__namespace.string().matches(URL_REGEX).required(),
127
+ otherwise: yup__namespace.string().nullable()
128
+ }),
129
+ email_reset_password: yup__namespace.string(helperPlugin.translatedErrors.string).matches(URL_REGEX, helperPlugin.translatedErrors.regex).nullable()
130
+ });
131
+ const ProtectedAdvancedSettingsPage = () => /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.readAdvancedSettings, children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedSettingsPage, {}) });
132
+ const AdvancedSettingsPage = () => {
133
+ const { formatMessage } = reactIntl.useIntl();
134
+ const toggleNotification = helperPlugin.useNotification();
135
+ const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
136
+ const { notifyStatus } = designSystem.useNotifyAT();
137
+ const queryClient = reactQuery.useQueryClient();
138
+ const { get, put } = helperPlugin.useFetchClient();
139
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
140
+ helperPlugin.useFocusWhenNavigate();
141
+ const {
142
+ isLoading: isLoadingForPermissions,
143
+ allowedActions: { canUpdate }
144
+ } = helperPlugin.useRBAC({ update: index.PERMISSIONS.updateAdvancedSettings });
145
+ const { isLoading: isLoadingData, data } = reactQuery.useQuery(
146
+ ["users-permissions", "advanced"],
147
+ async () => {
148
+ const { data: data2 } = await get("/users-permissions/advanced");
149
+ return data2;
150
+ },
151
+ {
152
+ onSuccess() {
153
+ notifyStatus(
154
+ formatMessage({
155
+ id: index.getTrad("Form.advancedSettings.data.loaded"),
156
+ defaultMessage: "Advanced settings data has been loaded"
157
+ })
158
+ );
159
+ },
160
+ onError() {
161
+ toggleNotification({
162
+ type: "warning",
163
+ message: { id: index.getTrad("notification.error"), defaultMessage: "An error occured" }
164
+ });
165
+ }
166
+ }
167
+ );
168
+ const isLoading = isLoadingForPermissions || isLoadingData;
169
+ const submitMutation = reactQuery.useMutation((body) => put("/users-permissions/advanced", body), {
170
+ async onSuccess() {
171
+ await queryClient.invalidateQueries(["users-permissions", "advanced"]);
172
+ toggleNotification({
173
+ type: "success",
174
+ message: { id: index.getTrad("notification.success.saved"), defaultMessage: "Saved" }
175
+ });
176
+ unlockApp();
177
+ },
178
+ onError(error) {
179
+ toggleNotification({
180
+ type: "warning",
181
+ message: formatAPIError(error)
182
+ });
183
+ unlockApp();
184
+ },
185
+ refetchActive: true
186
+ });
187
+ const { isLoading: isSubmittingForm } = submitMutation;
188
+ const handleSubmit = async (body) => {
189
+ lockApp();
190
+ submitMutation.mutate({
191
+ ...body,
192
+ email_confirmation_redirection: body.email_confirmation ? body.email_confirmation_redirection : ""
193
+ });
194
+ };
195
+ if (isLoading) {
196
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": "true", children: [
197
+ /* @__PURE__ */ jsxRuntime.jsx(
198
+ helperPlugin.SettingsPageTitle,
199
+ {
200
+ name: formatMessage({
201
+ id: index.getTrad("HeaderNav.link.advancedSettings"),
202
+ defaultMessage: "Advanced Settings"
203
+ })
204
+ }
205
+ ),
206
+ /* @__PURE__ */ jsxRuntime.jsx(
207
+ designSystem.HeaderLayout,
208
+ {
209
+ title: formatMessage({
210
+ id: index.getTrad("HeaderNav.link.advancedSettings"),
211
+ defaultMessage: "Advanced Settings"
212
+ })
213
+ }
214
+ ),
215
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) })
216
+ ] });
217
+ }
218
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": isSubmittingForm, children: [
219
+ /* @__PURE__ */ jsxRuntime.jsx(
220
+ helperPlugin.SettingsPageTitle,
221
+ {
222
+ name: formatMessage({
223
+ id: index.getTrad("HeaderNav.link.advancedSettings"),
224
+ defaultMessage: "Advanced Settings"
225
+ })
226
+ }
227
+ ),
228
+ /* @__PURE__ */ jsxRuntime.jsx(
229
+ formik.Formik,
230
+ {
231
+ onSubmit: handleSubmit,
232
+ initialValues: data.settings,
233
+ validateOnChange: false,
234
+ validationSchema: schema,
235
+ enableReinitialize: true,
236
+ children: ({ errors, values, handleChange, isSubmitting, dirty }) => {
237
+ return /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Form, { children: [
238
+ /* @__PURE__ */ jsxRuntime.jsx(
239
+ designSystem.HeaderLayout,
240
+ {
241
+ title: formatMessage({
242
+ id: index.getTrad("HeaderNav.link.advancedSettings"),
243
+ defaultMessage: "Advanced Settings"
244
+ }),
245
+ primaryAction: /* @__PURE__ */ jsxRuntime.jsx(
246
+ designSystem.Button,
247
+ {
248
+ loading: isSubmitting,
249
+ type: "submit",
250
+ disabled: canUpdate ? !dirty : !canUpdate,
251
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
252
+ size: "S",
253
+ children: formatMessage({ id: "global.save", defaultMessage: "Save" })
254
+ }
255
+ )
256
+ }
257
+ ),
258
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
259
+ designSystem.Box,
260
+ {
261
+ background: "neutral0",
262
+ hasRadius: true,
263
+ shadow: "filterShadow",
264
+ paddingTop: 6,
265
+ paddingBottom: 6,
266
+ paddingLeft: 7,
267
+ paddingRight: 7,
268
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
269
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", as: "h2", children: formatMessage({
270
+ id: "global.settings",
271
+ defaultMessage: "Settings"
272
+ }) }),
273
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { gap: 6, children: [
274
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
275
+ designSystem.Select,
276
+ {
277
+ label: formatMessage({
278
+ id: index.getTrad("EditForm.inputSelect.label.role"),
279
+ defaultMessage: "Default role for authenticated users"
280
+ }),
281
+ value: values.default_role,
282
+ hint: formatMessage({
283
+ id: index.getTrad("EditForm.inputSelect.description.role"),
284
+ defaultMessage: "It will attach the new authenticated user to the selected role."
285
+ }),
286
+ onChange: (e) => handleChange({ target: { name: "default_role", value: e } }),
287
+ children: data.roles.map((role) => {
288
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Option, { value: role.type, children: role.name }, role.type);
289
+ })
290
+ }
291
+ ) }),
292
+ layout.map((input) => {
293
+ let value = values[input.name];
294
+ if (!value) {
295
+ value = input.type === "bool" ? false : "";
296
+ }
297
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { ...input.size, children: /* @__PURE__ */ jsxRuntime.jsx(
298
+ helperPlugin.GenericInput,
299
+ {
300
+ ...input,
301
+ value,
302
+ error: errors[input.name],
303
+ disabled: input.name === "email_confirmation_redirection" && values.email_confirmation === false,
304
+ onChange: handleChange
305
+ }
306
+ ) }, input.name);
307
+ })
308
+ ] })
309
+ ] })
310
+ }
311
+ ) })
312
+ ] });
313
+ }
314
+ }
315
+ )
316
+ ] });
317
+ };
318
+ exports.default = ProtectedAdvancedSettingsPage;
319
+ //# sourceMappingURL=index-0eede1f1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-0eede1f1.js","sources":["../../admin/src/pages/AdvancedSettings/utils/layout.js","../../admin/src/pages/AdvancedSettings/utils/schema.js","../../admin/src/pages/AdvancedSettings/index.js"],"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":["getTrad","yup","translatedErrors","jsx","CheckPagePermissions","PERMISSIONS","useIntl","useNotification","useOverlayBlocker","useNotifyAT","useQueryClient","useFetchClient","useAPIErrorHandler","useFocusWhenNavigate","useRBAC","useQuery","data","useMutation","jsxs","Main","SettingsPageTitle","HeaderLayout","ContentLayout","LoadingIndicatorPage","Formik","Form","Button","Check","Box","Flex","Typography","Grid","GridItem","Select","Option","GenericInput"],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ import { prefixPluginTranslations } from "@strapi/helper-plugin";
2
+ const __variableDynamicImportRuntimeHelper = (glob, path) => {
3
+ const v = glob[path];
4
+ if (v) {
5
+ return typeof v === "function" ? v() : Promise.resolve(v);
6
+ }
7
+ return new Promise((_, reject) => {
8
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(reject.bind(null, new Error("Unknown variable dynamic import: " + path)));
9
+ });
10
+ };
11
+ const name$1 = "@strapi/plugin-users-permissions";
12
+ const version = "4.15.5-alpha.0";
13
+ const description = "Protect your API with a full-authentication process based on JWT";
14
+ const repository = {
15
+ type: "git",
16
+ url: "git://github.com/strapi/strapi.git"
17
+ };
18
+ const license = "SEE LICENSE IN LICENSE";
19
+ const author = {
20
+ name: "Strapi Solutions SAS",
21
+ email: "hi@strapi.io",
22
+ url: "https://strapi.io"
23
+ };
24
+ const maintainers = [
25
+ {
26
+ name: "Strapi Solutions SAS",
27
+ email: "hi@strapi.io",
28
+ url: "https://strapi.io"
29
+ }
30
+ ];
31
+ const exports = {
32
+ "./strapi-admin": {
33
+ source: "./admin/src/index.js",
34
+ "import": "./dist/admin/index.mjs",
35
+ require: "./dist/admin/index.js",
36
+ "default": "./dist/admin/index.js"
37
+ },
38
+ "./strapi-server": {
39
+ source: "./strapi-server.js",
40
+ require: "./strapi-server.js",
41
+ "default": "./strapi-server.js"
42
+ },
43
+ "./package.json": "./package.json"
44
+ };
45
+ const scripts = {
46
+ build: "pack-up build",
47
+ clean: "run -T rimraf dist",
48
+ lint: "run -T eslint .",
49
+ prepublishOnly: "yarn clean && yarn build",
50
+ "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
51
+ "test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js",
52
+ "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
53
+ "test:front:watch:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
54
+ "test:unit": "run -T jest",
55
+ "test:unit:watch": "run -T jest --watch",
56
+ watch: "pack-up watch"
57
+ };
58
+ const dependencies = {
59
+ "@strapi/design-system": "1.13.0",
60
+ "@strapi/helper-plugin": "4.15.5-alpha.0",
61
+ "@strapi/icons": "1.13.0",
62
+ "@strapi/utils": "4.15.5-alpha.0",
63
+ bcryptjs: "2.4.3",
64
+ formik: "2.4.0",
65
+ "grant-koa": "5.4.8",
66
+ immer: "9.0.19",
67
+ jsonwebtoken: "9.0.0",
68
+ "jwk-to-pem": "2.0.5",
69
+ koa: "2.13.4",
70
+ "koa2-ratelimit": "^1.1.2",
71
+ lodash: "4.17.21",
72
+ "prop-types": "^15.8.1",
73
+ purest: "4.0.2",
74
+ "react-intl": "6.4.1",
75
+ "react-query": "3.39.3",
76
+ "react-redux": "8.1.1",
77
+ "url-join": "4.0.1",
78
+ yup: "0.32.9"
79
+ };
80
+ const devDependencies = {
81
+ "@strapi/pack-up": "4.15.5-alpha.0",
82
+ "@strapi/strapi": "4.15.5-alpha.0",
83
+ "@testing-library/dom": "9.2.0",
84
+ "@testing-library/react": "14.0.0",
85
+ "@testing-library/user-event": "14.4.3",
86
+ msw: "1.3.0",
87
+ react: "^18.2.0",
88
+ "react-dom": "^18.2.0",
89
+ "react-router-dom": "5.3.4",
90
+ "styled-components": "5.3.3"
91
+ };
92
+ const peerDependencies = {
93
+ "@strapi/strapi": "^4.0.0",
94
+ react: "^17.0.0 || ^18.0.0",
95
+ "react-dom": "^17.0.0 || ^18.0.0",
96
+ "react-router-dom": "^5.2.0",
97
+ "styled-components": "^5.2.1"
98
+ };
99
+ const engines = {
100
+ node: ">=18.0.0 <=20.x.x",
101
+ npm: ">=6.0.0"
102
+ };
103
+ const strapi = {
104
+ displayName: "Roles & Permissions",
105
+ name: "users-permissions",
106
+ 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.",
107
+ required: true,
108
+ kind: "plugin"
109
+ };
110
+ const gitHead = "ecfbf5ede664b0e56f8dd828fd26bd63903b3d14";
111
+ const pluginPkg = {
112
+ name: name$1,
113
+ version,
114
+ description,
115
+ repository,
116
+ license,
117
+ author,
118
+ maintainers,
119
+ exports,
120
+ scripts,
121
+ dependencies,
122
+ devDependencies,
123
+ peerDependencies,
124
+ engines,
125
+ strapi,
126
+ gitHead
127
+ };
128
+ const PERMISSIONS = {
129
+ // Roles
130
+ accessRoles: [
131
+ { action: "plugin::users-permissions.roles.create", subject: null },
132
+ { action: "plugin::users-permissions.roles.read", subject: null }
133
+ ],
134
+ createRole: [{ action: "plugin::users-permissions.roles.create", subject: null }],
135
+ deleteRole: [{ action: "plugin::users-permissions.roles.delete", subject: null }],
136
+ readRoles: [{ action: "plugin::users-permissions.roles.read", subject: null }],
137
+ updateRole: [{ action: "plugin::users-permissions.roles.update", subject: null }],
138
+ // AdvancedSettings
139
+ readAdvancedSettings: [
140
+ { action: "plugin::users-permissions.advanced-settings.read", subject: null }
141
+ ],
142
+ updateAdvancedSettings: [
143
+ { action: "plugin::users-permissions.advanced-settings.update", subject: null }
144
+ ],
145
+ // Emails
146
+ readEmailTemplates: [{ action: "plugin::users-permissions.email-templates.read", subject: null }],
147
+ updateEmailTemplates: [
148
+ { action: "plugin::users-permissions.email-templates.update", subject: null }
149
+ ],
150
+ // Providers
151
+ readProviders: [{ action: "plugin::users-permissions.providers.read", subject: null }],
152
+ updateProviders: [{ action: "plugin::users-permissions.providers.update", subject: null }]
153
+ };
154
+ const pluginId = pluginPkg.name.replace(/^@strapi\/plugin-/i, "");
155
+ const getTrad = (id) => `${pluginId}.${id}`;
156
+ const name = pluginPkg.strapi.name;
157
+ const index = {
158
+ register(app) {
159
+ app.createSettingSection(
160
+ {
161
+ id: "users-permissions",
162
+ intlLabel: {
163
+ id: getTrad("Settings.section-label"),
164
+ defaultMessage: "Users & Permissions plugin"
165
+ }
166
+ },
167
+ [
168
+ {
169
+ intlLabel: {
170
+ id: "global.roles",
171
+ defaultMessage: "Roles"
172
+ },
173
+ id: "roles",
174
+ to: `/settings/users-permissions/roles`,
175
+ async Component() {
176
+ const component = await import("./index-a190e7bb.mjs");
177
+ return component;
178
+ },
179
+ permissions: PERMISSIONS.accessRoles
180
+ },
181
+ {
182
+ intlLabel: {
183
+ id: getTrad("HeaderNav.link.providers"),
184
+ defaultMessage: "Providers"
185
+ },
186
+ id: "providers",
187
+ to: `/settings/users-permissions/providers`,
188
+ async Component() {
189
+ const component = await import("./index-dd3ad10e.mjs");
190
+ return component;
191
+ },
192
+ permissions: PERMISSIONS.readProviders
193
+ },
194
+ {
195
+ intlLabel: {
196
+ id: getTrad("HeaderNav.link.emailTemplates"),
197
+ defaultMessage: "Email templates"
198
+ },
199
+ id: "email-templates",
200
+ to: `/settings/users-permissions/email-templates`,
201
+ async Component() {
202
+ const component = await import("./index-f115ada4.mjs");
203
+ return component;
204
+ },
205
+ permissions: PERMISSIONS.readEmailTemplates
206
+ },
207
+ {
208
+ intlLabel: {
209
+ id: getTrad("HeaderNav.link.advancedSettings"),
210
+ defaultMessage: "Advanced Settings"
211
+ },
212
+ id: "advanced-settings",
213
+ to: `/settings/users-permissions/advanced-settings`,
214
+ async Component() {
215
+ const component = await import("./index-99152e5d.mjs");
216
+ return component;
217
+ },
218
+ permissions: PERMISSIONS.readAdvancedSettings
219
+ }
220
+ ]
221
+ );
222
+ app.registerPlugin({
223
+ id: "users-permissions",
224
+ name
225
+ });
226
+ },
227
+ bootstrap() {
228
+ },
229
+ async registerTrads({ locales }) {
230
+ const importedTrads = await Promise.all(
231
+ locales.map((locale) => {
232
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/ar.json": () => import("./ar-56e57465.mjs"), "./translations/cs.json": () => import("./cs-0521a3c8.mjs"), "./translations/de.json": () => import("./de-84fed33d.mjs"), "./translations/dk.json": () => import("./dk-d8302360.mjs"), "./translations/en.json": () => import("./en-a610d7d0.mjs"), "./translations/es.json": () => import("./es-9d9ad31c.mjs"), "./translations/fr.json": () => import("./fr-0722d6cd.mjs"), "./translations/id.json": () => import("./id-03eb1a4c.mjs"), "./translations/it.json": () => import("./it-95fb8dcc.mjs"), "./translations/ja.json": () => import("./ja-557e03ee.mjs"), "./translations/ko.json": () => import("./ko-d3b19f18.mjs"), "./translations/ms.json": () => import("./ms-b8a16476.mjs"), "./translations/nl.json": () => import("./nl-fb114313.mjs"), "./translations/pl.json": () => import("./pl-5d70d4e8.mjs"), "./translations/pt-BR.json": () => import("./pt-BR-075f271a.mjs"), "./translations/pt.json": () => import("./pt-95c2c76f.mjs"), "./translations/ru.json": () => import("./ru-625a0fe5.mjs"), "./translations/sk.json": () => import("./sk-495ecbe4.mjs"), "./translations/sv.json": () => import("./sv-60a1fabf.mjs"), "./translations/th.json": () => import("./th-f633d0ed.mjs"), "./translations/tr.json": () => import("./tr-16211986.mjs"), "./translations/uk.json": () => import("./uk-f1fae414.mjs"), "./translations/vi.json": () => import("./vi-e8fd97e4.mjs"), "./translations/zh-Hans.json": () => import("./zh-Hans-68e4b43a.mjs"), "./translations/zh.json": () => import("./zh-284557f3.mjs") }), `./translations/${locale}.json`).then(({ default: data }) => {
233
+ return {
234
+ data: prefixPluginTranslations(data, "users-permissions"),
235
+ locale
236
+ };
237
+ }).catch(() => {
238
+ return {
239
+ data: {},
240
+ locale
241
+ };
242
+ });
243
+ })
244
+ );
245
+ return Promise.resolve(importedTrads);
246
+ }
247
+ };
248
+ export {
249
+ PERMISSIONS as P,
250
+ getTrad as g,
251
+ index as i
252
+ };
253
+ //# sourceMappingURL=index-1cd6f0a7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-1cd6f0a7.mjs","sources":["../../admin/src/constants.js","../../admin/src/pluginId.js","../../admin/src/utils/getTrad.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","// NOTE TO PLUGINS DEVELOPERS:\n// If you modify this file by adding new options to the plugin entry point\n// Here's the file: strapi/docs/3.0.0-beta.x/plugin-development/frontend-field-api.md\n// Here's the file: strapi/docs/3.0.0-beta.x/guides/registering-a-field-in-admin.md\n// Also the strapi-generate-plugins/files/admin/src/index.js needs to be updated\n// IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED\nimport { prefixPluginTranslations } from '@strapi/helper-plugin';\n\nimport pluginPkg from '../../package.json';\n\nimport { PERMISSIONS } from './constants';\nimport getTrad from './utils/getTrad';\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: `/settings/users-permissions/roles`,\n async Component() {\n const component = await import('./pages/Roles');\n\n return component;\n },\n permissions: PERMISSIONS.accessRoles,\n },\n {\n intlLabel: {\n id: getTrad('HeaderNav.link.providers'),\n defaultMessage: 'Providers',\n },\n id: 'providers',\n to: `/settings/users-permissions/providers`,\n async Component() {\n const component = await import('./pages/Providers');\n\n return component;\n },\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: `/settings/users-permissions/email-templates`,\n async Component() {\n const component = await import('./pages/EmailTemplates');\n\n return component;\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: `/settings/users-permissions/advanced-settings`,\n async Component() {\n const component = await import('./pages/AdvancedSettings');\n\n return component;\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":[],"mappings":"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"}