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

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