@strapi/admin 4.7.0 → 4.7.2-exp.24dd7d95972fa822bf43e9b095b51027402c229e

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 (137) hide show
  1. package/admin/src/components/AutoReloadOverlayBlockerProvider/Blocker.js +4 -4
  2. package/admin/src/components/AutoReloadOverlayBlockerProvider/Overlay.js +2 -2
  3. package/admin/src/components/GuidedTour/Homepage/index.js +3 -3
  4. package/admin/src/components/GuidedTour/Modal/components/Content.js +35 -23
  5. package/admin/src/components/GuidedTour/Modal/components/Modal.js +6 -4
  6. package/admin/src/components/LeftMenu/index.js +3 -3
  7. package/admin/src/components/Notifications/index.js +6 -4
  8. package/admin/src/components/UpgradePlanModal/index.js +6 -7
  9. package/admin/src/content-manager/components/ComponentInitializer/index.js +3 -3
  10. package/admin/src/content-manager/components/DragLayer/RelationDragPreview.js +3 -3
  11. package/admin/src/content-manager/components/DynamicTable/ConfirmDialogDelete/index.js +3 -11
  12. package/admin/src/content-manager/components/DynamicTable/ConfirmDialogDeleteAll/index.js +3 -11
  13. package/admin/src/content-manager/components/DynamicZone/components/ComponentCard.js +4 -4
  14. package/admin/src/content-manager/components/DynamicZone/components/DynamicComponent.js +3 -4
  15. package/admin/src/content-manager/components/DynamicZone/index.js +3 -3
  16. package/admin/src/content-manager/components/FieldComponent/index.js +3 -3
  17. package/admin/src/content-manager/components/NonRepeatableComponent/index.js +3 -3
  18. package/admin/src/content-manager/components/RelationInput/components/Relation.js +9 -3
  19. package/admin/src/content-manager/components/RelationInput/components/RelationItem.js +4 -4
  20. package/admin/src/content-manager/components/RepeatableComponent/components/Component.js +12 -6
  21. package/admin/src/content-manager/components/Wysiwyg/Editor.js +2 -2
  22. package/admin/src/content-manager/components/Wysiwyg/index.js +5 -5
  23. package/admin/src/content-manager/components/Wysiwyg/utils/continueList.js +3 -3
  24. package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +5 -5
  25. package/admin/src/content-manager/pages/EditSettingsView/components/DynamicZoneList.js +3 -3
  26. package/admin/src/content-manager/pages/EditSettingsView/index.js +3 -3
  27. package/admin/src/content-manager/pages/EditView/Header/index.js +6 -7
  28. package/admin/src/content-manager/pages/EditView/Information/index.js +9 -9
  29. package/admin/src/content-manager/pages/EditView/index.js +9 -9
  30. package/admin/src/content-manager/pages/ListSettingsView/components/CardPreview.js +3 -3
  31. package/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +3 -3
  32. package/admin/src/content-manager/pages/ListSettingsView/components/Settings.js +5 -5
  33. package/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js +3 -11
  34. package/admin/src/pages/Admin/Onboarding/index.js +11 -5
  35. package/admin/src/pages/AuthPage/components/ForgotPassword/index.js +3 -3
  36. package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +3 -12
  37. package/admin/src/pages/AuthPage/components/Register/index.js +2 -3
  38. package/admin/src/pages/AuthPage/components/ResetPassword/index.js +3 -3
  39. package/admin/src/pages/HomePage/ContentBlocks.js +3 -3
  40. package/admin/src/pages/HomePage/HomeHeader.js +3 -7
  41. package/admin/src/pages/HomePage/SocialLinks.js +5 -5
  42. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/PackageStats.js +3 -3
  43. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/index.js +3 -3
  44. package/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FiltersPopover.js +3 -3
  45. package/admin/src/pages/ProfilePage/index.js +11 -11
  46. package/admin/src/pages/SettingsPage/components/Tokens/FormHead/index.js +3 -3
  47. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ActionBoundRoutes/index.js +5 -5
  48. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/index.js +5 -5
  49. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js +3 -3
  50. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Permissions/index.js +3 -3
  51. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +3 -3
  52. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromComputerForm.js +2 -3
  53. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +7 -6
  54. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/index.js +4 -6
  55. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RoleForm/index.js +2 -3
  56. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +5 -5
  57. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js +3 -3
  58. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +3 -3
  59. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +7 -7
  60. package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +5 -5
  61. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/index.js +3 -3
  62. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js +2 -3
  63. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js +9 -9
  64. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +7 -7
  65. package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +158 -165
  66. package/admin/src/pages/UseCasePage/index.js +2 -3
  67. package/admin/src/translations/zh-Hans.json +31 -1
  68. package/build/{4849.7abafe52.chunk.js → 3094.1cac9087.chunk.js} +2 -2
  69. package/build/{4049.16583eee.chunk.js → 4049.64715f20.chunk.js} +1 -1
  70. package/build/4649.daa290f6.chunk.js +30 -0
  71. package/build/{6487.83e219bf.chunk.js → 6891.ef7464be.chunk.js} +6 -6
  72. package/build/7259.63e91b59.chunk.js +1 -0
  73. package/build/Admin-authenticatedApp.884faefa.chunk.js +79 -0
  74. package/build/Admin_homePage.1411fb7c.chunk.js +68 -0
  75. package/build/{Admin_marketplace.a8ea585f.chunk.js → Admin_marketplace.0f6c8ee2.chunk.js} +4 -4
  76. package/build/Admin_profilePage.d2a8f9ab.chunk.js +15 -0
  77. package/build/{Admin_settingsPage.f6d02df6.chunk.js → Admin_settingsPage.6814a96e.chunk.js} +17 -18
  78. package/build/admin-app.d9d96db4.chunk.js +112 -0
  79. package/build/admin-edit-roles-page.bf130aaf.chunk.js +1 -0
  80. package/build/{admin-edit-users.f06c4a53.chunk.js → admin-edit-users.48031e30.chunk.js} +2 -2
  81. package/build/admin-users.77b4188a.chunk.js +11 -0
  82. package/build/{content-manager.6ed87531.chunk.js → content-manager.d792c194.chunk.js} +40 -40
  83. package/build/{content-type-builder-list-view.c2f917b6.chunk.js → content-type-builder-list-view.cf38fe2f.chunk.js} +9 -9
  84. package/build/content-type-builder-translation-zh-Hans-json.415577fb.chunk.js +1 -0
  85. package/build/content-type-builder.cdd117c3.chunk.js +126 -0
  86. package/build/email-settings-page.4bdbef9a.chunk.js +3 -0
  87. package/build/{i18n-settings-page.c7bc29fc.chunk.js → i18n-settings-page.2bb5be96.chunk.js} +1 -1
  88. package/build/index.html +1 -1
  89. package/build/main.64fe0c37.js +3928 -0
  90. package/build/{runtime~main.bc7de2d8.js → runtime~main.684b5fed.js} +1 -1
  91. package/build/sso-settings-page.5a8588ef.chunk.js +1 -0
  92. package/build/upload-settings.0200561d.chunk.js +1 -0
  93. package/build/upload-translation-zh-Hans-json.db163b6b.chunk.js +1 -0
  94. package/build/upload.c7da1611.chunk.js +13 -0
  95. package/build/{users-advanced-settings-page.677e1973.chunk.js → users-advanced-settings-page.c0cae03a.chunk.js} +1 -1
  96. package/build/users-providers-settings-page.5f86e45c.chunk.js +1 -0
  97. package/build/users-roles-settings-page.b02986df.chunk.js +30 -0
  98. package/build/webhook-edit-page.a2a2b7bb.chunk.js +23 -0
  99. package/build/webhook-list-page.029957a4.chunk.js +1 -0
  100. package/build/zh-Hans-json.993d085f.chunk.js +1 -0
  101. package/ee/admin/hooks/useLicenseLimitNotification/index.js +2 -1
  102. package/ee/admin/pages/AuthPage/components/Login/index.js +3 -3
  103. package/ee/admin/pages/AuthPage/components/Providers/index.js +3 -3
  104. package/ee/admin/pages/SettingsPage/pages/ApplicationInfosPage/components/AdminSeatInfo/index.js +3 -3
  105. package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +6 -7
  106. package/ee/admin/pages/SettingsPage/pages/SingleSignOn/index.js +11 -3
  107. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/CreateAction/index.js +5 -4
  108. package/ee/server/controllers/admin.js +4 -3
  109. package/ee/server/controllers/user.js +2 -2
  110. package/ee/server/services/seat-enforcement.js +2 -2
  111. package/package.json +13 -12
  112. package/server/content-types/User.js +4 -0
  113. package/server/content-types/api-token.js +1 -0
  114. package/server/controllers/user.js +7 -1
  115. package/server/services/permission/permissions-manager/index.js +9 -5
  116. package/server/services/permission/permissions-manager/sanitize.js +101 -4
  117. package/build/4649.ffa2f59a.chunk.js +0 -30
  118. package/build/7259.cd2f7bad.chunk.js +0 -1
  119. package/build/Admin-authenticatedApp.bce108cd.chunk.js +0 -79
  120. package/build/Admin_homePage.cec3f510.chunk.js +0 -70
  121. package/build/Admin_profilePage.b27e40f6.chunk.js +0 -15
  122. package/build/admin-app.d3b3237b.chunk.js +0 -112
  123. package/build/admin-edit-roles-page.fd041d89.chunk.js +0 -1
  124. package/build/admin-users.8c9bfda4.chunk.js +0 -11
  125. package/build/content-type-builder-translation-zh-Hans-json.52a30266.chunk.js +0 -1
  126. package/build/content-type-builder.b7fb1e65.chunk.js +0 -126
  127. package/build/email-settings-page.884cfb8b.chunk.js +0 -3
  128. package/build/main.8009bfe8.js +0 -3930
  129. package/build/sso-settings-page.82d84043.chunk.js +0 -1
  130. package/build/upload-settings.c18b010f.chunk.js +0 -1
  131. package/build/upload-translation-zh-Hans-json.3da5cf56.chunk.js +0 -1
  132. package/build/upload.0876ab69.chunk.js +0 -13
  133. package/build/users-providers-settings-page.87a9c77d.chunk.js +0 -1
  134. package/build/users-roles-settings-page.79c19845.chunk.js +0 -30
  135. package/build/webhook-edit-page.cfbdd3fd.chunk.js +0 -23
  136. package/build/webhook-list-page.3daa4fe2.chunk.js +0 -1
  137. package/build/zh-Hans-json.6e26e359.chunk.js +0 -1
@@ -15,12 +15,20 @@ const {
15
15
  intersection,
16
16
  pick,
17
17
  getOr,
18
+ isObject,
19
+ cloneDeep,
18
20
  } = require('lodash/fp');
19
21
 
20
- const { contentTypes, traverseEntity, sanitize, pipeAsync } = require('@strapi/utils');
22
+ const { contentTypes, traverseEntity, sanitize, pipeAsync, traverse } = require('@strapi/utils');
23
+ const { removePassword } = require('@strapi/utils/lib/sanitize/visitors');
21
24
 
