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

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 (171) hide show
  1. package/admin/src/content-manager/components/ComponentInitializer/index.js +1 -1
  2. package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +3 -31
  3. package/admin/src/content-manager/components/EditViewDataManagerProvider/reducer.js +65 -134
  4. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/findAllAndReplace.js +85 -0
  5. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/index.js +1 -2
  6. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/schema.js +7 -1
  7. package/admin/src/content-manager/components/NonRepeatableComponent/index.js +1 -1
  8. package/admin/src/content-manager/components/RelationInput/RelationInput.js +1 -2
  9. package/admin/src/content-manager/components/RelationInputDataManager/RelationInputDataManager.js +39 -33
  10. package/admin/src/content-manager/hooks/useRelation/useRelation.js +2 -2
  11. package/admin/src/content-manager/pages/EditView/Header/index.js +1 -1
  12. package/admin/src/content-manager/utils/createDefaultForm.js +0 -8
  13. package/admin/src/pages/AuthPage/components/Register/index.js +1 -1
  14. package/admin/src/pages/SettingsPage/components/Tokens/FormHead/index.js +1 -0
  15. package/admin/src/pages/SettingsPage/components/Tokens/Table/index.js +2 -2
  16. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/schema.js +1 -1
  17. package/admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js +266 -4
  18. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/index.js +1 -2
  19. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/index.js +2 -3
  20. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/index.js +2 -3
  21. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/index.js +2 -3
  22. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/index.js +9 -4
  23. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/index.js +3 -7
  24. package/admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js +303 -124
  25. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js +1 -1
  26. package/admin/src/pages/SettingsPage/utils/defaultRoutes.js +18 -10
  27. package/admin/src/translations/ca.json +7 -13
  28. package/admin/src/translations/de.json +0 -6
  29. package/admin/src/translations/dk.json +0 -6
  30. package/admin/src/translations/en.json +0 -6
  31. package/admin/src/translations/es.json +0 -6
  32. package/admin/src/translations/eu.json +165 -171
  33. package/admin/src/translations/fr.json +0 -6
  34. package/admin/src/translations/gu.json +0 -6
  35. package/admin/src/translations/he.json +0 -6
  36. package/admin/src/translations/hi.json +0 -6
  37. package/admin/src/translations/hu.json +0 -6
  38. package/admin/src/translations/id.json +0 -6
  39. package/admin/src/translations/it.json +0 -6
  40. package/admin/src/translations/ja.json +0 -6
  41. package/admin/src/translations/ko.json +0 -6
  42. package/admin/src/translations/ml.json +0 -6
  43. package/admin/src/translations/nl.json +0 -6
  44. package/admin/src/translations/no.json +0 -6
  45. package/admin/src/translations/pl.json +0 -6
  46. package/admin/src/translations/pt-BR.json +0 -6
  47. package/admin/src/translations/ru.json +0 -6
  48. package/admin/src/translations/sa.json +0 -6
  49. package/admin/src/translations/sk.json +0 -6
  50. package/admin/src/translations/sv.json +0 -6
  51. package/admin/src/translations/th.json +0 -6
  52. package/admin/src/translations/tr.json +0 -6
  53. package/admin/src/translations/zh-Hans.json +0 -6
  54. package/admin/src/translations/zh.json +0 -6
  55. package/build/{4649.daa290f6.chunk.js → 4649.33220ac3.chunk.js} +2 -2
  56. package/build/{6891.ef7464be.chunk.js → 7112.2bf13da3.chunk.js} +6 -6
  57. package/build/7259.3675c199.chunk.js +1 -0
  58. package/build/{3094.1cac9087.chunk.js → 8580.0aa21940.chunk.js} +5 -5
  59. package/build/{Admin-authenticatedApp.884faefa.chunk.js → Admin-authenticatedApp.1f2fd68f.chunk.js} +4 -4
  60. package/build/Admin_settingsPage.caf3b9ab.chunk.js +9 -0
  61. package/build/{admin-app.d9d96db4.chunk.js → admin-app.4b313104.chunk.js} +2 -2
  62. package/build/admin-edit-roles-page.3b196317.chunk.js +216 -0
  63. package/build/{admin-edit-users.48031e30.chunk.js → admin-edit-users.af3b0f15.chunk.js} +1 -1
  64. package/build/admin-roles-list.0ad504a7.chunk.js +2 -0
  65. package/build/{admin-users.77b4188a.chunk.js → admin-users.af8c3123.chunk.js} +1 -1
  66. package/build/api-tokens-list-page.93f24348.chunk.js +16 -0
  67. package/build/ca-json.43e14418.chunk.js +1 -0
  68. package/build/content-manager.84afc839.chunk.js +1139 -0
  69. package/build/{content-type-builder.cdd117c3.chunk.js → content-type-builder.55dac849.chunk.js} +1 -1
  70. package/build/de-json.fcac7381.chunk.js +1 -0
  71. package/build/dk-json.e34cad0d.chunk.js +1 -0
  72. package/build/{en-json.e688dfe2.chunk.js → en-json.01a88a30.chunk.js} +1 -1
  73. package/build/es-json.715b6fd8.chunk.js +1 -0
  74. package/build/eu-json.fb17c8f9.chunk.js +1 -0
  75. package/build/fr-json.f66c3211.chunk.js +1 -0
  76. package/build/gu-json.4d667d0c.chunk.js +1 -0
  77. package/build/{he-json.f0de8cdb.chunk.js → he-json.3cf0b48a.chunk.js} +1 -1
  78. package/build/{hi-json.14a17920.chunk.js → hi-json.323be97d.chunk.js} +1 -1
  79. package/build/{hu-json.33172d09.chunk.js → hu-json.fe71e6c8.chunk.js} +1 -1
  80. package/build/id-json.41e07c46.chunk.js +1 -0
  81. package/build/index.html +1 -1
  82. package/build/it-json.bfe27ed8.chunk.js +1 -0
  83. package/build/ja-json.81b6d1e3.chunk.js +1 -0
  84. package/build/ko-json.4539f4ba.chunk.js +1 -0
  85. package/build/main.5b92c1d6.js +3809 -0
  86. package/build/{ml-json.3e69969b.chunk.js → ml-json.8988e374.chunk.js} +1 -1
  87. package/build/{nl-json.641782d5.chunk.js → nl-json.98345913.chunk.js} +1 -1
  88. package/build/{no-json.9b3cd181.chunk.js → no-json.19a2dbfa.chunk.js} +1 -1
  89. package/build/pl-json.59a5dab3.chunk.js +1 -0
  90. package/build/pt-BR-json.9410688b.chunk.js +1 -0
  91. package/build/{ru-json.c4a4f50b.chunk.js → ru-json.6a01cea6.chunk.js} +1 -1
  92. package/build/runtime~main.a3892432.js +2 -0
  93. package/build/sa-json.6359a11c.chunk.js +1 -0
  94. package/build/sk-json.2374f129.chunk.js +1 -0
  95. package/build/{sv-json.207afc0d.chunk.js → sv-json.ae6e71ea.chunk.js} +1 -1
  96. package/build/th-json.5f659396.chunk.js +1 -0
  97. package/build/{tr-json.f1a0d19d.chunk.js → tr-json.bac5dbd3.chunk.js} +1 -1
  98. package/build/transfer-tokens-list-page.ce37354b.chunk.js +16 -0
  99. package/build/zh-Hans-json.4c9706a6.chunk.js +1 -0
  100. package/build/{zh-json.085a34f4.chunk.js → zh-json.3529f1e5.chunk.js} +1 -1
  101. package/ee/server/controllers/index.js +0 -1
  102. package/ee/server/controllers/role.js +0 -39
  103. package/ee/server/controllers/user.js +1 -35
  104. package/ee/server/routes/index.js +0 -49
  105. package/ee/server/validation/role.js +28 -20
  106. package/package.json +13 -13
  107. package/server/bootstrap.js +0 -1
  108. package/server/controllers/api-token.js +4 -2
  109. package/server/controllers/permission.js +2 -4
  110. package/server/controllers/role.js +70 -23
  111. package/server/controllers/transfer/runner.js +5 -3
  112. package/server/domain/user.js +3 -0
  113. package/server/routes/roles.js +48 -0
  114. package/server/services/permission/permissions-manager/sanitize.js +2 -2
  115. package/server/services/permission/queries.js +1 -74
  116. package/server/strategies/data-transfer.js +3 -1
  117. package/server/validation/permission.js +1 -82
  118. package/server/validation/role.js +44 -0
  119. package/admin/src/assets/images/hot-air-balloon.png +0 -0
  120. package/admin/src/assets/images/upgrade-details.png +0 -0
  121. package/admin/src/components/UpgradePlanModal/index.js +0 -123
  122. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/findLeafByPathAndReplace.js +0 -51
  123. package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/recursivelyFindPathsBasedOnCondition.js +0 -79
  124. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/utils/constants.js +0 -3
  125. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/constants.js +0 -3
  126. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/constants.js +0 -3
  127. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/utils/constants.js +0 -3
  128. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/constants.js +0 -3
  129. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/constants.js +0 -3
  130. package/build/617f9c948fa79e6d73bd.png +0 -0
  131. package/build/6d21938306785f176538.png +0 -0
  132. package/build/7259.63e91b59.chunk.js +0 -1
  133. package/build/Admin_settingsPage.6814a96e.chunk.js +0 -177
  134. package/build/admin-edit-roles-page.bf130aaf.chunk.js +0 -1
  135. package/build/api-tokens-list-page.149903c8.chunk.js +0 -16
  136. package/build/ca-json.59c4502c.chunk.js +0 -1
  137. package/build/content-manager.d792c194.chunk.js +0 -1139
  138. package/build/de-json.dbc2cf1b.chunk.js +0 -1
  139. package/build/dk-json.52f67b15.chunk.js +0 -1
  140. package/build/es-json.c40c57dd.chunk.js +0 -1
  141. package/build/eu-json.6702a0d2.chunk.js +0 -1
  142. package/build/fr-json.ea9ec573.chunk.js +0 -1
  143. package/build/gu-json.94f0d242.chunk.js +0 -1
  144. package/build/id-json.e0d83d41.chunk.js +0 -1
  145. package/build/it-json.8be59205.chunk.js +0 -1
  146. package/build/ja-json.3008b720.chunk.js +0 -1
  147. package/build/ko-json.7d2f95b1.chunk.js +0 -1
  148. package/build/main.64fe0c37.js +0 -3928
  149. package/build/pl-json.05814145.chunk.js +0 -1
  150. package/build/pt-BR-json.d72350de.chunk.js +0 -1
  151. package/build/runtime~main.684b5fed.js +0 -2
  152. package/build/sa-json.e5e7ccaf.chunk.js +0 -1
  153. package/build/sk-json.3529b8aa.chunk.js +0 -1
  154. package/build/th-json.f664b96d.chunk.js +0 -1
  155. package/build/transfer-tokens-list-page.c6f8039a.chunk.js +0 -16
  156. package/build/zh-Hans-json.993d085f.chunk.js +0 -1
  157. package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +0 -270
  158. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/utils/constants.js +0 -3
  159. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ConditionsSelect/MenuList/utils/constants.js +0 -3
  160. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/constants.js +0 -3
  161. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/constants.js +0 -3
  162. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/utils/constants.js +0 -3
  163. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/constants.js +0 -3
  164. package/ee/admin/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/constants.js +0 -3
  165. package/ee/admin/pages/SettingsPage/pages/Roles/ListPage/index.js +0 -376
  166. package/ee/admin/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js +0 -12
  167. package/ee/server/controllers/permission.js +0 -21
  168. package/ee/server/validation/permission.js +0 -8
  169. package/server/domain/role.js +0 -29
  170. /package/{ee/admin → admin/src}/pages/SettingsPage/pages/Roles/CreatePage/utils/schema.js +0 -0
  171. /package/{ee/admin → admin/src}/pages/SettingsPage/pages/Roles/ListPage/reducer.js +0 -0