22
- const { constants, getNonVisibleAttributes, getNonWritableAttributes, getWritableAttributes } =
23
- contentTypes;
25
+ const {
26
+ constants,
27
+ isScalarAttribute,
28
+ getNonVisibleAttributes,
29
+ getNonWritableAttributes,
30
+ getWritableAttributes,
31
+ } = contentTypes;
24
32
  const {
25
33
  ID_ATTRIBUTE,
26
34
  CREATED_AT_ATTRIBUTE,
@@ -31,12 +39,81 @@ const {
31
39
 
32
40
  const COMPONENT_FIELDS = ['__component'];
33
41
  const STATIC_FIELDS = [ID_ATTRIBUTE];
42
+ const ADMIN_USER_ALLOWED_FIELDS = ['id', 'firstname', 'lastname', 'username'];
34
43
 
35
44
  module.exports = ({ action, ability, model }) => {
36
45
  const schema = strapi.getModel(model);
37
46
 
38
47
  const { allowedFields } = sanitize.visitors;
39
48
 
49
+ const createSanitizeQuery = (options = {}) => {
50
+ const { fields } = options;
51
+
52
+ // TODO: sanitize relations to admin usersin all sanitizers
53
+ const permittedFields = fields.shouldIncludeAll ? null : getQueryFields(fields.permitted);
54
+
55
+ const sanitizeFilters = pipeAsync(
56
+ traverse.traverseQueryFilters(allowedFields(permittedFields), { schema }),
57
+ traverse.traverseQueryFilters(omitDisallowedAdminUserFields, { schema }),
58
+ traverse.traverseQueryFilters(removePassword, { schema }),
59
+ traverse.traverseQueryFilters(
60
+ ({ key, value }, { remove }) => {
61
+ if (isObject(value) && isEmpty(value)) {
62
+ remove(key);
63
+ }
64
+ },
65
+ { schema }
66
+ )
67
+ );
68
+
69
+ const sanitizeSort = pipeAsync(
70
+ traverse.traverseQuerySort(allowedFields(permittedFields), { schema }),
71
+ traverse.traverseQuerySort(omitDisallowedAdminUserFields, { schema }),
72
+ traverse.traverseQuerySort(removePassword, { schema }),
73
+ traverse.traverseQuerySort(
74
+ ({ key, attribute, value }, { remove }) => {
75
+ if (!isScalarAttribute(attribute) && isEmpty(value)) {
76
+ remove(key);
77
+ }
78
+ },
79
+ { schema }
80
+ )
81
+ );
82
+
83
+ const sanitizePopulate = pipeAsync(
84
+ traverse.traverseQueryPopulate(allowedFields(permittedFields), { schema }),
85
+ traverse.traverseQueryPopulate(omitDisallowedAdminUserFields, { schema }),
86
+ traverse.traverseQueryPopulate(removePassword, { schema })
87
+ );
88
+
89
+ const sanitizeFields = pipeAsync(
90
+ traverse.traverseQueryFields(allowedFields(permittedFields), { schema }),
91
+ traverse.traverseQueryFields(removePassword, { schema })
92
+ );
93
+
94
+ return async (query) => {
95
+ const sanitizedQuery = cloneDeep(query);
96
+
97
+ if (query.filters) {
98
+ Object.assign(sanitizedQuery, { filters: await sanitizeFilters(query.filters) });
99
+ }
100
+
101
+ if (query.sort) {
102
+ Object.assign(sanitizedQuery, { sort: await sanitizeSort(query.sort) });
103
+ }
104
+
105
+ if (query.populate) {
106
+ Object.assign(sanitizedQuery, { populate: await sanitizePopulate(query.populate) });
107
+ }
108
+
109
+ if (query.fields) {
110
+ Object.assign(sanitizedQuery, { fields: await sanitizeFields(query.fields) });
111
+ }
112
+
113
+ return sanitizedQuery;
114
+ };
115
+ };
116
+
40
117
  const createSanitizeOutput = (options = {}) => {
41
118
  const { fields } = options;
42
119
 
@@ -128,7 +205,7 @@ module.exports = ({ action, ability, model }) => {
128
205
  * Visitor used to only select needed fields from the admin users entities & avoid leaking sensitive information
129
206
  */
130
207
  const pickAllowedAdminUserFields = ({ attribute, key, value }, { set }) => {
131
- const pickAllowedFields = pick(['id', 'firstname', 'lastname', 'username']);
208
+ const pickAllowedFields = pick(ADMIN_USER_ALLOWED_FIELDS);
132
209
 
133
210
  if (attribute.type === 'relation' && attribute.target === 'admin::user' && value) {
134
211
  if (Array.isArray(value)) {
@@ -139,6 +216,15 @@ module.exports = ({ action, ability, model }) => {
139
216
  }
140
217
  };
141
218
 
219
+ /**
220
+ * Visitor used to omit disallowed fields from the admin users entities & avoid leaking sensitive information
221
+ */
222
+ const omitDisallowedAdminUserFields = ({ key, attribute, schema }, { remove }) => {
223
+ if (schema.uid === 'admin::user' && attribute && !ADMIN_USER_ALLOWED_FIELDS.includes(key)) {
224
+ remove(key);
225
+ }
226
+ };
227
+
142
228
  const getInputFields = (fields = []) => {
143
229
  const nonVisibleAttributes = getNonVisibleAttributes(schema);
144
230
  const writableAttributes = getWritableAttributes(schema);
@@ -168,8 +254,19 @@ module.exports = ({ action, ability, model }) => {
168
254
  ]);
169
255
  };
170
256
 
257
+ const getQueryFields = (fields = []) => {
258
+ return uniq([
259
+ ...fields,
260
+ ...STATIC_FIELDS,
261
+ ...COMPONENT_FIELDS,
262
+ CREATED_AT_ATTRIBUTE,
263
+ UPDATED_AT_ATTRIBUTE,
264
+ ]);
265
+ };
266
+
171
267
  return {
172
268
  sanitizeOutput: wrapSanitize(createSanitizeOutput),
173
269
  sanitizeInput: wrapSanitize(createSanitizeInput),
270
+ sanitizeQuery: wrapSanitize(createSanitizeQuery),
174
271
  };
175
272
  };
@@ -1,30 +0,0 @@
1
- (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4649],{30493:function(b,M,n){"use strict";n.d(M,{Z:function(){return s}});var e=n(32735),g=n(5636),a=n(60216),t=n.n(a),p=n(13478),A=n(57269),E=n(39161),f=n(8888);const C=({onRegenerate:y,idToRegenerate:c,backUrl:R})=>{const{formatMessage:I}=(0,g.useIntl)(),[_,L]=(0,e.useState)(!1),{regenerateData:W,isLoadingConfirmation:G}=(0,f.rW)(R,c,y),N=async()=>{W(),L(!1)};return e.createElement(e.Fragment,null,e.createElement(E.Button,{startIcon:e.createElement(A.Refresh,null),type:"button",size:"S",variant:"tertiary",onClick:()=>L(!0),name:"regenerate"},I({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),e.createElement(p.ConfirmDialog,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:e.createElement(A.Refresh,null),isConfirmButtonLoading:G,isOpen:_,onToggleDialog:()=>L(!1),onConfirm:N,leftButtonText:{id:"Settings.tokens.Button.cancel",defaultMessage:"Cancel"},rightButtonText:{id:"Settings.tokens.Button.regenerate",defaultMessage:"Regenerate"},title:{id:"Settings.tokens.RegenerateDialog.title",defaultMessage:"Regenerate token"}}))};C.defaultProps={onRegenerate(){}},C.propTypes={onRegenerate:t().func,idToRegenerate:t().oneOfType([t().number,t().string]).isRequired,backUrl:t().string.isRequired};var h=C;const v=({title:y,token:c,setToken:R,canEditInputs:I,canRegenerate:_,isSubmitting:L,backUrl:W,regenerateUrl:G})=>{const{formatMessage:N}=(0,g.useIntl)(),Z=X=>{R({...c,accessKey:X})};return e.createElement(E.HeaderLayout,{title:c?.name||N(y),primaryAction:I?e.createElement(E.Stack,{horizontal:!0,spacing:2},_&&c?.id&&e.createElement(h,{backUrl:G,onRegenerate:Z,idToRegenerate:c?.id}),e.createElement(E.Button,{disabled:L,loading:L,startIcon:e.createElement(A.Check,null),type:"submit",size:"S"},N({id:"global.save",defaultMessage:"Save"}))):_&&c?.id&&e.createElement(h,{onRegenerate:Z,idToRegenerate:c?.id,backUrl:G}),navigationAction:e.createElement(p.Link,{startIcon:e.createElement(A.ArrowLeft,null),to:W},N({id:"global.back",defaultMessage:"Back"}))})};v.propTypes={token:t().shape({id:t().oneOfType([t().number,t().string]),type:t().string,lifespan:t().oneOfType([t().number,t().string]),name:t().string,accessKey:t().string,permissions:t().array,description:t().string,createdAt:t().string}),canEditInputs:t().bool.isRequired,canRegenerate:t().bool.isRequired,setToken:t().func.isRequired,isSubmitting:t().bool.isRequired,backUrl:t().string.isRequired,title:t().shape({id:t().string,label:t().string}).isRequired,regenerateUrl:t().string.isRequired},v.defaultProps={token:void 0};var s=v},4321:function(b,M,n){"use strict";var e=n(32735),g=n(60216),a=n.n(g),t=n(5636),p=n(39161),A=n.n(p),E=n(37944);const f=({token:C,errors:h,values:v,onChange:s,isCreating:y})=>{const{formatMessage:c}=(0,t.useIntl)();return e.createElement(e.Fragment,null,e.createElement(p.Select,{name:"lifespan",label:c({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:v.lifespan!==null?v.lifespan:"0",error:h.lifespan?c(h.lifespan?.id?h.lifespan:{id:h.lifespan,defaultMessage:h.lifespan}):null,onChange:R=>{s({target:{name:"lifespan",value:R}})},required:!0,disabled:!y,placeholder:"Select"},e.createElement(p.Option,{value:"604800000"},c({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),e.createElement(p.Option,{value:"2592000000"},c({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),e.createElement(p.Option,{value:"7776000000"},c({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),e.createElement(p.Option,{value:"0"},c({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),e.createElement(p.Typography,{variant:"pi",textColor:"neutral600"},!y&&`${c({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,E.IX)(C?.createdAt,parseInt(v.lifespan,10))}`))};f.propTypes={errors:a().shape({lifespan:a().string}),onChange:a().func.isRequired,values:a().shape({lifespan:a().oneOfType([a().number,a().string])}).isRequired,isCreating:a().bool.isRequired,token:a().shape({id:a().oneOfType([a().number,a().string]),type:a().string,lifespan:a().string,name:a().string,accessKey:a().string,permissions:a().array,description:a().string,createdAt:a().string})},f.defaultProps={errors:{},token:{}},M.Z=f},93682:function(b,M,n){"use strict";var e=n(32735),g=n(5636),a=n(13478),t=n.n(a),p=n(39161),A=n.n(p),E=n(57269),f=n.n(E),C=n(60216),h=n.n(C),v=n(59087),s=n.n(v);const y=({token:c,tokenType:R})=>{const{formatMessage:I}=(0,g.useIntl)(),_=(0,a.useNotification)(),{trackUsage:L}=(0,a.useTracking)(),W=(0,e.useRef)(L);return e.createElement(a.ContentBox,{endAction:c&&e.createElement("span",{style:{alignSelf:"start"}},e.createElement(v.CopyToClipboard,{onCopy:()=>{W.current("didCopyTokenKey",{tokenType:R}),_({type:"success",message:{id:"Settings.tokens.notification.copied"}})},text:c},e.createElement(p.IconButton,{label:I({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),noBorder:!0,icon:e.createElement(E.Duplicate,null),style:{padding:0,height:"1rem"}}))),title:c||I({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:I(c?{id:"Settings.tokens.copy.lastWarning",defaultMessage:"Make sure to copy this token, you won\u2019t be able to see it again!"}:{id:"Settings.tokens.copy.editMessage",defaultMessage:"For security reasons, you can only see your token once."}),icon:e.createElement(E.Key,null),iconBackground:"neutral100"})};y.defaultProps={token:null},y.propTypes={token:h().string,tokenType:h().string.isRequired},M.Z=y},42789:function(b,M,n){"use strict";var e=n(32735),g=n(60216),a=n.n(g),t=n(5636),p=n(39161),A=n.n(p);const E=({errors:f,values:C,onChange:h,canEditInputs:v})=>{const{formatMessage:s}=(0,t.useIntl)();return e.createElement(p.Textarea,{label:s({id:"Settings.tokens.form.description",defaultMessage:"Description"}),name:"description",error:f.description?s(f.description?.id?f.description:{id:f.description,defaultMessage:f.description}):null,onChange:h,disabled:!v},C.description)};E.propTypes={errors:a().shape({description:a().string}),onChange:a().func.isRequired,canEditInputs:a().bool.isRequired,values:a().shape({description:a().string}).isRequired},E.defaultProps={errors:{}},M.Z=E},8377:function(b,M,n){"use strict";var e=n(32735),g=n(60216),a=n.n(g),t=n(5636),p=n(39161),A=n.n(p);const E=({errors:f,values:C,onChange:h,canEditInputs:v})=>{const{formatMessage:s}=(0,t.useIntl)();return e.createElement(p.TextInput,{name:"name",error:f.name?s(f.name?.id?f.name:{id:f.name,defaultMessage:f.name}):null,label:s({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:h,value:C.name,disabled:!v,required:!0})};E.propTypes={errors:a().shape({name:a().string}),onChange:a().func.isRequired,canEditInputs:a().bool.isRequired,values:a().shape({name:a().string}).isRequired},E.defaultProps={errors:{}},M.Z=E},68774:function(b,M,n){"use strict";n.d(M,{Z:function(){return e},f:function(){return g}});const e="api-token",g="transfer-token"},24649:function(b,M,n){"use strict";n.d(M,{Z:function(){return De}});var e=n(32735),g=n(5636),a=n(13478),t=n(39161),p=n(83281),A=n(5141),E=n(84968),f=n(64421),C=n(37944),h=n(57269),v=n(60216),s=n.n(v);const y=({apiTokenName:o})=>{const{formatMessage:i}=(0,g.useIntl)();return(0,a.useFocusWhenNavigate)(),e.createElement(t.Main,{"aria-busy":"true"},e.createElement(a.SettingsPageTitle,{name:"API Tokens"}),e.createElement(t.HeaderLayout,{primaryAction:e.createElement(t.Button,{disabled:!0,startIcon:e.createElement(h.Check,null),type:"button",size:"L"},i({id:"global.save",defaultMessage:"Save"})),title:o||i({id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"})}),e.createElement(t.ContentLayout,null,e.createElement(a.LoadingIndicatorPage,null)))};y.defaultProps={apiTokenName:null},y.propTypes={apiTokenName:s().string};var c=y,R=n(72041);const I=(0,e.createContext)({}),_=({children:o,...i})=>e.createElement(I.Provider,{value:i},o),L=()=>(0,e.useContext)(I);_.propTypes={children:s().node.isRequired};var G=(o,i=[])=>({...o,selectedAction:null,routes:[],selectedActions:[],data:(0,C.mk)(i)}),N=n(97889),Z=n(92891);const X={data:{},selectedActions:[]};var re=(o,i)=>(0,N.default)(o,r=>{switch(i.type){case"ON_CHANGE":{r.selectedActions.includes(i.value)?(0,Z.pull)(r.selectedActions,i.value):r.selectedActions.push(i.value);break}case"SELECT_ALL_IN_PERMISSION":{i.value.every(d=>r.selectedActions.includes(d.actionId))?i.value.forEach(d=>{(0,Z.pull)(r.selectedActions,d.actionId)}):i.value.forEach(d=>{r.selectedActions.push(d.actionId)});break}case"SELECT_ALL_ACTIONS":{r.selectedActions=[...r.data.allActionsIds];break}case"ON_CHANGE_READ_ONLY":{const T=r.data.allActionsIds.filter(d=>d.includes("find")||d.includes("findOne"));r.selectedActions=[...T];break}case"UPDATE_PERMISSIONS_LAYOUT":{r.data=(0,C.mk)(i.value);break}case"UPDATE_ROUTES":{r.routes={...i.value};break}case"UPDATE_PERMISSIONS":{r.selectedActions=[...i.value];break}case"SET_SELECTED_ACTION":{r.selectedAction=i.value;break}default:return r}}),z=n(83292);const ie=z.css`
2
- background: ${o=>o.theme.colors.primary100};
3
- svg {
4
- opacity: 1;
5
- }
6
- `;var le=(0,z.default)(t.Box)`
7
- display: flex;
8
- justify-content: space-between;
9
- align-items: center;
10
-
11
- svg {
12
- opacity: 0;
13
- path {
14
- fill: ${o=>o.theme.colors.primary600};
15
- }
16
- }
17
-
18
- /* Show active style both on hover and when the action is selected */
19
- ${o=>o.isActive&&ie}
20
- &:hover {
21
- ${ie}
22
- }
23
- `;const ce=z.default.div`
24
- flex: 1;
25
- align-self: center;
26
- border-top: 1px solid ${({theme:o})=>o.colors.neutral150};
27
- `,J=({controllers:o,label:i,orderNumber:r,disabled:T,onExpanded:d,indexExpandendCollapsedContent:l})=>{const{value:{onChangeSelectAll:k,onChange:B,selectedActions:P,setSelectedAction:U,selectedAction:$}}=L(),[x,j]=(0,e.useState)(!1),{formatMessage:H}=(0,g.useIntl)(),S=()=>{j(D=>!D),d(r)};(0,e.useEffect)(()=>{l!==null&&l!==r&&x&&j(!1)},[l,r,x]);const F=D=>D===$;return e.createElement(t.Accordion,{expanded:x,onToggle:S,variant:r%2?"primary":"secondary"},e.createElement(t.AccordionToggle,{title:(0,Z.capitalize)(i)}),e.createElement(t.AccordionContent,null,o?.map(D=>{const Q=D.actions.every(m=>P.includes(m.actionId)),ne=D.actions.some(m=>P.includes(m.actionId));return e.createElement(t.Box,{key:`${i}.${D?.controller}`},e.createElement(t.Flex,{justifyContent:"space-between",alignItems:"center",padding:4},e.createElement(t.Box,{paddingRight:4},e.createElement(t.Typography,{variant:"sigma",textColor:"neutral600"},D?.controller)),e.createElement(ce,null),e.createElement(t.Box,{paddingLeft:4},e.createElement(t.Checkbox,{value:Q,indeterminate:!Q&&ne,onValueChange:()=>{k({target:{value:[...D.actions]}})},disabled:T},H({id:"app.utils.select-all",defaultMessage:"Select all"})))),e.createElement(t.Grid,{gap:4,padding:4},D?.actions&&D?.actions.map(m=>e.createElement(t.GridItem,{col:6,key:m.actionId},e.createElement(le,{isActive:F(m.actionId),padding:2,hasRadius:!0},e.createElement(t.Checkbox,{value:P.includes(m.actionId),name:m.actionId,onValueChange:()=>{B({target:{value:m.actionId}})},disabled:T},m.action),e.createElement("button",{type:"button","data-testid":"action-cog",onClick:()=>U({target:{value:m.actionId}}),style:{display:"inline-flex",alignItems:"center"}},e.createElement(h.Cog,null)))))))})))};J.defaultProps={controllers:[],orderNumber:0,disabled:!1,onExpanded:()=>null,indexExpandendCollapsedContent:null},J.propTypes={controllers:s().array,orderNumber:s().number,label:s().string.isRequired,disabled:s().bool,onExpanded:s().func,indexExpandendCollapsedContent:s().number};var de=J;const w=({section:o,...i})=>{const[r,T]=(0,e.useState)(null),d=l=>T(l);return e.createElement(t.Box,{padding:4,background:"neutral0"},o&&o.map((l,k)=>e.createElement(de,{key:l.apiId,label:l.label,controllers:l.controllers,orderNumber:k,indexExpandendCollapsedContent:r,onExpanded:d,name:l.apiId,...i})))};w.defaultProps={section:null},w.propTypes={section:s().arrayOf(s().object)};var ue=w,pe=n(37213),ge=n.n(pe),me=n(15738),Ee=n.n(me),fe=o=>{switch(o){case"POST":return{text:"success600",border:"success200",background:"success100"};case"GET":return{text:"secondary600",border:"secondary200",background:"secondary100"};case"PUT":return{text:"warning600",border:"warning200",background:"warning100"};case"DELETE":return{text:"danger600",border:"danger200",background:"danger100"};default:return{text:"neutral600",border:"neutral200",background:"neutral100"}}};const ye=(0,z.default)(t.Box)`
28
- margin: -1px;
29
- border-radius: ${({theme:o})=>o.spaces[1]} 0 0 ${({theme:o})=>o.spaces[1]};
30
- `;function q({route:o}){const{formatMessage:i}=(0,g.useIntl)(),{method:r,handler:T,path:d}=o,l=d?Ee()(d.split("/")):[],[k="",B=""]=T?T.split("."):[],P=fe(o.method);return e.createElement(t.Stack,{spacing:2},e.createElement(t.Typography,{variant:"delta",as:"h3"},i({id:"Settings.apiTokens.createPage.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",e.createElement("span",null,k),e.createElement(t.Typography,{variant:"delta",textColor:"primary600"},".",B)),e.createElement(t.Stack,{horizontal:!0,hasRadius:!0,background:"neutral0",borderColor:"neutral200",spacing:0},e.createElement(ye,{background:P.background,borderColor:P.border,padding:2},e.createElement(t.Typography,{fontWeight:"bold",textColor:P.text},r)),e.createElement(t.Box,{paddingLeft:2,paddingRight:2},ge()(l,U=>e.createElement(t.Typography,{key:U,textColor:U.includes(":")?"neutral600":"neutral900"},"/",U)))))}q.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},q.propTypes={route:s().shape({handler:s().string,method:s().string,path:s().string})};var Te=q,he=()=>{const{value:{selectedAction:o,routes:i}}=L(),{formatMessage:r}=(0,g.useIntl)(),T=o?.split(".")[0];return e.createElement(t.GridItem,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},o?e.createElement(t.Stack,{spacing:2},i[T]?.map(d=>d.config.auth?.scope?.includes(o)||d.handler===o?e.createElement(Te,{key:d.handler,route:d}):null)):e.createElement(t.Stack,{spacing:2},e.createElement(t.Typography,{variant:"delta",as:"h3"},r({id:"Settings.apiTokens.createPage.permissions.header.title",defaultMessage:"Advanced settings"})),e.createElement(t.Typography,{as:"p",textColor:"neutral600"},r({id:"Settings.apiTokens.createPage.permissions.header.hint",defaultMessage:"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route"}))))};const Ce=({...o})=>{const{value:{data:i}}=L(),{formatMessage:r}=(0,g.useIntl)();return e.createElement(t.Grid,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},e.createElement(t.GridItem,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Stack,{spacing:2},e.createElement(t.Typography,{variant:"delta",as:"h2"},r({id:"Settings.apiTokens.createPage.permissions.title",defaultMessage:"Permissions"})),e.createElement(t.Typography,{as:"p",textColor:"neutral600"},r({id:"Settings.apiTokens.createPage.permissions.description",defaultMessage:"Only actions bound by a route are listed below."}))),i?.permissions&&e.createElement(ue,{section:i?.permissions,...o})),e.createElement(he,null))};var ve=(0,e.memo)(Ce),Ae=n(4321),Me=n(8377),ke=n(42789);const ee=({errors:o,values:i,onChange:r,canEditInputs:T,options:d,label:l})=>{const{formatMessage:k}=(0,g.useIntl)();return e.createElement(t.Select,{name:"type",label:k({id:l.id,defaultMessage:l.defaultMessage}),value:i?.type,error:o.type?k(o.type?.id?o.type:{id:o.type,defaultMessage:o.type}):null,onChange:r,placeholder:"Select",required:!0,disabled:!T},d&&d.map(({value:B,label:P})=>e.createElement(t.Option,{key:B,value:B},k(P))))};ee.propTypes={options:s().arrayOf(s().shape({label:s().shape({id:s().string,defaultMessage:s().string}),value:s().string})),errors:s().shape({type:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({type:s().string}).isRequired,label:s().shape({id:s().string,defaultMessage:s().string}).isRequired},ee.defaultProps={errors:{},options:[]};var Re=ee;const te=({errors:o,onChange:i,canEditInputs:r,isCreating:T,values:d,apiToken:l,onDispatch:k,setHasChangedPermissions:B})=>{const{formatMessage:P}=(0,g.useIntl)(),U=({target:{value:x}})=>{B(!1),x==="full-access"&&k({type:"SELECT_ALL_ACTIONS"}),x==="read-only"&&k({type:"ON_CHANGE_READ_ONLY"})},$=[{value:"read-only",label:{id:"Settings.tokens.types.read-only",defaultMessage:"Read-only"}},{value:"full-access",label:{id:"Settings.tokens.types.full-access",defaultMessage:"Full access"}},{value:"custom",label:{id:"Settings.tokens.types.custom",defaultMessage:"Custom"}}];return e.createElement(t.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Stack,{spacing:4},e.createElement(t.Typography,{variant:"delta",as:"h2"},P({id:"global.details",defaultMessage:"Details"})),e.createElement(t.Grid,{gap:5},e.createElement(t.GridItem,{key:"name",col:6,xs:12},e.createElement(Me.Z,{errors:o,values:d,canEditInputs:r,onChange:i})),e.createElement(t.GridItem,{key:"description",col:6,xs:12},e.createElement(ke.Z,{errors:o,values:d,canEditInputs:r,onChange:i})),e.createElement(t.GridItem,{key:"lifespan",col:6,xs:12},e.createElement(Ae.Z,{isCreating:T,errors:o,values:d,onChange:i,token:l})),e.createElement(t.GridItem,{key:"type",col:6,xs:12},e.createElement(Re,{values:d,errors:o,label:{id:"Settings.tokens.form.type",defaultMessage:"Token type"},onChange:x=>{U({target:{value:x}}),i({target:{name:"type",value:x}})},options:$,canEditInputs:r})))))};te.propTypes={errors:s().shape({name:s().string,description:s().string,lifespan:s().string,type:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({name:s().string,description:s().string,lifespan:s().oneOfType([s().number,s().string]),type:s().string}).isRequired,isCreating:s().bool.isRequired,apiToken:s().shape({id:s().oneOfType([s().number,s().string]),type:s().string,lifespan:s().string,name:s().string,accessKey:s().string,permissions:s().array,description:s().string,createdAt:s().string}),onDispatch:s().func.isRequired,setHasChangedPermissions:s().func.isRequired},te.defaultProps={errors:{},apiToken:{}};var Pe=te,Oe=n(93682),Ie=n(30493),Y=n(68774);const Se="Name already taken";var De=()=>{(0,a.useFocusWhenNavigate)();const{formatMessage:o}=(0,g.useIntl)(),{lockApp:i,unlockApp:r}=(0,a.useOverlayBlocker)(),T=(0,a.useNotification)(),d=(0,A.useHistory)(),[l,k]=(0,e.useState)(d.location.state?.apiToken.accessKey?{...d.location.state.apiToken}:null),{trackUsage:B}=(0,a.useTracking)(),P=(0,e.useRef)(B),{setCurrentStep:U}=(0,a.useGuidedTour)(),{allowedActions:{canCreate:$,canUpdate:x,canRegenerate:j}}=(0,a.useRBAC)(R.Z.settings["api-tokens"]),[H,S]=(0,e.useReducer)(re,X,u=>G(u,{})),{params:{id:F}}=(0,A.useRouteMatch)("/settings/api-tokens/:id"),{get:D,post:Q,put:ne}=(0,a.useFetchClient)(),m=F==="create";(0,E.useQuery)("content-api-permissions",async()=>{const[u,K]=await Promise.all(["/admin/content-api/permissions","/admin/content-api/routes"].map(async V=>{const{data:O}=await D(V);return O.data}));S({type:"UPDATE_PERMISSIONS_LAYOUT",value:u}),S({type:"UPDATE_ROUTES",value:K}),l&&(l?.type==="read-only"&&S({type:"ON_CHANGE_READ_ONLY"}),l?.type==="full-access"&&S({type:"SELECT_ALL_ACTIONS"}),l?.type==="custom"&&S({type:"UPDATE_PERMISSIONS",value:l?.permissions}))},{onError(){T({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),(0,e.useEffect)(()=>{P.current(m?"didAddTokenFromList":"didEditTokenFromList",{tokenType:Y.Z})},[m]);const{status:_e}=(0,E.useQuery)(["api-token",F],async()=>{const{data:{data:u}}=await D(`/admin/api-tokens/${F}`);return k({...u}),u?.type==="read-only"&&S({type:"ON_CHANGE_READ_ONLY"}),u?.type==="full-access"&&S({type:"SELECT_ALL_ACTIONS"}),u?.type==="custom"&&S({type:"UPDATE_PERMISSIONS",value:u?.permissions}),u},{enabled:!m&&!l,onError(){T({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),Le=async(u,K)=>{P.current(m?"willCreateToken":"willEditToken",{tokenType:Y.Z}),i();const V=u.lifespan&&parseInt(u.lifespan,10)&&u.lifespan!=="0"?parseInt(u.lifespan,10):null;try{const{data:{data:O}}=m?await Q("/admin/api-tokens",{...u,lifespan:V,permissions:u.type==="custom"?H.selectedActions:null}):await ne(`/admin/api-tokens/${F}`,{name:u.name,description:u.description,type:u.type,permissions:u.type==="custom"?H.selectedActions:null});m&&(d.replace(`/settings/api-tokens/${O.id}`,{apiToken:O}),U("apiTokens.success")),r(),k({...O}),T({type:"success",message:o(m?{id:"notification.success.apitokencreated",defaultMessage:"API Token successfully created"}:{id:"notification.success.apitokenedited",defaultMessage:"API Token successfully edited"})}),P.current(m?"didCreateToken":"didEditToken",{type:l.type,tokenType:Y.Z})}catch(O){const oe=(0,f.Iz)(O.response.data);K.setErrors(oe),O?.response?.data?.error?.message===Se?T({type:"warning",message:O.response.data.message||"notification.error.tokennamenotunique"}):T({type:"warning",message:O?.response?.data?.message||"notification.error"}),r()}},[xe,se]=(0,e.useState)(!1),Be={...H,onChange:({target:{value:u}})=>{se(!0),S({type:"ON_CHANGE",value:u})},onChangeSelectAll:({target:{value:u}})=>{se(!0),S({type:"SELECT_ALL_IN_PERMISSION",value:u})},setSelectedAction:({target:{value:u}})=>{S({type:"SET_SELECTED_ACTION",value:u})}},ae=x&&!m||$&&m;return!m&&!l&&_e!=="success"?e.createElement(c,{apiTokenName:l?.name}):e.createElement(_,{value:Be},e.createElement(t.Main,null,e.createElement(a.SettingsPageTitle,{name:"API Tokens"}),e.createElement(p.Formik,{validationSchema:C.fK,validateOnChange:!1,initialValues:{name:l?.name||"",description:l?.description||"",type:l?.type,lifespan:l?.lifespan?l.lifespan.toString():l?.lifespan},enableReinitialize:!0,onSubmit:(u,K)=>Le(u,K)},({errors:u,handleChange:K,isSubmitting:V,values:O,setFieldValue:oe})=>(xe&&O?.type!=="custom"&&oe("type","custom"),e.createElement(a.Form,null,e.createElement(Ie.Z,{backUrl:"/settings/api-tokens",title:{id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"},token:l,setToken:k,canEditInputs:ae,canRegenerate:j,isSubmitting:V,regenerateUrl:"/admin/api-tokens/"}),e.createElement(t.ContentLayout,null,e.createElement(t.Stack,{spacing:6},Boolean(l?.name)&&e.createElement(Oe.Z,{token:l?.accessKey,tokenType:Y.Z}),e.createElement(Pe,{errors:u,onChange:K,canEditInputs:ae,isCreating:m,values:O,apiToken:l,onDispatch:S,setHasChangedPermissions:se}),e.createElement(ve,{disabled:!ae||O?.type==="read-only"||O?.type==="full-access"}))))))))}},37944:function(b,M,n){"use strict";n.d(M,{IX:function(){return t},fK:function(){return f},mk:function(){return v}});var e=n(64213),g=n(54049),t=(s,y,c="en")=>{if(y&&typeof y=="number"){const R=y/24/60/60/1e3;return(0,e.format)((0,e.addDays)(new Date(s),R),"PPP",{locale:g[c]})}return"Unlimited"},p=n(5173),A=n(13478),f=p.Ry().shape({name:p.Z_(A.translatedErrors.string).required(A.translatedErrors.required),type:p.Z_(A.translatedErrors.string).oneOf(["read-only","full-access","custom"]).required(A.translatedErrors.required),description:p.Z_().nullable(),lifespan:p.Rx().integer().min(0).nullable().defined(A.translatedErrors.required)}),C=n(92891),v=s=>{const y={allActionsIds:[],permissions:[]};return y.permissions=Object.keys(s).map(c=>({apiId:c,label:c.split("::")[1],controllers:(0,C.flatten)(Object.keys(s[c].controllers).map(R=>({controller:R,actions:(0,C.flatten)(s[c].controllers[R].map(I=>{const _=`${c}.${R}.${I}`;return c.includes("api::")&&y.allActionsIds.push(_),{action:I,actionId:_}}))})))})),y}},15738:function(b,M,n){var e=n(4293);function g(a){var t=a==null?0:a.length;return t?e(a,1,t):[]}b.exports=g}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[7259],{30493:function(h,E,e){e.d(E,{Z:function(){return g}});var t=e(32735),u=e(5636),s=e(60216),a=e.n(s),o=e(13478),i=e(57269),r=e(39161),l=e(8888);const c=({onRegenerate:d,idToRegenerate:n,backUrl:m})=>{const{formatMessage:M}=(0,u.useIntl)(),[R,O]=(0,t.useState)(!1),{regenerateData:_,isLoadingConfirmation:A}=(0,l.rW)(m,n,d),D=async()=>{_(),O(!1)};return t.createElement(t.Fragment,null,t.createElement(r.Button,{startIcon:t.createElement(i.Refresh,null),type:"button",size:"S",variant:"tertiary",onClick:()=>O(!0),name:"regenerate"},M({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),t.createElement(o.ConfirmDialog,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:t.createElement(i.Refresh,null),isConfirmButtonLoading:A,isOpen:R,onToggleDialog:()=>O(!1),onConfirm:D,leftButtonText:{id:"Settings.tokens.Button.cancel",defaultMessage:"Cancel"},rightButtonText:{id:"Settings.tokens.Button.regenerate",defaultMessage:"Regenerate"},title:{id:"Settings.tokens.RegenerateDialog.title",defaultMessage:"Regenerate token"}}))};c.defaultProps={onRegenerate(){}},c.propTypes={onRegenerate:a().func,idToRegenerate:a().oneOfType([a().number,a().string]).isRequired,backUrl:a().string.isRequired};var f=c;const p=({title:d,token:n,setToken:m,canEditInputs:M,canRegenerate:R,isSubmitting:O,backUrl:_,regenerateUrl:A})=>{const{formatMessage:D}=(0,u.useIntl)(),K=N=>{m({...n,accessKey:N})};return t.createElement(r.HeaderLayout,{title:n?.name||D(d),primaryAction:M?t.createElement(r.Stack,{horizontal:!0,spacing:2},R&&n?.id&&t.createElement(f,{backUrl:A,onRegenerate:K,idToRegenerate:n?.id}),t.createElement(r.Button,{disabled:O,loading:O,startIcon:t.createElement(i.Check,null),type:"submit",size:"S"},D({id:"global.save",defaultMessage:"Save"}))):R&&n?.id&&t.createElement(f,{onRegenerate:K,idToRegenerate:n?.id,backUrl:A}),navigationAction:t.createElement(o.Link,{startIcon:t.createElement(i.ArrowLeft,null),to:_},D({id:"global.back",defaultMessage:"Back"}))})};p.propTypes={token:a().shape({id:a().oneOfType([a().number,a().string]),type:a().string,lifespan:a().oneOfType([a().number,a().string]),name:a().string,accessKey:a().string,permissions:a().array,description:a().string,createdAt:a().string}),canEditInputs:a().bool.isRequired,canRegenerate:a().bool.isRequired,setToken:a().func.isRequired,isSubmitting:a().bool.isRequired,backUrl:a().string.isRequired,title:a().shape({id:a().string,label:a().string}).isRequired,regenerateUrl:a().string.isRequired},p.defaultProps={token:void 0};var g=p},4321:function(h,E,e){var t=e(32735),u=e(60216),s=e.n(u),a=e(5636),o=e(39161),i=e.n(o),r=e(37944);const l=({token:c,errors:f,values:p,onChange:g,isCreating:d})=>{const{formatMessage:n}=(0,a.useIntl)();return t.createElement(t.Fragment,null,t.createElement(o.Select,{name:"lifespan",label:n({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:p.lifespan!==null?p.lifespan:"0",error:f.lifespan?n(f.lifespan?.id?f.lifespan:{id:f.lifespan,defaultMessage:f.lifespan}):null,onChange:m=>{g({target:{name:"lifespan",value:m}})},required:!0,disabled:!d,placeholder:"Select"},t.createElement(o.Option,{value:"604800000"},n({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),t.createElement(o.Option,{value:"2592000000"},n({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),t.createElement(o.Option,{value:"7776000000"},n({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),t.createElement(o.Option,{value:"0"},n({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),t.createElement(o.Typography,{variant:"pi",textColor:"neutral600"},!d&&`${n({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,r.IX)(c?.createdAt,parseInt(p.lifespan,10))}`))};l.propTypes={errors:s().shape({lifespan:s().string}),onChange:s().func.isRequired,values:s().shape({lifespan:s().oneOfType([s().number,s().string])}).isRequired,isCreating:s().bool.isRequired,token:s().shape({id:s().oneOfType([s().number,s().string]),type:s().string,lifespan:s().string,name:s().string,accessKey:s().string,permissions:s().array,description:s().string,createdAt:s().string})},l.defaultProps={errors:{},token:{}},E.Z=l},93682:function(h,E,e){var t=e(32735),u=e(5636),s=e(13478),a=e.n(s),o=e(39161),i=e.n(o),r=e(57269),l=e.n(r),c=e(60216),f=e.n(c),p=e(59087),g=e.n(p);const d=({token:n,tokenType:m})=>{const{formatMessage:M}=(0,u.useIntl)(),R=(0,s.useNotification)(),{trackUsage:O}=(0,s.useTracking)(),_=(0,t.useRef)(O);return t.createElement(s.ContentBox,{endAction:n&&t.createElement("span",{style:{alignSelf:"start"}},t.createElement(p.CopyToClipboard,{onCopy:()=>{_.current("didCopyTokenKey",{tokenType:m}),R({type:"success",message:{id:"Settings.tokens.notification.copied"}})},text:n},t.createElement(o.IconButton,{label:M({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),noBorder:!0,icon:t.createElement(r.Duplicate,null),style:{padding:0,height:"1rem"}}))),title:n||M({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:M(n?{id:"Settings.tokens.copy.lastWarning",defaultMessage:"Make sure to copy this token, you won\u2019t be able to see it again!"}:{id:"Settings.tokens.copy.editMessage",defaultMessage:"For security reasons, you can only see your token once."}),icon:t.createElement(r.Key,null),iconBackground:"neutral100"})};d.defaultProps={token:null},d.propTypes={token:f().string,tokenType:f().string.isRequired},E.Z=d},42789:function(h,E,e){var t=e(32735),u=e(60216),s=e.n(u),a=e(5636),o=e(39161),i=e.n(o);const r=({errors:l,values:c,onChange:f,canEditInputs:p})=>{const{formatMessage:g}=(0,a.useIntl)();return t.createElement(o.Textarea,{label:g({id:"Settings.tokens.form.description",defaultMessage:"Description"}),name:"description",error:l.description?g(l.description?.id?l.description:{id:l.description,defaultMessage:l.description}):null,onChange:f,disabled:!p},c.description)};r.propTypes={errors:s().shape({description:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({description:s().string}).isRequired},r.defaultProps={errors:{}},E.Z=r},8377:function(h,E,e){var t=e(32735),u=e(60216),s=e.n(u),a=e(5636),o=e(39161),i=e.n(o);const r=({errors:l,values:c,onChange:f,canEditInputs:p})=>{const{formatMessage:g}=(0,a.useIntl)();return t.createElement(o.TextInput,{name:"name",error:l.name?g(l.name?.id?l.name:{id:l.name,defaultMessage:l.name}):null,label:g({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:f,value:c.name,disabled:!p,required:!0})};r.propTypes={errors:s().shape({name:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({name:s().string}).isRequired},r.defaultProps={errors:{}},E.Z=r},68774:function(h,E,e){e.d(E,{Z:function(){return t},f:function(){return u}});const t="api-token",u="transfer-token"},37944:function(h,E,e){e.d(E,{IX:function(){return a},fK:function(){return l},mk:function(){return p}});var t=e(64213),u=e(54049),a=(g,d,n="en")=>{if(d&&typeof d=="number"){const m=d/24/60/60/1e3;return(0,t.format)((0,t.addDays)(new Date(g),m),"PPP",{locale:u[n]})}return"Unlimited"},o=e(5173),i=e(13478),l=o.Ry().shape({name:o.Z_(i.translatedErrors.string).required(i.translatedErrors.required),type:o.Z_(i.translatedErrors.string).oneOf(["read-only","full-access","custom"]).required(i.translatedErrors.required),description:o.Z_().nullable(),lifespan:o.Rx().integer().min(0).nullable().defined(i.translatedErrors.required)}),c=e(92891),p=g=>{const d={allActionsIds:[],permissions:[]};return d.permissions=Object.keys(g).map(n=>({apiId:n,label:n.split("::")[1],controllers:(0,c.flatten)(Object.keys(g[n].controllers).map(m=>({controller:m,actions:(0,c.flatten)(g[n].controllers[m].map(M=>{const R=`${n}.${m}.${M}`;return n.includes("api::")&&d.allActionsIds.push(R),{action:M,actionId:R}}))})))})),d}},37259:function(h,E,e){e.d(E,{Z:function(){return z}});var t=e(32735),u=e(5636),s=e(83281),a=e(5141),o=e(84968),i=e(13478),r=e(39161),l=e(64421),c=e(5173),p=c.Ry().shape({name:c.Z_(i.translatedErrors.string).required(i.translatedErrors.required),description:c.Z_().nullable(),lifespan:c.Rx().integer().min(0).nullable().defined(i.translatedErrors.required)}),g=e(57269),d=e(60216),n=e.n(d);const m=({transferTokenName:C})=>{const{formatMessage:k}=(0,u.useIntl)();return(0,i.useFocusWhenNavigate)(),t.createElement(r.Main,{"aria-busy":"true"},t.createElement(i.SettingsPageTitle,{name:"Transfer Tokens"}),t.createElement(r.HeaderLayout,{primaryAction:t.createElement(r.Button,{disabled:!0,startIcon:t.createElement(g.Check,null),type:"button",size:"L"},k({id:"global.save",defaultMessage:"Save"})),title:C||k({id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"})}),t.createElement(r.ContentLayout,null,t.createElement(i.LoadingIndicatorPage,null)))};m.defaultProps={transferTokenName:null},m.propTypes={transferTokenName:n().string};var M=m,R=e(72041),O=e(4321),_=e(8377),A=e(42789);const D=({errors:C,onChange:k,canEditInputs:L,isCreating:B,values:I,transferToken:T})=>{const{formatMessage:U}=(0,u.useIntl)();return t.createElement(r.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},t.createElement(r.Stack,{spacing:4},t.createElement(r.Typography,{variant:"delta",as:"h2"},U({id:"global.details",defaultMessage:"Details"})),t.createElement(r.Grid,{gap:5},t.createElement(r.GridItem,{key:"name",col:6,xs:12},t.createElement(_.Z,{errors:C,values:I,canEditInputs:L,onChange:k})),t.createElement(r.GridItem,{key:"description",col:6,xs:12},t.createElement(A.Z,{errors:C,values:I,canEditInputs:L,onChange:k})),t.createElement(r.GridItem,{key:"lifespan",col:6,xs:12},t.createElement(O.Z,{isCreating:B,errors:C,values:I,onChange:k,token:T})))))};D.propTypes={errors:n().shape({name:n().string,description:n().string,lifespan:n().string,type:n().string}),onChange:n().func.isRequired,canEditInputs:n().bool.isRequired,values:n().shape({name:n().string,description:n().string,lifespan:n().oneOfType([n().number,n().string]),type:n().string}).isRequired,isCreating:n().bool.isRequired,transferToken:n().shape({id:n().oneOfType([n().number,n().string]),type:n().string,lifespan:n().string,name:n().string,accessKey:n().string,permissions:n().array,description:n().string,createdAt:n().string})},D.defaultProps={errors:{},transferToken:{}};var K=D,N=e(93682),V=e(30493),W=e(68774);const $="Name already taken";var z=()=>{(0,i.useFocusWhenNavigate)();const{formatMessage:C}=(0,u.useIntl)(),{lockApp:k,unlockApp:L}=(0,i.useOverlayBlocker)(),B=(0,i.useNotification)(),I=(0,a.useHistory)(),[T,U]=(0,t.useState)(I.location.state?.transferToken.accessKey?{...I.location.state.transferToken}:null),{trackUsage:G}=(0,i.useTracking)(),Z=(0,t.useRef)(G),{setCurrentStep:H}=(0,i.useGuidedTour)(),{allowedActions:{canCreate:j,canUpdate:X,canRegenerate:Y}}=(0,i.useRBAC)(R.Z.settings["transfer-tokens"]),{params:{id:x}}=(0,a.useRouteMatch)("/settings/transfer-tokens/:id"),{get:Q,post:J,put:q}=(0,i.useFetchClient)(),v=x==="create";(0,t.useEffect)(()=>{Z.current(v?"didAddTokenFromList":"didEditTokenFromList",{tokenType:W.f})},[v]);const{status:w}=(0,o.useQuery)(["transfer-token",x],async()=>{const{data:{data:y}}=await Q(`/admin/transfer/tokens/${x}`);return U({...y}),y},{enabled:!v&&!T,onError(){B({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),ee=async(y,S)=>{Z.current(v?"willCreateToken":"willEditToken",{tokenType:W.f}),k();const F=y.lifespan&&parseInt(y.lifespan,10)&&y.lifespan!=="0"?parseInt(y.lifespan,10):null;try{const{data:{data:P}}=v?await J("/admin/transfer/tokens",{...y,lifespan:F,permissions:["push"]}):await q(`/admin/transfer/tokens/${x}`,{name:y.name,description:y.description,type:y.type,permissions:["push"]});L(),v&&(I.replace(`/settings/transfer-tokens/${P.id}`,{transferToken:P}),H("transferTokens.success")),U({...P}),B({type:"success",message:C(v?{id:"notification.success.transfertokencreated",defaultMessage:"Transfer Token successfully created"}:{id:"notification.success.transfertokenedited",defaultMessage:"Transfer Token successfully edited"})}),Z.current(v?"didCreateToken":"didEditToken",{type:T?.type,tokenType:W.f})}catch(P){const te=(0,l.Iz)(P.response.data);S.setErrors(te),P?.response?.data?.error?.message===$?B({type:"warning",message:P.response.data.message||"notification.error.tokennamenotunique"}):B({type:"warning",message:P?.response?.data?.message||"notification.error"}),L()}},b=X&&!v||j&&v;return!v&&!T&&w!=="success"?t.createElement(M,{transferTokenName:T?.name}):t.createElement(r.Main,null,t.createElement(i.SettingsPageTitle,{name:"Transfer Tokens"}),t.createElement(s.Formik,{validationSchema:p,validateOnChange:!1,initialValues:{name:T?.name||"",description:T?.description||"",lifespan:T?.lifespan?T.lifespan.toString():T?.lifespan},enableReinitialize:!0,onSubmit:(y,S)=>ee(y,S)},({errors:y,handleChange:S,isSubmitting:F,values:P})=>t.createElement(i.Form,null,t.createElement(V.Z,{backUrl:"/settings/transfer-tokens",title:{id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"},token:T,setToken:U,canEditInputs:b,canRegenerate:Y,isSubmitting:F,regenerateUrl:"/admin/transfer/tokens/"}),t.createElement(r.ContentLayout,null,t.createElement(r.Stack,{spacing:6},Boolean(T?.name)&&t.createElement(N.Z,{token:T?.accessKey,tokenType:W.f}),t.createElement(K,{errors:y,onChange:S,canEditInputs:b,isCreating:v,values:P,transferToken:T}))))))}}}]);
@@ -1,79 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[801],{29761:function(K,M,n){n.r(M),n.d(M,{default:function(){return Tt}});var e=n(32735),i=n(13478),P=n(84968),E=n(33795),z=n.n(E),y={i8:"4.7.0"},k=n(8888),d=n(5141),S=n(4409),R=n(74506),b=n(51968),$=n(88311),U=n.n($),Ce=n(58107),v=n(83292),Me=n(60216),l=n.n(Me),G=n(5636),o=n(39161),C=n(57269);const Re=(0,v.default)(o.Flex)`
2
- position: fixed;
3
- z-index: 4;
4
- inset: 0;
5
- /* this is theme.colors.neutral800 with opacity */
6
- background: ${({theme:t})=>`${t.colors.neutral800}1F`};
7
- `,te=({onClose:t,onSkip:a,children:s,hideSkip:r})=>{const{formatMessage:g}=(0,G.useIntl)();return e.createElement(o.Portal,null,e.createElement(Re,{onClick:t,padding:8,justifyContent:"center"},e.createElement(o.FocusTrap,{onEscape:t},e.createElement(o.Stack,{background:"neutral0",width:(0,i.pxToRem)(660),shadow:"popupShadow",hasRadius:!0,padding:4,spacing:8,role:"dialog","aria-modal":!0,onClick:p=>p.stopPropagation()},e.createElement(o.Flex,{justifyContent:"flex-end"},e.createElement(o.IconButton,{onClick:t,"aria-label":g({id:"app.utils.close-label",defaultMessage:"Close"}),icon:e.createElement(C.Cross,null)})),e.createElement(o.Box,{paddingLeft:7,paddingRight:7,paddingBottom:r?8:0},s),!r&&e.createElement(o.Flex,{justifyContent:"flex-end"},e.createElement(o.Button,{variant:"tertiary",onClick:a},g({id:"app.components.GuidedTour.skip",defaultMessage:"Skip the tour"})))))))};te.propTypes={children:l().node.isRequired,onClose:l().func.isRequired,onSkip:l().func.isRequired,hideSkip:l().bool.isRequired};var Se=te,ne=n(97889);const ae={stepContent:null,sectionIndex:null,stepIndex:null,hasSectionAfter:!1,hasStepAfter:!1};var xe=(t=ae,a)=>(0,ne.default)(t,s=>{switch(a.type){case"UPDATE_MODAL":{s.stepContent=a.content,s.sectionIndex=a.newSectionIndex,s.stepIndex=a.newStepIndex,s.hasSectionAfter=a.newHasSectionAfter,s.hasStepAfter=a.newHasStepAfter;break}default:return s}});const Ie=v.default.li`
8
- list-style: disc;
9
- &::marker {
10
- color: ${({theme:t})=>t.colors.neutral800};
11
- }
12
- `,oe=({id:t,defaultMessage:a})=>{const{formatMessage:s}=(0,G.useIntl)();return e.createElement(o.Stack,{spacing:4,paddingBottom:6},s({id:t,defaultMessage:a},{documentationLink:r=>e.createElement(o.Typography,{as:"a",textColor:"primary600",target:"_blank",rel:"noopener noreferrer",href:"https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest-api.html#api-parameters"},r),b:r=>e.createElement(o.Typography,{fontWeight:"semiBold"},r),p:r=>e.createElement(o.Typography,null,r),light:r=>e.createElement(o.Typography,{textColor:"neutral600"},r),ul:r=>e.createElement(o.Box,{paddingLeft:6},e.createElement("ul",null,r)),li:r=>e.createElement(Ie,null,r)}))};oe.propTypes={id:l().string.isRequired,defaultMessage:l().string.isRequired};var Pe=oe,H=n(78024),Ae=n(14317);const w=({number:t,last:a,type:s})=>e.createElement(o.Box,{paddingTop:3,paddingBottom:a?0:3},e.createElement(Ae.Z,{number:t,type:s}));w.defaultProps={number:void 0,last:!1,type:""},w.propTypes={number:l().number,last:l().bool,type:l().string};var se=w,N=n(23678);const Z=({title:t,content:a,cta:s,onCtaClick:r,sectionIndex:g,stepIndex:p,hasSectionAfter:f})=>{const{formatMessage:m}=(0,G.useIntl)(),h=g>0,u=p>0,T=g+1;return e.createElement(e.Fragment,null,e.createElement(o.Flex,{alignItems:"stretch"},e.createElement(o.Flex,{marginRight:8,justifyContent:"center",minWidth:(0,i.pxToRem)(30)},h&&e.createElement(H.Z,{type:N.hx,minHeight:(0,i.pxToRem)(24)})),e.createElement(o.Typography,{variant:"sigma",textColor:"primary600"},m({id:"app.components.GuidedTour.title",defaultMessage:"3 steps to get started"}))),e.createElement(o.Flex,null,e.createElement(o.Flex,{marginRight:8,minWidth:(0,i.pxToRem)(30)},e.createElement(se,{number:g+1,type:u?N.hx:N.lW})),e.createElement(o.Typography,{variant:"alpha",fontWeight:"bold",textColor:"neutral800",as:"h3",id:"title"},m(t))),e.createElement(o.Flex,{alignItems:"stretch"},e.createElement(o.Flex,{marginRight:8,direction:"column",justifyContent:"center",minWidth:(0,i.pxToRem)(30)},f&&e.createElement(e.Fragment,null,e.createElement(H.Z,{type:N.hx}),u&&e.createElement(se,{number:T+1,type:N.lW,last:!0}))),e.createElement(o.Box,null,e.createElement(Pe,{...a}),s&&(s.target?e.createElement(i.LinkButton,{endIcon:e.createElement(C.ArrowRight,null),onClick:r,to:s.target},m(s.title)):e.createElement(o.Button,{endIcon:e.createElement(C.ArrowRight,null),onClick:r},m(s.title))))),u&&f&&e.createElement(o.Box,{paddingTop:3},e.createElement(o.Flex,{marginRight:8,justifyContent:"center",width:(0,i.pxToRem)(30)},e.createElement(H.Z,{type:N.hx,minHeight:(0,i.pxToRem)(24)}))))};Z.defaultProps={currentStep:null,cta:void 0},Z.propTypes={sectionIndex:l().number.isRequired,stepIndex:l().number.isRequired,hasSectionAfter:l().bool.isRequired,content:l().shape({id:l().string.isRequired,defaultMessage:l().string.isRequired}).isRequired,cta:l().shape({target:l().string,title:l().shape({id:l().string.isRequired,defaultMessage:l().string.isRequired})}),currentStep:l().string,onCtaClick:l().func.isRequired,title:l().shape({id:l().string.isRequired,defaultMessage:l().string.isRequired}).isRequired};var Le=Z,be=()=>{const{currentStep:t,guidedTourState:a,setCurrentStep:s,setStepState:r,isGuidedTourVisible:g,setSkipped:p}=(0,i.useGuidedTour)(),[f,m]=(0,e.useState)(t),[{stepContent:h,sectionIndex:u,stepIndex:T,hasSectionAfter:O,hasStepAfter:A},W]=(0,e.useReducer)(xe,ae),{trackUsage:F}=(0,i.useTracking)();(0,e.useEffect)(()=>{if(!t){m(!1);return}const[D]=U()(a,t);m(!D&&g)},[t,a,g]),(0,e.useEffect)(()=>{if(t){const[D]=U()(Ce.Z,t),L=Object.keys(a),[I,c]=t.split("."),B=L.indexOf(I),V=Object.keys(a[I]).indexOf(c),q=B<L.length-1,_=V<Object.keys(a[I]).length-1;W({type:"UPDATE_MODAL",content:D,newSectionIndex:B,newStepIndex:V,newHasSectionAfter:q,newHasStepAfter:_})}},[t,a]);const x=()=>{r(t,!0),F(h.trackingEvent),s(null)},j=()=>{p(!0),s(null),F("didSkipGuidedtour")};return f&&h?e.createElement(Se,{hideSkip:!A&&!O,onSkip:j,onClose:x},e.createElement(Le,{...h,onCtaClick:x,currentStep:t,sectionIndex:u,stepIndex:T,hasSectionAfter:O})):null},Oe=n(15300),De=n(61450),Be=n(1897),Q=n(78464),re=n(42889),ke=n(25390),Ge=n(3703),Ne=n(17264);const Fe=(0,v.default)(o.Box)`
13
- width: ${150/16}rem;
14
- position: absolute;
15
- bottom: ${({theme:t})=>t.spaces[9]};
16
- left: ${({theme:t})=>t.spaces[5]};
17
- `,ie=(0,v.default)(d.NavLink)`
18
- display: flex;
19
- justify-content: space-between;
20
- align-items: center;
21
- text-decoration: none;
22
- padding: ${({theme:t})=>`${t.spaces[2]} ${t.spaces[4]}`};
23
- border-radius: ${({theme:t})=>t.spaces[1]};
24
-
25
- &:hover {
26
- background: ${({theme:t,logout:a})=>a?t.colors.danger100:t.colors.primary100};
27
- text-decoration: none;
28
- }
29
-
30
- svg {
31
- path {
32
- fill: ${({theme:t})=>t.colors.danger600};
33
- }
34
- }
35
- `,le=({generalSectionLinks:t,pluginsSectionLinks:a})=>{const s=(0,e.useRef)(),[r,g]=(0,e.useState)(!1),{logos:{menu:p}}=(0,k.um)(),[f,m]=(0,i.usePersistentState)("navbar-condensed",!1),{userDisplayName:h}=(0,i.useAppInfos)(),{formatMessage:u}=(0,G.useIntl)(),{trackUsage:T}=(0,i.useTracking)(),{pathname:O}=(0,d.useLocation)(),A=(0,d.useHistory)(),{post:W}=(0,i.getFetchClient)(),F=h.split(" ").map(c=>c.substring(0,1)).join("").substring(0,2),x=()=>g(c=>!c),j=async()=>{await W("/admin/logout"),i.auth.clearAppStorage(),x(),A.push("/auth/login")},D=c=>{!c.currentTarget.contains(c.relatedTarget)&&c.relatedTarget?.parentElement?.id!=="main-nav-user-button"&&g(!1)},L=(c=null)=>{T("willNavigate",{from:O,to:c})},I=u({id:"app.components.LeftMenu.navbrand.title",defaultMessage:"Strapi Dashboard"});return e.createElement(Oe.$,{condensed:f},e.createElement(De.D,{as:d.NavLink,workplace:u({id:"app.components.LeftMenu.navbrand.workplace",defaultMessage:"Workplace"}),title:I,icon:e.createElement("img",{src:p.custom||p.default,alt:u({id:"app.components.LeftMenu.logo.alt",defaultMessage:"Application logo"})})}),e.createElement(o.Divider,null),e.createElement(Be._,null,e.createElement(Q.O,{as:d.NavLink,to:"/content-manager",icon:e.createElement(C.Write,null),onClick:()=>L("/content-manager")},u({id:"global.content-manager",defaultMessage:"Content manager"})),a.length>0?e.createElement(re.y,{label:u({id:"app.components.LeftMenu.plugins",defaultMessage:"Plugins"})},a.map(c=>{const B=c.icon;return e.createElement(Q.O,{as:d.NavLink,to:c.to,key:c.to,icon:e.createElement(B,null),onClick:()=>L(c.to)},u(c.intlLabel))})):null,t.length>0?e.createElement(re.y,{label:u({id:"app.components.LeftMenu.general",defaultMessage:"General"})},t.map(c=>{const B=c.icon;return e.createElement(Q.O,{as:d.NavLink,badgeContent:c.notificationsCount>0&&c.notificationsCount.toString()||void 0,to:c.to,key:c.to,icon:e.createElement(B,null),onClick:()=>L(c.to)},u(c.intlLabel))})):null),e.createElement(ke.q,null,e.createElement(Ge.r,{id:"main-nav-user-button",ref:s,onClick:x,initials:F},h),r&&e.createElement(Fe,{onBlur:D,padding:1,shadow:"tableShadow",background:"neutral0",hasRadius:!0},e.createElement(o.FocusTrap,{onEscape:x},e.createElement(o.Stack,{spacing:0},e.createElement(ie,{tabIndex:0,onClick:x,to:"/me"},e.createElement(o.Typography,null,u({id:"global.profile",defaultMessage:"Profile"}))),e.createElement(ie,{tabIndex:0,onClick:j,logout:"logout",to:"/auth/login"},e.createElement(o.Typography,{textColor:"danger600"},u({id:"app.components.LeftMenu.logout",defaultMessage:"Logout"})),e.createElement(C.Exit,null))))),e.createElement(Ne.w,{onClick:()=>m(c=>!c)},u(f?{id:"app.components.LeftMenu.expand",defaultMessage:"Expand the navbar"}:{id:"app.components.LeftMenu.collapse",defaultMessage:"Collapse the navbar"}))))};le.propTypes={generalSectionLinks:l().array.isRequired,pluginsSectionLinks:l().array.isRequired};var Ue=le;const We=(0,v.default)(o.Box)`
36
- flex: 1;
37
- `,ce=({children:t,sideNav:a})=>{const{formatMessage:s}=(0,G.useIntl)();return e.createElement(o.Box,{background:"neutral100"},e.createElement(o.SkipToContent,null,s({id:"skipToContent",defaultMessage:"Skip to content"})),e.createElement(o.Flex,{alignItems:"flex-start"},a,e.createElement(We,null,t)))};ce.propTypes={children:l().node.isRequired,sideNav:l().node.isRequired};var je=ce,Y=n(64421),Ke=n(26648),$e=n.p+"19eb2dfcf2603eb55733.png";const Ve=[{label:{id:"app.components.Onboarding.link.build-content",defaultMessage:"Build a content architecture"},href:"https://www.youtube.com/watch?v=G9GjN0RxhkE",duration:"5:48"},{label:{id:"app.components.Onboarding.link.manage-content",defaultMessage:"Add & manage content"},href:"https://www.youtube.com/watch?v=DEZw4KbybAI",duration:"3:18"},{label:{id:"app.components.Onboarding.link.manage-media",defaultMessage:"Manage media"},href:"https://www.youtube.com/watch?v=-61MuiMQb38",duration:"3:41"}],de={href:"https://www.youtube.com/playlist?list=PL7Q0DQYATmvidz6lEmwE5nIcOAYagxWqq",label:{id:"app.components.Onboarding.link.more-videos",defaultMessage:"Watch more videos"}},ze=[{label:{id:"global.documentation",defaultMessage:"documentation"},href:"https://docs.strapi.io",icon:C.Book},{label:{id:"app.static.links.cheatsheet",defaultMessage:"cheatsheet"},href:"https://strapi-showcase.s3-us-west-2.amazonaws.com/CheatSheet.pdf",icon:C.PaperPlane}],He=(0,v.default)(o.Button)`
38
- border-radius: 50%;
39
- padding: ${({theme:t})=>t.spaces[3]};
40
- /* Resetting 2rem height defined by Button component */
41
- height: 100%;
42
- `,we=(0,v.default)(o.Flex)`
43
- transform: translate(-50%, -50%);
44
- `,Ze=(0,v.default)(o.Flex)`
45
- text-decoration: none;
46
-
47
- :focus-visible {
48
- outline-offset: ${({theme:t})=>`-${t.spaces[1]}`};
49
- }
50
-
51
- :hover {
52
- background: ${({theme:t})=>t.colors.primary100};
53
-
54
- /* Hover style for the number displayed */
55
- ${o.Typography}:first-child {
56
- color: ${({theme:t})=>t.colors.primary500};
57
- }
58
-
59
- /* Hover style for the label */
60
- ${o.Typography}:nth-child(1) {
61
- color: ${({theme:t})=>t.colors.primary600};
62
- }
63
- }
64
- `,Qe=v.default.img`
65
- width: ${({theme:t})=>t.spaces[10]};
66
- height: ${({theme:t})=>t.spaces[8]};
67
- /* Same overlay used in ModalLayout */
68
- background: ${({theme:t})=>`${t.colors.neutral800}1F`};
69
- border-radius: ${({theme:t})=>t.borderRadius};
70
- `,ue=(0,v.default)(o.Typography)`
71
- /* line height of label and watch more to 1 so they can be better aligned visually */
72
- line-height: 1;
73
- `,pe=(0,v.default)(ue)`
74
- text-decoration: none;
75
-
76
- :hover {
77
- text-decoration: underline;
78
- }
79
- `;var Ye=()=>{const t=(0,e.useRef)(),[a,s]=(0,e.useState)(!1),{formatMessage:r}=(0,G.useIntl)(),{communityEdition:g}=(0,i.useAppInfos)(),p=()=>{s(m=>!m)},f=[...ze,{label:{id:"Settings.application.get-help",defaultMessage:"Get help"},icon:C.Message,href:g?"https://discord.strapi.io":"https://support.strapi.io/support/home"}];return e.createElement(o.Box,{as:"aside",position:"fixed",bottom:2,right:2},e.createElement(He,{"aria-label":r(a?{id:"app.components.Onboarding.help.button-close",defaultMessage:"Close help menu"}:{id:"app.components.Onboarding.help.button",defaultMessage:"Open help menu"}),onClick:p,ref:t},e.createElement(o.Icon,{as:a?C.Cross:C.Question,color:"buttonNeutral0"})),a&&e.createElement(o.Portal,null,e.createElement(o.PopoverPrimitives.Content,{padding:0,source:t,placement:"top-end",spacing:12},e.createElement(o.FocusTrap,{onEscape:p},e.createElement(o.Flex,{justifyContent:"space-between",paddingBottom:5,paddingRight:6,paddingLeft:6,paddingTop:6},e.createElement(ue,{fontWeight:"bold"},r({id:"app.components.Onboarding.title",defaultMessage:"Get started videos"})),e.createElement(pe,{as:"a",href:de.href,target:"_blank",rel:"noreferrer noopener",variant:"pi",textColor:"primary600"},r(de.label))),e.createElement(o.Divider,null),Ve.map(({href:m,duration:h,label:u},T)=>e.createElement(Ze,{as:"a",href:m,target:"_blank",rel:"noreferrer noopener",key:m,hasRadius:!0,paddingTop:4,paddingBottom:4,paddingLeft:6,paddingRight:11},e.createElement(o.Box,{paddingRight:5},e.createElement(o.Typography,{textColor:"neutral200",variant:"alpha"},T+1)),e.createElement(o.Box,{position:"relative"},e.createElement(Qe,{src:$e,alt:""}),e.createElement(we,{position:"absolute",top:"50%",left:"50%",background:"primary600",borderRadius:"50%",justifyContent:"center",width:6,height:6},e.createElement(o.Icon,{as:C.Play,color:"buttonNeutral0",width:3,height:3}))),e.createElement(o.Flex,{direction:"column",alignItems:"start",paddingLeft:4},e.createElement(o.Typography,{fontWeight:"bold"},r(u)),e.createElement(o.VisuallyHidden,null,":"),e.createElement(o.Typography,{textColor:"neutral600",variant:"pi"},h)))),e.createElement(o.Stack,{spacing:2,paddingLeft:5,paddingTop:2,paddingBottom:5},f.map(({label:m,href:h,icon:u})=>e.createElement(o.Stack,{horizontal:!0,spacing:3,key:h},e.createElement(o.Icon,{as:u,color:"primary600"}),e.createElement(pe,{as:"a",href:h,target:"_blank",rel:"noreferrer noopener",variant:"sigma",textColor:"primary700"},r(m)))))))))};const Je=(0,e.lazy)(()=>Promise.all([n.e(8469),n.e(4849),n.e(994)]).then(n.bind(n,39573))),Xe=(0,e.lazy)(()=>n.e(3981).then(n.bind(n,12016))),qe=(0,e.lazy)(()=>n.e(3677).then(n.bind(n,15415))),_e=(0,e.lazy)(()=>Promise.all([n.e(8469),n.e(5516)]).then(n.bind(n,92698))),me=(0,e.lazy)(()=>Promise.resolve().then(n.bind(n,53951))),et=(0,e.lazy)(()=>n.e(9501).then(n.bind(n,92336))),tt=(0,e.lazy)(()=>n.e(9497).then(n.bind(n,9972))),ge=(0,e.lazy)(()=>Promise.all([n.e(8469),n.e(5895)]).then(n.bind(n,71540))),nt=()=>{const{trackUsage:t}=(0,i.useTracking)(),a=(0,S.useDispatch)(),s=(0,S.useSelector)(r=>r.admin_app.status);(0,e.useEffect)(()=>{s==="init"&&(t("didAccessAuthenticatedAdministration"),a({type:Ke.e}))},[s])};var at=()=>{nt();const{isLoading:t,generalSectionLinks:a,pluginsSectionLinks:s}=(0,k.H9)(),{menu:r}=(0,i.useStrapiApp)(),{showTutorials:g}=(0,k.um)(),p=(0,e.useMemo)(()=>r.filter(f=>f.Component).map(({to:f,Component:m,exact:h})=>(0,Y.ot)(m,f,h)),[r]);return t?e.createElement(i.LoadingIndicatorPage,null):e.createElement(R.DndProvider,{backend:b.PD},e.createElement(je,{sideNav:e.createElement(Ue,{generalSectionLinks:a,pluginsSectionLinks:s})},e.createElement(e.Suspense,{fallback:e.createElement(i.LoadingIndicatorPage,null)},e.createElement(d.Switch,null,e.createElement(d.Route,{path:"/",component:Xe,exact:!0}),e.createElement(d.Route,{path:"/me",component:tt,exact:!0}),e.createElement(d.Route,{path:"/content-manager",component:Je}),p,e.createElement(d.Route,{path:"/settings/:settingId",component:ge}),e.createElement(d.Route,{path:"/settings",component:ge,exact:!0}),e.createElement(d.Route,{path:"/marketplace"},e.createElement(_e,null)),e.createElement(d.Route,{path:"/list-plugins",exact:!0},e.createElement(qe,null)),e.createElement(d.Route,{path:"/404",component:me}),e.createElement(d.Route,{path:"/500",component:et}),e.createElement(d.Route,{path:"",component:me}))),e.createElement(be,null),g&&e.createElement(Ye,null)))},ot=t=>({plugins:Object.keys(t).reduce((a,s)=>(a[s]={...t[s]},a),{})}),st=n(3040),rt=n.n(st);const he={plugins:null};var it=(t=he,a)=>(0,ne.default)(t,s=>{switch(a.type){case"SET_PLUGIN_READY":{rt()(s,["plugins",a.pluginId,"isReady"],!0);break}default:return s}}),lt=()=>{const{plugins:t}=(0,i.useStrapiApp)(),[{plugins:a},s]=(0,e.useReducer)(it,he,()=>ot(t)),r=(0,e.useRef)(p=>{s({type:"SET_PLUGIN_READY",pluginId:p})});if(Object.keys(a).some(p=>a[p].isReady===!1)){const p=Object.keys(a).reduce((f,m)=>{const h=a[m].initializer;if(h){const u=a[m].pluginId;f.push(e.createElement(h,{key:u,setPlugin:r.current}))}return f},[]);return e.createElement(e.Fragment,null,p,e.createElement(i.LoadingIndicatorPage,null))}return e.createElement(at,null)},fe=n(17367);const ct=()=>({type:fe.l}),dt=t=>({type:fe.m,permissions:t}),Ee=({children:t,permissions:a,refetchPermissions:s})=>{const{allPermissions:r}=(0,S.useSelector)(p=>p.rbacProvider),g=(0,S.useDispatch)();return(0,e.useEffect)(()=>(g(dt(a)),()=>{g(ct())}),[a,g]),r?e.createElement(i.RBACProviderContext.Provider,{value:{allPermissions:r,refetchPermissions:s}},t):e.createElement(i.LoadingIndicatorPage,null)};Ee.propTypes={children:l().element.isRequired,permissions:l().array.isRequired,refetchPermissions:l().func.isRequired};var ut=Ee,pt=n(55721),mt=n(54770),J=n.n(mt),ye=(t,a)=>!J().valid(t)||!J().valid(a)?!1:J().lt(t,a);const Te=y.i8,gt=!JSON.parse(localStorage.getItem("STRAPI_UPDATE_NOTIF")),{get:X}=(0,i.getFetchClient)(),ht=async t=>{try{const{data:{tag_name:a}}=await pt.Z.get("https://api.github.com/repos/strapi/strapi/releases/latest");return ye(Te,a)&&gt&&t({type:"info",message:{id:"notification.version.update.message"},link:{url:`https://github.com/strapi/strapi/releases/tag/${a}`,label:{id:"global.see-more"}},blockTransition:!0,onClose:()=>localStorage.setItem("STRAPI_UPDATE_NOTIF",!0)}),a}catch{return Te}},ft=async()=>{try{const{data:t,headers:a}=await X("/admin/information");if(!a["content-type"].includes("application/json"))throw new Error("Not found");return t.data}catch(t){throw new Error(t)}},Et=async()=>{try{const{data:t,headers:a}=await X("/admin/users/me/permissions");if(!a["content-type"].includes("application/json"))throw new Error("Not found");return t.data}catch(t){throw new Error(t)}},yt=async()=>{try{const{data:{data:{roles:t}}}=await X("/admin/users/me");return t}catch(t){throw new Error(t)}},ve=y.i8;var Tt=()=>{const{setGuidedTourVisibility:t}=(0,i.useGuidedTour)(),a=(0,i.useNotification)(),s=(0,e.useRef)(t),r=i.auth.getUserInfo(),g=z()(r,"username")||(0,Y.Pp)(r.firstname,r.lastname),[p,f]=(0,e.useState)(g),[m,h]=(0,e.useState)(null),{showReleaseNotification:u}=(0,k.um)(),[{data:T,status:O},{data:A,isLoading:W},{data:F,status:x,refetch:j,isFetched:D,isFetching:L},{data:I}]=(0,P.useQueries)([{queryKey:"app-infos",queryFn:ft},{queryKey:"strapi-release",queryFn:()=>ht(a),enabled:u,initialData:ve},{queryKey:"admin-users-permission",queryFn:Et,initialData:[]},{queryKey:"user-roles",queryFn:yt}]),c=(0,e.useMemo)(()=>ye(ve,A),[A]);(0,e.useEffect)(()=>{I&&I.find(({code:ee})=>ee==="strapi-super-admin")&&T?.autoReload&&s.current(!0)},[I,T]),(0,e.useEffect)(()=>{(async()=>{const ee=await(0,Y.Qy)(r);h(ee)})()},[r]);const V=W||(L&&D||O==="loading"||x==="loading"),q=(0,e.useMemo)(()=>({...T,userId:m,latestStrapiReleaseTag:A,setUserDisplayName:f,shouldUpdateStrapi:c,userDisplayName:p}),[T,A,c,p,m]);return V?e.createElement(i.LoadingIndicatorPage,null):O==="error"?e.createElement("div",null,"error..."):e.createElement(i.AppInfosContext.Provider,{value:q},e.createElement(ut,{permissions:F,refetchPermissions:j},e.createElement(lt,null)))}},78024:function(K,M,n){var e=n(32735),i=n(60216),P=n.n(i),E=n(13478),z=n.n(E),y=n(39161),k=n.n(y),d=n(23678);const S=({type:R,...b})=>e.createElement(y.Box,{width:(0,E.pxToRem)(2),height:"100%",background:R===d.VM?"neutral300":"primary500",hasRadius:!0,...b});S.defaultProps={type:d.VM},S.propTypes={type:P().oneOf([d.lW,d.hx,d.VM])},M.Z=S},14317:function(K,M,n){var e=n(32735),i=n(60216),P=n.n(i),E=n(13478),z=n.n(E),y=n(39161),k=n.n(y),d=n(57269),S=n.n(d),R=n(23678);const b=({type:$,number:U})=>$===R.hx?e.createElement(y.Flex,{background:"primary600",padding:2,borderRadius:"50%",width:(0,E.pxToRem)(30),height:(0,E.pxToRem)(30),justifyContent:"center"},e.createElement(y.Icon,{as:d.Check,"aria-hidden":!0,width:(0,E.pxToRem)(16),color:"neutral0"})):$===R.lW?e.createElement(y.Flex,{background:"primary600",padding:2,borderRadius:"50%",width:(0,E.pxToRem)(30),height:(0,E.pxToRem)(30),justifyContent:"center"},e.createElement(y.Typography,{fontWeight:"semiBold",textColor:"neutral0"},U)):e.createElement(y.Flex,{borderColor:"neutral500",borderWidth:"1px",borderStyle:"solid",padding:2,borderRadius:"50%",width:(0,E.pxToRem)(30),height:(0,E.pxToRem)(30),justifyContent:"center"},e.createElement(y.Typography,{fontWeight:"semiBold",textColor:"neutral600"},U));b.defaultProps={number:void 0,type:R.VM},b.propTypes={number:P().number,type:P().oneOf([R.lW,R.hx,R.VM])},M.Z=b},23678:function(K,M,n){n.d(M,{VM:function(){return P},hx:function(){return i},lW:function(){return e}});const e="isActive",i="isDone",P="isNotDone"},58107:function(K,M){const n={contentTypeBuilder:{home:{title:{id:"app.components.GuidedTour.home.CTB.title",defaultMessage:"\u{1F9E0} Build the content structure"},cta:{title:{id:"app.components.GuidedTour.home.CTB.cta.title",defaultMessage:"Go to the Content type Builder"},type:"REDIRECT",target:"/plugins/content-type-builder"},trackingEvent:"didClickGuidedTourHomepageContentTypeBuilder"},create:{title:{id:"app.components.GuidedTour.CTB.create.title",defaultMessage:"\u{1F9E0} Create a first Collection type"},content:{id:"app.components.GuidedTour.CTB.create.content",defaultMessage:"<p>Collection types help you manage several entries, Single types are suitable to manage only one entry.</p> <p>Ex: For a Blog website, Articles would be a Collection type whereas a Homepage would be a Single type.</p>"},cta:{title:{id:"app.components.GuidedTour.CTB.create.cta.title",defaultMessage:"Build a Collection type"},type:"CLOSE"},trackingEvent:"didClickGuidedTourStep1CollectionType"},success:{title:{id:"app.components.GuidedTour.CTB.success.title",defaultMessage:"Step 1: Completed \u2705"},content:{id:"app.components.GuidedTour.CTB.success.content",defaultMessage:"<p>Good going!</p><b>\u26A1\uFE0F What would you like to share with the world?</b>"},cta:{title:{id:"app.components.GuidedTour.create-content",defaultMessage:"Create content"},type:"REDIRECT",target:"/content-manager"},trackingEvent:"didCreateGuidedTourCollectionType"}},contentManager:{home:{title:{id:"app.components.GuidedTour.home.CM.title",defaultMessage:"\u26A1\uFE0F What would you like to share with the world?"},cta:{title:{id:"app.components.GuidedTour.create-content",defaultMessage:"Create content"},type:"REDIRECT",target:"/content-manager"},trackingEvent:"didClickGuidedTourHomepageContentManager"},create:{title:{id:"app.components.GuidedTour.CM.create.title",defaultMessage:"\u26A1\uFE0F Create content"},content:{id:"app.components.GuidedTour.CM.create.content",defaultMessage:"<p>Create and manage all the content here in the Content Manager.</p><p>Ex: Taking the Blog website example further, one can write an Article, save and publish it as they like.</p><p>\u{1F4A1} Quick tip - Don't forget to hit publish on the content you create.</p>"},cta:{title:{id:"app.components.GuidedTour.create-content",defaultMessage:"Create content"},type:"CLOSE"},trackingEvent:"didClickGuidedTourStep2ContentManager"},success:{title:{id:"app.components.GuidedTour.CM.success.title",defaultMessage:"Step 2: Completed \u2705"},content:{id:"app.components.GuidedTour.CM.success.content",defaultMessage:"<p>Awesome, one last step to go!</p><b>\u{1F680} See content in action</b>"},cta:{title:{id:"app.components.GuidedTour.CM.success.cta.title",defaultMessage:"Test the API"},type:"REDIRECT",target:"/settings/api-tokens"},trackingEvent:"didCreateGuidedTourEntry"}},apiTokens:{home:{title:{id:"app.components.GuidedTour.apiTokens.create.title",defaultMessage:"\u{1F680} See content in action"},cta:{title:{id:"app.components.GuidedTour.home.apiTokens.cta.title",defaultMessage:"Test the API"},type:"REDIRECT",target:"/settings/api-tokens"},trackingEvent:"didClickGuidedTourHomepageApiTokens"},create:{title:{id:"app.components.GuidedTour.apiTokens.create.title",defaultMessage:"\u{1F680} See content in action"},content:{id:"app.components.GuidedTour.apiTokens.create.content",defaultMessage:"<p>Generate an authentication token here and retrieve the content you just created.</p>"},cta:{title:{id:"app.components.GuidedTour.apiTokens.create.cta.title",defaultMessage:"Generate an API Token"},type:"CLOSE"},trackingEvent:"didClickGuidedTourStep3ApiTokens"},success:{title:{id:"app.components.GuidedTour.apiTokens.success.title",defaultMessage:"Step 3: Completed \u2705"},content:{id:"app.components.GuidedTour.apiTokens.success.content",defaultMessage:"<p>See content in action by making an HTTP request:</p><ul><li><p>To this URL: <light>https://'<'YOUR_DOMAIN'>'/api/'<'YOUR_CT'>'</light></p></li><li><p>With the header: <light>Authorization: bearer '<'YOUR_API_TOKEN'>'</light></p></li></ul><p>For more ways to interact with content, see the <documentationLink>documentation</documentationLink>.</p>"},trackingEvent:"didGenerateGuidedTourApiTokens"}}};M.Z=n}}]);
@@ -1,70 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[3981],{83119:function(M,y){const o=()=>null;y.Z=o},12016:function(M,y,o){o.r(y),o.d(y,{default:function(){return de}});var e=o(32735),f=o(5636),c=o(83292),L=o(99357),H=o(5141),i=o(13478),n=o(39161),P=o.p+"7e9af4fb7e723fcebf1f.svg",w=o(8888),R=t=>Object.entries(t).every(([,r])=>Object.entries(r).every(([,a])=>a)),d=o(57269),G=o(60216),l=o.n(G),I=o(14317),j=o(78024),p=o(23678);const b=({type:t,title:r,number:a,content:s,hasLine:m})=>{const{formatMessage:h}=(0,f.useIntl)();return e.createElement(n.Box,null,e.createElement(n.Flex,null,e.createElement(n.Box,{minWidth:(0,i.pxToRem)(30),marginRight:5},e.createElement(I.Z,{type:t,number:a})),e.createElement(n.Typography,{variant:"delta",as:"h3"},h(r))),e.createElement(n.Flex,{alignItems:"flex-start"},e.createElement(n.Flex,{justifyContent:"center",minWidth:(0,i.pxToRem)(30),marginBottom:3,marginTop:3,marginRight:5},m&&e.createElement(j.Z,{type:t,minHeight:t===p.lW?(0,i.pxToRem)(85):(0,i.pxToRem)(65)})),e.createElement(n.Box,{marginTop:2},t===p.lW&&s)))};b.defaultProps={content:void 0,number:void 0,type:p.VM,hasLine:!0},b.propTypes={content:l().node,number:l().number,title:l().shape({id:l().string,defaultMessage:l().string}).isRequired,type:l().oneOf([p.lW,p.hx,p.VM]),hasLine:l().bool};var W=b;const F=(t,r)=>t===-1||r<t?p.hx:r>t?p.VM:p.lW,C=({sections:t,currentSectionKey:r})=>{const a=t.findIndex(s=>s.key===r);return e.createElement(n.Box,null,t.map((s,m)=>e.createElement(W,{key:s.key,title:s.title,content:s.content,number:m+1,type:F(a,m),hasLine:m!==t.length-1})))};C.defaultProps={currentSectionKey:void 0},C.propTypes={sections:l().arrayOf(l().shape({key:l().string.isRequired,title:l().shape({id:l().string,defaultMessage:l().string}).isRequired,content:l().node})).isRequired,currentSectionKey:l().string};var D=C,O=o(58107),A=()=>{const{guidedTourState:t,setSkipped:r}=(0,i.useGuidedTour)(),{formatMessage:a}=(0,f.useIntl)(),{trackUsage:s}=(0,i.useTracking)(),m=Object.entries(O.Z).map(([u,g])=>({key:u,title:g.home.title,content:e.createElement(i.LinkButton,{onClick:()=>s(g.home.trackingEvent),to:g.home.cta.target,endIcon:e.createElement(d.ArrowRight,null)},a(g.home.cta.title))})),B=m.map(u=>({isDone:Object.entries(t[u.key]).every(([,g])=>g),...u})).find(u=>!u.isDone)?.key,T=()=>{r(!0),s("didSkipGuidedtour")};return e.createElement(n.Box,{hasRadius:!0,shadow:"tableShadow",paddingTop:7,paddingRight:4,paddingLeft:7,paddingBottom:4,background:"neutral0"},e.createElement(n.Stack,{spacing:6},e.createElement(n.Typography,{variant:"beta",as:"h2"},a({id:"app.components.GuidedTour.title",defaultMessage:"3 steps to get started"})),e.createElement(D,{sections:m,currentSectionKey:B})),e.createElement(n.Flex,{justifyContent:"flex-end"},e.createElement(n.Button,{variant:"tertiary",onClick:T},a({id:"app.components.GuidedTour.skip",defaultMessage:"Skip the tour"}))))},Z=o(95489),x=o(41502);const z=(0,c.default)(d.Discord)`
2
- path {
3
- fill: #7289da !important;
4
- }
5
- `,$=(0,c.default)(d.Reddit)`
6
- > path:first-child {
7
- fill: #ff4500;
8
- }
9
- `,v=(0,c.default)(d.Strapi)`
10
- > path:first-child {
11
- fill: #4945ff;
12
- }
13
- > path:nth-child(2) {
14
- fill: #fff;
15
- }
16
- > path:nth-child(4) {
17
- fill: #9593ff;
18
- }
19
- `,N=(0,c.default)(d.Twitter)`
20
- path {
21
- fill: #1da1f2 !important;
22
- }
23
- `,V=(0,c.default)(d.Discourse)`
24
- > path:first-child {
25
- fill: #231f20;
26
- }
27
- > path:nth-child(2) {
28
- fill: #fff9ae;
29
- }
30
- > path:nth-child(3) {
31
- fill: #00aeef;
32
- }
33
- > path:nth-child(4) {
34
- fill: #00a94f;
35
- }
36
- > path:nth-child(5) {
37
- fill: #f15d22;
38
- }
39
- > path:nth-child(6) {
40
- fill: #e31b23;
41
- }
42
- `,K=[{name:{id:"app.components.HomePage.community.links.github",defaultMessage:"Github"},link:"https://github.com/strapi/strapi/",icon:e.createElement(d.Github,{fill:"#7289DA"}),alt:"github"},{name:{id:"app.components.HomePage.community.links.discord",defaultMessage:"Discord"},link:"https://discord.strapi.io/",icon:e.createElement(z,null),alt:"discord"},{name:{id:"app.components.HomePage.community.links.reddit",defaultMessage:"Reddit"},link:"https://www.reddit.com/r/Strapi/",icon:e.createElement($,null),alt:"reddit"},{name:{id:"app.components.HomePage.community.links.twitter",defaultMessage:"Twitter"},link:"https://twitter.com/strapijs",icon:e.createElement(N,null),alt:"twitter"},{name:{id:"app.components.HomePage.community.links.forum",defaultMessage:"Forum"},link:"https://forum.strapi.io",icon:e.createElement(V,null),alt:"forum"},{name:{id:"app.components.HomePage.community.links.blog",defaultMessage:"Blog"},link:"https://strapi.io/blog?utm_source=referral&utm_medium=admin&utm_campaign=career%20page",icon:e.createElement(v,null),alt:"blog"},{name:{id:"app.components.HomePage.community.links.career",defaultMessage:"We are hiring!"},link:"https://strapi.io/careers?utm_source=referral&utm_medium=admin&utm_campaign=blog",icon:e.createElement(v,null),alt:"career"}],U=(0,c.default)(Z.Q)`
43
- display: flex;
44
- align-items: center;
45
- border: none;
46
-
47
- svg {
48
- width: ${({theme:t})=>t.spaces[6]};
49
- height: ${({theme:t})=>t.spaces[6]};
50
- }
51
-
52
- span {
53
- word-break: keep-all;
54
- }
55
- `,J=(0,c.default)(n.Grid)`
56
- row-gap: ${({theme:t})=>t.spaces[2]};
57
- column-gap: ${({theme:t})=>t.spaces[4]};
58
- `;var Q=()=>{const{formatMessage:t}=(0,f.useIntl)(),{communityEdition:r}=(0,i.useAppInfos)(),a=[...K,{icon:e.createElement(v,null),link:r?"https://discord.strapi.io":"https://support.strapi.io/support/home",name:{id:"Settings.application.get-help",defaultMessage:"Get help"}}];return e.createElement(n.Box,{as:"aside","aria-labelledby":"join-the-community",background:"neutral0",hasRadius:!0,paddingRight:5,paddingLeft:5,paddingTop:6,paddingBottom:6,shadow:"tableShadow"},e.createElement(n.Box,{paddingBottom:7},e.createElement(n.Stack,{spacing:5},e.createElement(n.Stack,{spacing:3},e.createElement(n.Typography,{variant:"delta",as:"h2",id:"join-the-community"},t({id:"app.components.HomePage.community",defaultMessage:"Join the community"})),e.createElement(n.Typography,{textColor:"neutral600"},t({id:"app.components.HomePage.community.content",defaultMessage:"Discuss with team members, contributors and developers on different channels"}))),e.createElement(x.r,{href:"https://feedback.strapi.io/",isExternal:!0,endIcon:e.createElement(d.ExternalLink,null)},t({id:"app.components.HomePage.roadmap",defaultMessage:"See our road map"})))),e.createElement(J,null,a.map(({icon:s,link:m,name:h})=>e.createElement(n.GridItem,{col:6,s:12,key:h},e.createElement(U,{size:"L",startIcon:s,variant:"tertiary",href:m,isExternal:!0},t(h))))))};const Y=(0,c.default)(n.Typography)`
59
- word-break: break-word;
60
- `,X=(0,c.default)(n.Stack)`
61
- align-items: flex-start;
62
- `,S=({hasCreatedContentType:t,onCreateCT:r})=>{const{formatMessage:a}=(0,f.useIntl)();return e.createElement("div",null,e.createElement(n.Box,{paddingLeft:6,paddingBottom:10},e.createElement(X,{spacing:5},e.createElement(n.Typography,{as:"h1",variant:"alpha"},a(t?{id:"app.components.HomePage.welcome.again",defaultMessage:"Welcome \u{1F44B}"}:{id:"app.components.HomePage.welcome",defaultMessage:"Welcome on board!"})),e.createElement(Y,{textColor:"neutral600",variant:"epsilon"},a(t?{id:"app.components.HomePage.welcomeBlock.content.again",defaultMessage:"We hope you are making progress on your project! Feel free to read the latest news about Strapi. We are giving our best to improve the product based on your feedback."}:{id:"app.components.HomePage.welcomeBlock.content",defaultMessage:"Congrats! You are logged as the first administrator. To discover the powerful features provided by Strapi, we recommend you to create your first Content type!"})),t?e.createElement(x.r,{isExternal:!0,href:"https://strapi.io/blog"},a({id:"app.components.HomePage.button.blog",defaultMessage:"See more on the blog"})):e.createElement(n.Button,{size:"L",onClick:r,endIcon:e.createElement(d.ArrowRight,null)},a({id:"app.components.HomePage.create",defaultMessage:"Create your first Content type"})))))};S.defaultProps={hasCreatedContentType:void 0,onCreateCT:void 0},S.propTypes={hasCreatedContentType:l().bool,onCreateCT:l().func};var q=S,_=o.p+"27d16aefee06412db90a.png",ee=o.p+"bb3108f7fd1e6179bde1.svg",te=o.p+"bb4d0d527bdfb161bc5a.svg";const ne=c.default.a`
63
- text-decoration: none;
64
- `,oe=(0,c.default)(n.Box)`
65
- background-image: url(${({backgroundImage:t})=>t});
66
- `,ae=(0,c.default)(n.Flex)`
67
- background: rgba(255, 255, 255, 0.3);
68
- `;var re=()=>{const{formatMessage:t}=(0,f.useIntl)(),{trackUsage:r}=(0,i.useTracking)();return e.createElement(ne,{href:"https://cloud.strapi.io",target:"_blank",rel:"noopener noreferrer nofollow",onClick:()=>{r("didClickOnTryStrapiCloudSection")}},e.createElement(n.Flex,{shadow:"tableShadow",hasRadius:!0,padding:6,background:"neutral0",position:"relative",gap:6},e.createElement(oe,{backgroundImage:_,hasRadius:!0,padding:3},e.createElement(ae,{width:(0,i.pxToRem)(32),height:(0,i.pxToRem)(32),justifyContent:"center",hasRadius:!0,alignItems:"center"},e.createElement("img",{src:ee,alt:t({id:"app.components.BlockLink.cloud",defaultMessage:"Strapi Cloud"})}))),e.createElement(n.Flex,{gap:1,direction:"column",alignItems:"start"},e.createElement(n.Flex,null,e.createElement(n.Typography,{fontWeight:"semiBold",variant:"pi"},t({id:"app.components.BlockLink.cloud",defaultMessage:"Strapi Cloud"}))),e.createElement(n.Typography,{textColor:"neutral600"},t({id:"app.components.BlockLink.cloud.content",defaultMessage:"A fully composable, and collaborative platform to boost your team velocity."})),e.createElement(n.Box,{src:te,position:"absolute",top:0,right:0,as:"img"}))))};const E=c.default.a`
69
- text-decoration: none;
70
- `;var ie=()=>{const{formatMessage:t}=(0,f.useIntl)(),{trackUsage:r}=(0,i.useTracking)(),a=s=>{r(s)};return e.createElement(n.Stack,{spacing:5},e.createElement(re,null),e.createElement(E,{href:"https://strapi.io/resource-center",target:"_blank",rel:"noopener noreferrer nofollow",onClick:()=>a("didClickonReadTheDocumentationSection")},e.createElement(i.ContentBox,{title:t({id:"global.documentation",defaultMessage:"Documentation"}),subtitle:t({id:"app.components.BlockLink.documentation.content",defaultMessage:"Discover the essential concepts, guides and instructions."}),icon:e.createElement(d.InformationSquare,null),iconBackground:"primary100"})),e.createElement(E,{href:"https://strapi.io/starters",target:"_blank",rel:"noopener noreferrer nofollow",onClick:()=>a("didClickonCodeExampleSection")},e.createElement(i.ContentBox,{title:t({id:"app.components.BlockLink.code",defaultMessage:"Code example"}),subtitle:t({id:"app.components.BlockLink.code.content",defaultMessage:"Learn by using ready-made starters for your projects."}),icon:e.createElement(d.CodeSquare,null),iconBackground:"warning100"})),e.createElement(E,{href:"https://strapi.io/blog/categories/tutorials",target:"_blank",rel:"noopener noreferrer nofollow",onClick:()=>a("didClickonTutorialSection")},e.createElement(i.ContentBox,{title:t({id:"app.components.BlockLink.tutorial",defaultMessage:"Tutorials"}),subtitle:t({id:"app.components.BlockLink.tutorial.content",defaultMessage:"Follow step-by-step instructions to use and customize Strapi."}),icon:e.createElement(d.PlaySquare,null),iconBackground:"secondary100"})),e.createElement(E,{href:"https://strapi.io/blog",target:"_blank",rel:"noopener noreferrer nofollow",onClick:()=>a("didClickonBlogSection")},e.createElement(i.ContentBox,{title:t({id:"app.components.BlockLink.blog",defaultMessage:"Blog"}),subtitle:t({id:"app.components.BlockLink.blog.content",defaultMessage:"Read the latest news about Strapi and the ecosystem."}),icon:e.createElement(d.FeatherSquare,null),iconBackground:"alternative100"})))};const le=(()=>window&&window.strapi&&window.strapi.isEE?o(21306).Z:o(83119).Z)(),se=(0,c.default)(n.Box).withConfig({displayName:"HomePage__LogoContainer",componentId:"sc-1md9zz4-0"})(["position:absolute;top:0;right:0;img{width:","rem;}"],150/16),ce=()=>{const{collectionTypes:t,singleTypes:r,isLoading:a}=(0,w.bP)(),{guidedTourState:s,isGuidedTourVisible:m,isSkipped:h}=(0,i.useGuidedTour)();le();const B=!R(s)&&m&&!h,{push:T}=(0,H.useHistory)(),u=k=>{k.preventDefault(),T("/plugins/content-type-builder/content-types/create-content-type")},g=(0,e.useMemo)(()=>{const k=me=>me.filter(pe=>pe.isDisplayed);return k(t).length>1||k(r).length>0},[t,r]);return a?e.createElement(i.LoadingIndicatorPage,null):e.createElement(n.Layout,null,e.createElement(f.FormattedMessage,{id:"HomePage.helmet.title",defaultMessage:"Homepage"},k=>e.createElement(L.Helmet,{title:k[0]})),e.createElement(n.Main,null,e.createElement(se,null,e.createElement("img",{alt:"","aria-hidden":!0,src:P})),e.createElement(n.Box,{padding:10},e.createElement(n.Grid,null,e.createElement(n.GridItem,{col:8,s:12},e.createElement(q,{onCreateCT:u,hasCreatedContentType:g}))),e.createElement(n.Grid,{gap:6},e.createElement(n.GridItem,{col:8,s:12},B?e.createElement(A,null):e.createElement(ie,null)),e.createElement(n.GridItem,{col:4,s:12},e.createElement(Q,null))))))};var de=(0,e.memo)(ce)}}]);
@@ -1,15 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[9497],{9972:function(B,w,n){n.r(w),n.d(w,{default:function(){return X}});var e=n(32735),l=n(83292),o=n(13478),C=n(5636),v=n(83281),x=n(23940),S=n.n(x),E=n(84968),M=n(88423),f=n.n(M),m=n(99357),t=n(39161),u=n(57269),H=n(20139),Z=n(8888),U=n(9086),N=n.n(U);const O=async()=>{const{get:d}=(0,o.getFetchClient)(),{data:g}=await d("/admin/users/me");return g.data},D=async d=>{const g=N()(d,["confirmPassword","currentTheme"]),{put:h}=(0,o.getFetchClient)(),{data:A}=await h("/admin/users/me",g);return{...A.data,currentTheme:d.currentTheme}};var z=n(5173),Q=n(1057),j=z.Ry().shape(Q.Rw),G=n(64421);const W=l.default.a`
2
- color: ${({theme:d})=>d.colors.primary600};
3
- `,P=(0,l.default)(t.TextInput)`
4
- ::-ms-reveal {
5
- display: none;
6
- }
7
- `,L=(0,l.default)(t.FieldAction)`
8
- svg {
9
- height: 1rem;
10
- width: 1rem;
11
- path {
12
- fill: ${({theme:d})=>d.colors.neutral600};
13
- }
14
- }
15
- `;var X=()=>{const[d,g]=(0,e.useState)(!1),[h,A]=(0,e.useState)(!1),[b,Y]=(0,e.useState)(!1),{changeLocale:$,localeNames:k}=(0,H.Z)(),{setUserDisplayName:V}=(0,o.useAppInfos)(),J=(0,E.useQueryClient)(),{formatMessage:a}=(0,C.useIntl)(),{trackUsage:K}=(0,o.useTracking)(),I=(0,o.useNotification)(),{lockApp:q,unlockApp:_}=(0,o.useOverlayBlocker)(),{notifyStatus:ee}=(0,t.useNotifyAT)(),{currentTheme:te,themes:F,onChangeTheme:ae}=(0,Z.M1)();(0,o.useFocusWhenNavigate)();const{status:re,data:y}=(0,E.useQuery)("user",()=>O(),{onSuccess(){ee(a({id:"Settings.profile.form.notify.data.loaded",defaultMessage:"Your profile data has been loaded"}))},onError(){I({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),ne=re!=="success",R=(0,E.useMutation)(r=>D(r),{async onSuccess(r){await J.invalidateQueries("user"),o.auth.setUserInfo(f()(r,["email","firstname","lastname","username","preferedLanguage"]));const i=r.username||(0,G.Pp)(r.firstname,r.lastname);V(i),$(r.preferedLanguage),ae(r.currentTheme),K("didChangeMode",{newMode:r.currentTheme}),I({type:"success",message:{id:"notification.success.saved",defaultMessage:"Saved"}})},onSettled(){_()},refetchActive:!0}),{isLoading:se}=R,oe=async(r,{setErrors:i})=>{q();const c=r.username||null;R.mutate({...r,username:c},{onError(T){const s=T?.response?.data;return s?.data?i(s.data):I({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}})},le=["currentTheme","email","firstname","lastname","username","preferedLanguage"],ie=f()({...y,currentTheme:te},le);if(ne)return e.createElement(t.Main,{"aria-busy":"true"},e.createElement(m.Helmet,{title:a({id:"Settings.profile.form.section.helmet.title",defaultMessage:"User profile"})}),e.createElement(t.HeaderLayout,{title:a({id:"Settings.profile.form.section.profile.page.title",defaultMessage:"Profile page"})}),e.createElement(t.ContentLayout,null,e.createElement(o.LoadingIndicatorPage,null)));const de=Object.keys(F).filter(r=>F[r]);return e.createElement(t.Main,{"aria-busy":se},e.createElement(m.Helmet,{title:a({id:"Settings.profile.form.section.helmet.title",defaultMessage:"User profile"})}),e.createElement(v.Formik,{onSubmit:oe,initialValues:ie,validateOnChange:!1,validationSchema:j,enableReinitialize:!0},({errors:r,values:i,handleChange:c,isSubmitting:T})=>e.createElement(o.Form,null,e.createElement(t.HeaderLayout,{title:y.username||(0,G.Pp)(y.firstname,y.lastname),primaryAction:e.createElement(t.Button,{startIcon:e.createElement(u.Check,null),loading:T,type:"submit"},a({id:"global.save",defaultMessage:"Save"}))}),e.createElement(t.Box,{paddingBottom:10},e.createElement(t.ContentLayout,null,e.createElement(t.Stack,{spacing:6},e.createElement(t.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Stack,{spacing:4},e.createElement(t.Typography,{variant:"delta",as:"h2"},a({id:"global.profile",defaultMessage:"Profile"})),e.createElement(t.Grid,{gap:5},e.createElement(t.GridItem,{s:12,col:6},e.createElement(o.GenericInput,{intlLabel:{id:"Auth.form.firstname.label",defaultMessage:"First name"},error:r.firstname,onChange:c,value:i.firstname||"",type:"text",name:"firstname",required:!0})),e.createElement(t.GridItem,{s:12,col:6},e.createElement(o.GenericInput,{intlLabel:{id:"Auth.form.lastname.label",defaultMessage:"Last name"},error:r.lastname,onChange:c,value:i.lastname||"",type:"text",name:"lastname"})),e.createElement(t.GridItem,{s:12,col:6},e.createElement(o.GenericInput,{intlLabel:{id:"Auth.form.email.label",defaultMessage:"Email"},error:r.email,onChange:c,value:i.email||"",type:"email",name:"email",required:!0})),e.createElement(t.GridItem,{s:12,col:6},e.createElement(o.GenericInput,{intlLabel:{id:"Auth.form.username.label",defaultMessage:"Username"},error:r.username,onChange:c,value:i.username||"",type:"text",name:"username"}))))),e.createElement(t.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Stack,{spacing:4},e.createElement(t.Typography,{variant:"delta",as:"h2"},a({id:"global.change-password",defaultMessage:"Change password"})),e.createElement(t.Grid,{gap:5},e.createElement(t.GridItem,{s:12,col:6},e.createElement(P,{error:r.currentPassword?a({id:r.currentPassword,defaultMessage:r.currentPassword}):"",onChange:c,value:i.currentPassword||"",label:a({id:"Auth.form.currentPassword.label",defaultMessage:"Current Password"}),name:"currentPassword",type:b?"text":"password",endAction:e.createElement(L,{onClick:s=>{s.stopPropagation(),Y(p=>!p)},label:a(b?{id:"Auth.form.password.show-password",defaultMessage:"Show password"}:{id:"Auth.form.password.hide-password",defaultMessage:"Hide password"})},b?e.createElement(u.Eye,null):e.createElement(u.EyeStriked,null))}))),e.createElement(t.Grid,{gap:5},e.createElement(t.GridItem,{s:12,col:6},e.createElement(P,{error:r.password?a({id:r.password,defaultMessage:r.password}):"",onChange:c,value:i.password||"",label:a({id:"global.password",defaultMessage:"Password"}),name:"password",type:d?"text":"password",autoComplete:"new-password",endAction:e.createElement(L,{onClick:s=>{s.stopPropagation(),g(p=>!p)},label:a(d?{id:"Auth.form.password.show-password",defaultMessage:"Show password"}:{id:"Auth.form.password.hide-password",defaultMessage:"Hide password"})},d?e.createElement(u.Eye,null):e.createElement(u.EyeStriked,null))})),e.createElement(t.GridItem,{s:12,col:6},e.createElement(P,{error:r.confirmPassword?a({id:r.confirmPassword,defaultMessage:r.confirmPassword}):"",onChange:c,value:i.confirmPassword||"",label:a({id:"Auth.form.confirmPassword.label",defaultMessage:"Password confirmation"}),name:"confirmPassword",type:h?"text":"password",autoComplete:"new-password",endAction:e.createElement(L,{onClick:s=>{s.stopPropagation(),A(p=>!p)},label:a(h?{id:"Auth.form.password.show-password",defaultMessage:"Show password"}:{id:"Auth.form.password.hide-password",defaultMessage:"Hide password"})},h?e.createElement(u.Eye,null):e.createElement(u.EyeStriked,null))}))))),e.createElement(t.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},e.createElement(t.Stack,{spacing:4},e.createElement(t.Stack,{spacing:1},e.createElement(t.Typography,{variant:"delta",as:"h2"},a({id:"Settings.profile.form.section.experience.title",defaultMessage:"Experience"})),e.createElement(t.Typography,null,a({id:"Settings.profile.form.section.experience.interfaceLanguageHelp",defaultMessage:"Preference changes will apply only to you. More information is available {here}."},{here:e.createElement(W,{target:"_blank",rel:"noopener noreferrer",href:"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales"},a({id:"Settings.profile.form.section.experience.here",defaultMessage:"here"}))}))),e.createElement(t.Grid,{gap:5},e.createElement(t.GridItem,{s:12,col:6},e.createElement(t.Select,{label:a({id:"Settings.profile.form.section.experience.interfaceLanguage",defaultMessage:"Interface language"}),placeholder:a({id:"global.select",defaultMessage:"Select"}),hint:a({id:"Settings.profile.form.section.experience.interfaceLanguage.hint",defaultMessage:"This will only display your own interface in the chosen language."}),onClear:()=>{c({target:{name:"preferedLanguage",value:null}})},clearLabel:a({id:"Settings.profile.form.section.experience.clear.select",defaultMessage:"Clear the interface language selected"}),value:i.preferedLanguage,onChange:s=>{c({target:{name:"preferedLanguage",value:s}})}},Object.keys(k).map(s=>{const p=k[s];return e.createElement(t.Option,{value:s,key:s},p)}))),e.createElement(t.GridItem,{s:12,col:6},e.createElement(t.Select,{label:a({id:"Settings.profile.form.section.experience.mode.label",defaultMessage:"Interface mode"}),placeholder:a({id:"components.Select.placeholder",defaultMessage:"Select"}),hint:a({id:"Settings.profile.form.section.experience.mode.hint",defaultMessage:"Displays your interface in the chosen mode."}),value:i.currentTheme,onChange:s=>{c({target:{name:"currentTheme",value:s}})}},de.map(s=>e.createElement(t.Option,{value:s,key:s},a({id:"Settings.profile.form.section.experience.mode.option-label",defaultMessage:"{name} mode"},{name:a({id:s,defaultMessage:S()(s)})}))))))))))))))}},1057:function(B,w,n){n.d(w,{YM:function(){return M},Rw:function(){return v}});var e=n(5173),l=n(13478);const o={firstname:e.Z_().trim().required(l.translatedErrors.required),lastname:e.Z_(),email:e.Z_().email(l.translatedErrors.email).lowercase().required(l.translatedErrors.required),username:e.Z_().nullable(),password:e.Z_().min(8,l.translatedErrors.minLength).matches(/[a-z]/,"components.Input.error.contain.lowercase").matches(/[A-Z]/,"components.Input.error.contain.uppercase").matches(/\d/,"components.Input.error.contain.number"),confirmPassword:e.Z_().min(8,l.translatedErrors.minLength).oneOf([e.iH("password"),null],"components.Input.error.password.noMatch").when("password",(f,m)=>f?m.required(l.translatedErrors.required):m)};var v={...o,currentPassword:e.Z_().when(["password","confirmPassword"],(f,m,t)=>f||m?t.required(l.translatedErrors.required):t),preferedLanguage:e.Z_().nullable()},S={roles:e.IX().min(1,l.translatedErrors.required).required(l.translatedErrors.required)},M=e.Ry().shape({...o,isActive:e.Xg(),...S})}}]);