@@ -1,123 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import styled from 'styled-components';
4
- import { useIntl } from 'react-intl';
5
- import { Portal, FocusTrap, IconButton, Box, Flex, Typography } from '@strapi/design-system';
6
- import { LinkButton } from '@strapi/design-system/v2';
7
- import { ExternalLink, Cross } from '@strapi/icons';
8
- import { setHexOpacity, useLockScroll } from '@strapi/helper-plugin';
9
- import AirBalloon from '../../assets/images/hot-air-balloon.png';
10
- import BigArrow from '../../assets/images/upgrade-details.png';
11
-
12
- const UpgradeWrapper = styled.div`
13
- position: absolute;
14
- z-index: 3;
15
- inset: 0;
16
- background: ${({ theme }) => setHexOpacity(theme.colors.neutral800, 0.2)};
17
- padding: 0 ${({ theme }) => theme.spaces[8]};
18
- `;
19
-
20
- const UpgradeContainer = styled(Flex)`
21
- position: relative;
22
- max-width: ${830 / 16}rem;
23
- height: ${415 / 16}rem;
24
- margin: 0 auto;
25
- overflow: hidden;
26
- margin-top: 10%;
27
- padding-left: ${64 / 16}rem;
28
-
29
- img:first-of-type {
30
- position: absolute;
31
- right: 0;
32
- top: 0;
33
- max-width: ${360 / 16}rem;
34
- }
35
-
36
- img:not(:first-of-type) {
37
- width: ${130 / 16}rem;
38
- margin-left: 12%;
39
- margin-right: ${20 / 16}rem;
40
- z-index: 0;
41
- }
42
- `;
43
-
44
- const FlexStart = styled(Flex)`
45
- max-width: ${400 / 16}rem;
46
- z-index: 0;
47
- `;
48
-
49
- const CloseButtonContainer = styled(Box)`
50
- position: absolute;
51
- right: ${({ theme }) => theme.spaces[4]};
52
- top: ${({ theme }) => theme.spaces[4]};
53
- `;
54
-
55
- const UpgradePlanModal = ({ onClose, isOpen }) => {
56
- useLockScroll(isOpen);
57
- const { formatMessage } = useIntl();
58
-
59
- if (!isOpen) {
60
- return null;
61
- }
62
-
63
- return (
64
- <Portal>
65
- <UpgradeWrapper onClick={onClose}>
66
- <FocusTrap onEscape={onClose}>
67
- <UpgradeContainer
68
- onClick={(e) => e.stopPropagation()}
69
- aria-labelledby="upgrade-plan"
70
- background="neutral0"
71
- hasRadius
72
- >
73
- <img src={AirBalloon} alt="air-balloon" />
74
- <CloseButtonContainer>
75
- <IconButton onClick={onClose} aria-label="Close" icon={<Cross />} />
76
- </CloseButtonContainer>
77
- <FlexStart direction="column" alignItems="flex-start" gap={6}>
78
- <Typography fontWeight="bold" textColor="primary600">
79
- {formatMessage({
80
- id: 'app.components.UpgradePlanModal.text-ce',
81
- defaultMessage: 'COMMUNITY EDITION',
82
- })}
83
- </Typography>
84
- <Flex direction="column" alignItems="stretch" gap={2}>
85
- <Typography variant="alpha" as="h2" id="upgrade-plan">
86
- {formatMessage({
87
- id: 'app.components.UpgradePlanModal.limit-reached',
88
- defaultMessage: 'You have reached the limit',
89
- })}
90
- </Typography>
91
- <Typography>
92
- {formatMessage({
93
- id: 'app.components.UpgradePlanModal.text-power',
94
- defaultMessage:
95
- 'Unlock the full power of Strapi by upgrading your plan to the Enterprise Edition',
96
- })}
97
- </Typography>
98
- </Flex>
99
- <LinkButton
100
- href="https://strapi.io/pricing-self-hosted"
101
- isExternal
102
- endIcon={<ExternalLink />}
103
- >
104
- {formatMessage({
105
- id: 'app.components.UpgradePlanModal.button',
106
- defaultMessage: 'Learn more',
107
- })}
108
- </LinkButton>
109
- </FlexStart>
110
- <img src={BigArrow} alt="upgrade-arrow" />
111
- </UpgradeContainer>
112
- </FocusTrap>
113
- </UpgradeWrapper>
114
- </Portal>
115
- );
116
- };
117
-
118
- UpgradePlanModal.propTypes = {
119
- onClose: PropTypes.func.isRequired,
120
- isOpen: PropTypes.bool.isRequired,
121
- };
122
-
123
- export default UpgradePlanModal;
@@ -1,51 +0,0 @@
1
- import set from 'lodash/set';
2
-
3
- /**
4
- * @param {string} endpath – the final path that you're looking to replace
5
- * @returns {function} findLeafReducer – a function that will be used in the reduce
6
- */
7
- export const findLeafByPathAndReplace = (endpath, replaceWith) => {
8
- /**
9
- * @param {object} acc – the data tree
10
- * @param {*} curr – string, this _could_ be used to index the accumulator
11
- * @param {*} ind - your current index of the array you're reducing
12
- * @returns {object} – the new object with the replaced values
13
- */
14
- const findLeafAndReplace = (acc, curr, ind, currentArr) => {
15
- /**
16
- * Because we're returning the `accumulator[current]` at the bottom
17
- * and some components may not exist at this point, we check if `accumulator`
18
- * exists before trying to access & replace properties.
19
- */
20
- if (!acc) return acc;
21
-
22
- /**
23
- * If this is the last item in the array of paths
24
- * then we assume it's a leaf and we can replace it.
25
- */
26
- if (ind === currentArr.length - 1 && endpath === curr) {
27
- set(acc, curr, replaceWith);
28
-
29
- return acc;
30
- }
31
-
32
- /**
33
- * If the value of the accumulator[current] is an array
34
- * then we need to loop over it and call the reducer again
35
- * this time with each array item being the accumulator.
36
- */
37
- if (Array.isArray(acc[curr])) {
38
- acc[curr].forEach((item) => {
39
- currentArr.slice(ind + 1).reduce(findLeafAndReplace, item);
40
- });
41
- }
42
-
43
- /**
44
- * accumulator[current]return accumulator[current] instead of the main accumulator,
45
- * this will stop the same keys overwrite the wrong objects
46
- */
47
- return acc[curr];
48
- };
49
-
50
- return findLeafAndReplace;
51
- };
@@ -1,79 +0,0 @@
1
- /**
2
- * @typedef Attribute
3
- * @type { { type: string }}
4
- *
5
- * @typedef Attributes
6
- * @type {{ [key: string]: Attribute }}
7
- */
8
-
9
- /**
10
- * This function will recursively find all the paths in the `currentContentTypeLayout.attributes`
11
- * based on the boolean return of the condition e.g. `type === 'relation'`.
12
- *
13
- * It's original use was for the preperation of action items for the INIT_FORM action. It requires
14
- * knowledge of the `components` in the entity, however `components` doesn't change nor does the predicate
15
- * function so we don't need to pass it everytime hence why it's curried.
16
- *
17
- *
18
- * @param {{[key: string]: { attributes: Attributes }}} components
19
- * @param {(value: Attribute) => boolean} predicate
20
- * @returns {(attributes: Attributes) => string[]}
21
- */
22
- const recursivelyFindPathsBasedOnConditionSetup = (components, predicate = () => false) => {
23
- /**
24
- *
25
- * @param {Attributes} attributes
26
- * @returns {string[]}
27
- */
28
- const recursivelyFindPathsBasedOnCondition = (attributes) => {
29
- return Object.entries(attributes).reduce((acc, [key, value]) => {
30
- if (predicate(value)) {
31
- acc = [...acc, key];
32
- }
33
-
34
- if (value.type === 'component') {
35
- const componentAttributes = components[value.component].attributes;
36
-
37
- const attributesInComponent = recursivelyFindPathsBasedOnCondition(componentAttributes);
38
-
39
- const attributesInComponentPaths = attributesInComponent.map((path) => `${key}.${path}`);
40
-
41
- acc = [...acc, attributesInComponentPaths];
42
- } else if (value.type === 'dynamiczone') {
43
- const dynamicComponents = value.components;
44
-
45
- const attributesInDynamicComponents = dynamicComponents
46
- .flatMap((componentName) => {
47
- return recursivelyFindPathsBasedOnCondition({
48
- [componentName]: { type: 'component', component: componentName },
49
- /**
50
- * DynamicZones are an array of components, therefore the componentName shouldn't
51
- * be part of the path because it's not a property of the component.
52
- *
53
- * e.g. { dynamic_zone: [{ __component: 'basic.simple', id: 36, my_name: null, categories: { count: 1, } }] }
54
- * where the path to `id` is `dynamic_zone.id` and not `dynamic_zone.basic.simple.id`
55
- *
56
- * NOTE: we don't need to know the path to the `array` because it's about data shape not about the actual data
57
- */
58
- }).map((path) => {
59
- return path.split(`${componentName}.`)[1];
60
- });
61
- })
62
- /**
63
- * We filter because this will give you `dynamiczone.undefined` because the dynamic_zone component
64
- * is not required to be returned in this circumstance.
65
- */
66
- .filter((path) => Boolean(path))
67
- .map((path) => `${key}.${path}`);
68
-
69
- acc = [...acc, attributesInDynamicComponents];
70
- }
71
-
72
- return acc.flat();
73
- }, []);
74
- };
75
-
76
- return recursivelyFindPathsBasedOnCondition;
77
- };
78
-
79
- export { recursivelyFindPathsBasedOnConditionSetup as recursivelyFindPathsBasedOnCondition };
@@ -1,3 +0,0 @@
1
- const IS_DISABLED = true;
2
-
3
- export default IS_DISABLED;
@@ -1,3 +0,0 @@
1
- const IS_DISABLED = true;
2
-
3
- export default IS_DISABLED;
@@ -1,3 +0,0 @@
1
- const IS_DISABLED = true;
2
-
3
- export default IS_DISABLED;
@@ -1,3 +0,0 @@
1
- const IS_DISABLED = true;
2
-
3
- export default IS_DISABLED;
Binary file
Binary file
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[7259],{30493:function(k,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)(),S=F=>{m({...n,accessKey:F})};return t.createElement(r.HeaderLayout,{title:n?.name||D(d),primaryAction:M?t.createElement(r.Flex,{gap:2},R&&n?.id&&t.createElement(f,{backUrl:A,onRegenerate:S,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:S,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(k,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(k,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(k,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(k,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(k,E,e){e.d(E,{Z:function(){return t},f:function(){return u}});const t="api-token",u="transfer-token"},37944:function(k,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(k,E,e){e.d(E,{Z:function(){return G}});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:h}=(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"},h({id:"global.save",defaultMessage:"Save"})),title:C||h({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:h,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.Flex,{direction:"column",alignItems:"stretch",gap: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:h})),t.createElement(r.GridItem,{key:"description",col:6,xs:12},t.createElement(A.Z,{errors:C,values:I,canEditInputs:L,onChange:h})),t.createElement(r.GridItem,{key:"lifespan",col:6,xs:12},t.createElement(O.Z,{isCreating:B,errors:C,values:I,onChange:h,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 S=D,F=e(93682),V=e(30493),W=e(68774);const $="Name already taken";var G=()=>{(0,i.useFocusWhenNavigate)();const{formatMessage:C}=(0,u.useIntl)(),{lockApp:h,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:H}=(0,i.useTracking)(),N=(0,t.useRef)(H),{setCurrentStep:z}=(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)(()=>{N.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,K)=>{N.current(v?"willCreateToken":"willEditToken",{tokenType:W.f}),h();const Z=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:Z,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}),z("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"})}),N.current(v?"didCreateToken":"didEditToken",{type:T?.type,tokenType:W.f})}catch(P){const te=(0,l.Iz)(P.response.data);K.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,K)=>ee(y,K)},({errors:y,handleChange:K,isSubmitting:Z,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:Z,regenerateUrl:"/admin/transfer/tokens/"}),t.createElement(r.ContentLayout,null,t.createElement(r.Flex,{direction:"column",alignItems:"stretch",gap:6},Boolean(T?.name)&&t.createElement(F.Z,{token:T?.accessKey,tokenType:W.f}),t.createElement(S,{errors:y,onChange:K,canEditInputs:b,isCreating:v,values:P,transferToken:T}))))))}}}]);