@strapi/admin 4.11.3 → 4.11.5
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.
- package/admin/src/components/AuthenticatedApp/index.js +2 -2
- package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +8 -5
- package/admin/src/content-manager/components/Inputs/index.js +3 -47
- package/admin/src/content-manager/components/RelationInput/RelationInput.js +99 -178
- package/admin/src/content-manager/components/RelationInput/components/Option.js +17 -15
- package/admin/src/content-manager/components/RelationInput/components/RelationList.js +2 -2
- package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +34 -37
- package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +0 -27
- package/admin/src/content-manager/pages/ListView/components/TableRows/index.js +93 -14
- package/admin/src/content-manager/pages/ListView/index.js +65 -47
- package/admin/src/content-manager/pages/ListView/utils/buildValidGetParams.js +30 -0
- package/admin/src/content-manager/pages/ListView/utils/index.js +1 -1
- package/admin/src/hooks/useAdminUsers/useAdminUsers.js +3 -3
- package/admin/src/hooks/useEnterprise/useEnterprise.js +4 -4
- package/admin/src/hooks/useSettingsMenu/index.js +35 -21
- package/admin/src/pages/App/index.js +0 -3
- package/admin/src/pages/AuthPage/components/Register/index.js +5 -1
- package/admin/src/pages/ProfilePage/index.js +12 -12
- package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +13 -11
- package/admin/src/pages/SettingsPage/components/Tokens/Table/index.js +15 -1
- package/admin/src/pages/SettingsPage/components/Tokens/TokenBox/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Roles/ProtectedEditPage/index.js +4 -10
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +2 -2
- package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js +11 -5
- package/admin/src/translations/ca.json +1 -0
- package/admin/src/translations/en.json +4 -1
- package/admin/src/translations/es.json +5 -0
- package/admin/src/translations/fr.json +1 -0
- package/admin/src/translations/zh-Hans.json +1 -1
- package/build/2799.cf9b491f.chunk.js +1 -0
- package/build/539.865446c0.chunk.js +1 -0
- package/build/{5542.64b623c9.chunk.js → 5542.c62d0daf.chunk.js} +1 -1
- package/build/{5563.86f9aa9c.chunk.js → 5563.27e2de0c.chunk.js} +3 -3
- package/build/5932.f8be7e31.chunk.js +1 -0
- package/build/7259.0e25ab5d.chunk.js +1 -0
- package/build/{6405.27e1bee5.chunk.js → 970.89601f27.chunk.js} +2 -2
- package/build/{9932.7e2b71de.chunk.js → 9932.9f3790a5.chunk.js} +81 -81
- package/build/9944.29289a16.chunk.js +26 -0
- package/build/Admin-authenticatedApp.7f04c595.chunk.js +79 -0
- package/build/{Admin_profilePage.2131eb68.chunk.js → Admin_profilePage.0adb571e.chunk.js} +2 -2
- package/build/{Admin_settingsPage.4069bb8a.chunk.js → Admin_settingsPage.36152558.chunk.js} +9 -9
- package/build/admin-app.3ea6009c.chunk.js +61 -0
- package/build/{admin-edit-roles-page.2040034a.chunk.js → admin-edit-roles-page.3fdd6b9d.chunk.js} +11 -11
- package/build/admin-edit-users.78552758.chunk.js +10 -0
- package/build/admin-users.c23322fc.chunk.js +11 -0
- package/build/api-tokens-list-page.a103f526.chunk.js +16 -0
- package/build/audit-logs-settings-page.37fe915c.chunk.js +1 -0
- package/build/ca-json.1fed5d8b.chunk.js +1 -0
- package/build/content-manager.552c7418.chunk.js +1094 -0
- package/build/{content-type-builder-list-view.0c3ceb4e.chunk.js → content-type-builder-list-view.82cfadc0.chunk.js} +7 -7
- package/build/content-type-builder.238687f9.chunk.js +166 -0
- package/build/{email-settings-page.6b38222d.chunk.js → email-settings-page.45695daa.chunk.js} +1 -1
- package/build/en-json.fb9f6ddd.chunk.js +1 -0
- package/build/es-json.42096084.chunk.js +1 -0
- package/build/fr-json.69789980.chunk.js +1 -0
- package/build/{i18n-settings-page.ff863f20.chunk.js → i18n-settings-page.29308d0b.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/main.3d752c03.js +2927 -0
- package/build/runtime~main.87232977.js +2 -0
- package/build/sso-settings-page.0cdb96a6.chunk.js +1 -0
- package/build/transfer-tokens-list-page.7237443d.chunk.js +16 -0
- package/build/{upload-settings.43cf16cd.chunk.js → upload-settings.cb6c14c3.chunk.js} +1 -1
- package/build/{upload.72f8f8fc.chunk.js → upload.7e629643.chunk.js} +2 -2
- package/build/users-advanced-settings-page.750b1f76.chunk.js +9 -0
- package/build/{users-email-settings-page.33359797.chunk.js → users-email-settings-page.e9bcd865.chunk.js} +1 -1
- package/build/{users-providers-settings-page.1e7a4a71.chunk.js → users-providers-settings-page.a94253e9.chunk.js} +1 -1
- package/build/{users-roles-settings-page.235378b6.chunk.js → users-roles-settings-page.d286426a.chunk.js} +5 -5
- package/build/webhook-edit-page.77ef4f1a.chunk.js +33 -0
- package/build/{zh-Hans-json.4cfef87d.chunk.js → zh-Hans-json.fada6f40.chunk.js} +1 -1
- package/ee/admin/content-manager/{components/DynamicTable/CellContent/ReviewWorkflowsStage → pages/ListView/ReviewWorkflowsColumn}/ReviewWorkflowsStageEE.js +7 -2
- package/ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn/constants.js +24 -0
- package/ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn/index.js +1 -0
- package/ee/admin/hooks/useLicenseLimitNotification/index.js +17 -6
- package/ee/admin/hooks/useLicenseLimits/index.js +1 -32
- package/ee/admin/hooks/useLicenseLimits/useLicenseLimits.js +44 -0
- package/ee/admin/pages/SettingsPage/pages/ApplicationInfosPage/components/AdminSeatInfo/index.js +6 -4
- package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useAuditLogsData.js +6 -4
- package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/index.js +4 -9
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.js +3 -5
- package/ee/admin/pages/SettingsPage/pages/SingleSignOn/index.js +4 -9
- package/ee/admin/pages/SettingsPage/pages/Users/ListPage/CreateAction/index.js +9 -2
- package/ee/server/services/review-workflows/entity-service-decorator.js +20 -11
- package/package.json +14 -15
- package/server/content-types/User.js +10 -0
- package/server/strategies/api-token.js +9 -5
- package/server/strategies/data-transfer.js +9 -5
- package/admin/src/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js +0 -2
- package/admin/src/content-manager/components/RelationInput/components/Relation.js +0 -53
- package/admin/src/content-manager/pages/ListView/utils/buildQueryString.js +0 -36
- package/admin/src/content-manager/pages/ListView/utils/createPluginsFilter.js +0 -4
- package/admin/src/pages/App/utils/index.js +0 -3
- package/admin/src/pages/App/utils/unique-identifier.js +0 -12
- package/build/1799.84268ad3.chunk.js +0 -33
- package/build/5932.6a23b88c.chunk.js +0 -1
- package/build/7259.fb69d4bf.chunk.js +0 -1
- package/build/Admin-authenticatedApp.69855f1b.chunk.js +0 -79
- package/build/admin-app.fea867af.chunk.js +0 -61
- package/build/admin-edit-users.53e4290a.chunk.js +0 -10
- package/build/admin-users.3b12dca2.chunk.js +0 -11
- package/build/api-tokens-list-page.201fb67a.chunk.js +0 -16
- package/build/audit-logs-settings-page.b07ad202.chunk.js +0 -1
- package/build/ca-json.43e14418.chunk.js +0 -1
- package/build/content-manager.66cec770.chunk.js +0 -1094
- package/build/content-type-builder.e1b6d13b.chunk.js +0 -166
- package/build/en-json.f5fa476a.chunk.js +0 -1
- package/build/es-json.715b6fd8.chunk.js +0 -1
- package/build/fr-json.73494bf5.chunk.js +0 -1
- package/build/main.83edb3fc.js +0 -2926
- package/build/runtime~main.20c3cac6.js +0 -2
- package/build/sso-settings-page.35b67909.chunk.js +0 -1
- package/build/transfer-tokens-list-page.217573c3.chunk.js +0 -16
- package/build/users-advanced-settings-page.1911adf5.chunk.js +0 -9
- package/build/webhook-edit-page.1ee02c4b.chunk.js +0 -33
- package/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/getTableColumn.js +0 -58
- package/ee/admin/content-manager/components/DynamicTable/CellContent/ReviewWorkflowsStage/index.js +0 -3
|
@@ -9,7 +9,7 @@ function isEnterprise() {
|
|
|
9
9
|
export function useEnterprise(
|
|
10
10
|
ceData,
|
|
11
11
|
eeCallback,
|
|
12
|
-
{ defaultValue = null, combine = (ceData, eeData) => eeData } = {}
|
|
12
|
+
{ defaultValue = null, combine = (ceData, eeData) => eeData, enabled = true } = {}
|
|
13
13
|
) {
|
|
14
14
|
const eeCallbackRef = useCallbackRef(eeCallback);
|
|
15
15
|
const combineCallbackRef = useCallbackRef(combine);
|
|
@@ -17,7 +17,7 @@ export function useEnterprise(
|
|
|
17
17
|
// We have to use a nested object here, because functions (e.g. Components)
|
|
18
18
|
// can not be stored as value directly
|
|
19
19
|
const [{ data }, setData] = React.useState({
|
|
20
|
-
data: isEnterprise() ? defaultValue : ceData,
|
|
20
|
+
data: isEnterprise() && enabled ? defaultValue : ceData,
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
React.useEffect(() => {
|
|
@@ -27,10 +27,10 @@ export function useEnterprise(
|
|
|
27
27
|
setData({ data: combineCallbackRef(ceData, eeData) });
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
if (isEnterprise()) {
|
|
30
|
+
if (isEnterprise() && enabled) {
|
|
31
31
|
importEE();
|
|
32
32
|
}
|
|
33
|
-
}, [ceData, eeCallbackRef, combineCallbackRef]);
|
|
33
|
+
}, [ceData, eeCallbackRef, combineCallbackRef, enabled]);
|
|
34
34
|
|
|
35
35
|
return data;
|
|
36
36
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react';
|
|
1
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
2
2
|
|
|
3
3
|
import { hasPermissions, useRBACProvider, useStrapiApp, useAppInfo } from '@strapi/helper-plugin';
|
|
4
4
|
import { useSelector } from 'react-redux';
|
|
@@ -19,25 +19,15 @@ const useSettingsMenu = () => {
|
|
|
19
19
|
const { shouldUpdateStrapi } = useAppInfo();
|
|
20
20
|
const { settings } = useStrapiApp();
|
|
21
21
|
const permissions = useSelector(selectAdminPermissions);
|
|
22
|
+
|
|
22
23
|
const { global: globalLinks, admin: adminLinks } = useEnterprise(
|
|
23
24
|
LINKS_CE,
|
|
24
25
|
async () => (await import('../../../../ee/admin/hooks/useSettingsMenu/constants')).LINKS_EE,
|
|
25
26
|
{
|
|
26
27
|
combine(ceLinks, eeLinks) {
|
|
27
|
-
function addPermissions(link) {
|
|
28
|
-
if (!link.id) {
|
|
29
|
-
throw new Error('The settings menu item must have an id attribute.');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
...link,
|
|
34
|
-
permissions: permissions.settings?.[link.id]?.main,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
28
|
return {
|
|
39
|
-
admin: [...eeLinks.admin, ...ceLinks.admin]
|
|
40
|
-
global: [...ceLinks.global, ...eeLinks.global]
|
|
29
|
+
admin: [...eeLinks.admin, ...ceLinks.admin],
|
|
30
|
+
global: [...ceLinks.global, ...eeLinks.global],
|
|
41
31
|
};
|
|
42
32
|
},
|
|
43
33
|
defaultValue: {
|
|
@@ -47,6 +37,20 @@ const useSettingsMenu = () => {
|
|
|
47
37
|
}
|
|
48
38
|
);
|
|
49
39
|
|
|
40
|
+
const addPermissions = useCallback(
|
|
41
|
+
(link) => {
|
|
42
|
+
if (!link.id) {
|
|
43
|
+
throw new Error('The settings menu item must have an id attribute.');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
...link,
|
|
48
|
+
permissions: permissions.settings?.[link.id]?.main,
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
[permissions.settings]
|
|
52
|
+
);
|
|
53
|
+
|
|
50
54
|
useEffect(() => {
|
|
51
55
|
const getData = async () => {
|
|
52
56
|
const buildMenuPermissions = (sections) =>
|
|
@@ -86,26 +90,36 @@ const useSettingsMenu = () => {
|
|
|
86
90
|
};
|
|
87
91
|
|
|
88
92
|
const { global, ...otherSections } = settings;
|
|
93
|
+
|
|
89
94
|
const sections = formatLinks([
|
|
90
95
|
{
|
|
91
96
|
...settings.global,
|
|
92
|
-
links: sortLinks([...settings.global.links, ...globalLinks]).map(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
97
|
+
links: sortLinks([...settings.global.links, ...globalLinks.map(addPermissions)]).map(
|
|
98
|
+
(link) => ({
|
|
99
|
+
...link,
|
|
100
|
+
hasNotification: link.id === '000-application-infos' && shouldUpdateStrapi,
|
|
101
|
+
})
|
|
102
|
+
),
|
|
96
103
|
},
|
|
97
104
|
{
|
|
98
105
|
id: 'permissions',
|
|
99
106
|
intlLabel: { id: 'Settings.permissions', defaultMessage: 'Administration Panel' },
|
|
100
|
-
links: adminLinks,
|
|
107
|
+
links: adminLinks.map(addPermissions),
|
|
101
108
|
},
|
|
102
109
|
...Object.values(otherSections),
|
|
103
110
|
]);
|
|
104
111
|
|
|
105
112
|
getData();
|
|
106
|
-
}, [adminLinks, globalLinks, userPermissions, settings, shouldUpdateStrapi]);
|
|
113
|
+
}, [adminLinks, globalLinks, userPermissions, settings, shouldUpdateStrapi, addPermissions]);
|
|
114
|
+
|
|
115
|
+
const filterMenu = (menuItem) => {
|
|
116
|
+
return {
|
|
117
|
+
...menuItem,
|
|
118
|
+
links: menuItem.links.filter((link) => link.isDisplayed),
|
|
119
|
+
};
|
|
120
|
+
};
|
|
107
121
|
|
|
108
|
-
return { isLoading, menu };
|
|
122
|
+
return { isLoading, menu: menu.map(filterMenu) };
|
|
109
123
|
};
|
|
110
124
|
|
|
111
125
|
export default useSettingsMenu;
|
|
@@ -31,7 +31,6 @@ import NotFoundPage from '../NotFoundPage';
|
|
|
31
31
|
import UseCasePage from '../UseCasePage';
|
|
32
32
|
|
|
33
33
|
import { ROUTES_CE, SET_ADMIN_PERMISSIONS } from './constants';
|
|
34
|
-
import { getUID } from './utils';
|
|
35
34
|
|
|
36
35
|
const AuthenticatedApp = lazy(() =>
|
|
37
36
|
import(/* webpackChunkName: "Admin-authenticatedApp" */ '../../components/AuthenticatedApp')
|
|
@@ -113,8 +112,6 @@ function App() {
|
|
|
113
112
|
authLogo: prefixFileUrlWithBackendUrl(authLogo),
|
|
114
113
|
});
|
|
115
114
|
|
|
116
|
-
const deviceId = await getUID();
|
|
117
|
-
|
|
118
115
|
if (uuid) {
|
|
119
116
|
const {
|
|
120
117
|
data: { data: properties },
|
|
@@ -64,7 +64,11 @@ const Register = ({ authType, fieldsToDisable, noSignin, onSubmit, schema }) =>
|
|
|
64
64
|
try {
|
|
65
65
|
const {
|
|
66
66
|
data: { data },
|
|
67
|
-
} = await get(`/admin/registration-info
|
|
67
|
+
} = await get(`/admin/registration-info`, {
|
|
68
|
+
params: {
|
|
69
|
+
registrationToken,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
68
72
|
|
|
69
73
|
if (data) {
|
|
70
74
|
setUserInfo(data);
|
|
@@ -77,19 +77,14 @@ const ProfilePage = () => {
|
|
|
77
77
|
const { isLoading: isLoadingSSO, data: dataSSO } = useQuery(
|
|
78
78
|
['providers', 'isSSOLocked'],
|
|
79
79
|
async () => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
} = await get('/admin/providers/isSSOLocked');
|
|
80
|
+
const {
|
|
81
|
+
data: { data },
|
|
82
|
+
} = await get('/admin/providers/isSSOLocked');
|
|
84
83
|
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
isSSOLocked: false,
|
|
90
|
-
};
|
|
84
|
+
return data;
|
|
91
85
|
},
|
|
92
86
|
{
|
|
87
|
+
enabled: window.strapi.isEE && window.strapi.features.isEnabled('sso'),
|
|
93
88
|
onError() {
|
|
94
89
|
toggleNotification({
|
|
95
90
|
type: 'warning',
|
|
@@ -178,7 +173,7 @@ const ProfilePage = () => {
|
|
|
178
173
|
);
|
|
179
174
|
}
|
|
180
175
|
|
|
181
|
-
const hasLockedRole = dataSSO?.isSSOLocked;
|
|
176
|
+
const hasLockedRole = dataSSO?.isSSOLocked ?? false;
|
|
182
177
|
const { email, firstname, lastname, username, preferedLanguage } = data;
|
|
183
178
|
const initialData = { email, firstname, lastname, username, preferedLanguage, currentTheme };
|
|
184
179
|
|
|
@@ -203,7 +198,12 @@ const ProfilePage = () => {
|
|
|
203
198
|
<HeaderLayout
|
|
204
199
|
title={data.username || getFullName(data.firstname, data.lastname)}
|
|
205
200
|
primaryAction={
|
|
206
|
-
<Button
|
|
201
|
+
<Button
|
|
202
|
+
startIcon={<Check />}
|
|
203
|
+
loading={isSubmitting}
|
|
204
|
+
type="submit"
|
|
205
|
+
disabled={!dirty}
|
|
206
|
+
>
|
|
207
207
|
{formatMessage({ id: 'global.save', defaultMessage: 'Save' })}
|
|
208
208
|
</Button>
|
|
209
209
|
}
|
|
@@ -50,17 +50,19 @@ const SettingsNav = ({ menu }) => {
|
|
|
50
50
|
<SubNavSections>
|
|
51
51
|
{sections.map((section) => (
|
|
52
52
|
<SubNavSection key={section.id} label={formatMessage(section.intlLabel)}>
|
|
53
|
-
{section.links.map((link) =>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
53
|
+
{section.links.map((link) => {
|
|
54
|
+
return (
|
|
55
|
+
<SubNavLink
|
|
56
|
+
as={NavLink}
|
|
57
|
+
withBullet={link.hasNotification}
|
|
58
|
+
to={link.to}
|
|
59
|
+
onClick={() => handleClickOnLink(link.to)}
|
|
60
|
+
key={link.id}
|
|
61
|
+
>
|
|
62
|
+
{formatMessage(link.intlLabel)}
|
|
63
|
+
</SubNavLink>
|
|
64
|
+
);
|
|
65
|
+
})}
|
|
64
66
|
</SubNavSection>
|
|
65
67
|
))}
|
|
66
68
|
</SubNavSections>
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
useTracking,
|
|
11
11
|
} from '@strapi/helper-plugin';
|
|
12
12
|
import PropTypes from 'prop-types';
|
|
13
|
+
import { useIntl } from 'react-intl';
|
|
13
14
|
import { useHistory } from 'react-router-dom';
|
|
14
15
|
|
|
15
16
|
import DeleteButton from './DeleteButton';
|
|
@@ -28,6 +29,7 @@ const Table = ({
|
|
|
28
29
|
const { canDelete, canUpdate, canRead } = permissions;
|
|
29
30
|
const withBulkActions = canDelete || canUpdate || canRead;
|
|
30
31
|
const [{ query }] = useQueryParams();
|
|
32
|
+
const { formatMessage } = useIntl();
|
|
31
33
|
const [, sortOrder] = query ? query.sort.split(':') : 'ASC';
|
|
32
34
|
const {
|
|
33
35
|
push,
|
|
@@ -83,7 +85,19 @@ const Table = ({
|
|
|
83
85
|
<Td>
|
|
84
86
|
{token.lastUsedAt && (
|
|
85
87
|
<Typography textColor="neutral800">
|
|
86
|
-
<RelativeTime
|
|
88
|
+
<RelativeTime
|
|
89
|
+
timestamp={new Date(token.lastUsedAt)}
|
|
90
|
+
customIntervals={[
|
|
91
|
+
{
|
|
92
|
+
unit: 'hours',
|
|
93
|
+
threshold: 1,
|
|
94
|
+
text: formatMessage({
|
|
95
|
+
id: 'Settings.apiTokens.lastHour',
|
|
96
|
+
defaultMessage: 'last hour',
|
|
97
|
+
}),
|
|
98
|
+
},
|
|
99
|
+
]}
|
|
100
|
+
/>
|
|
87
101
|
</Typography>
|
|
88
102
|
)}
|
|
89
103
|
</Td>
|
|
@@ -10,19 +10,13 @@ import EditPage from '../EditPage';
|
|
|
10
10
|
const ProtectedEditPage = () => {
|
|
11
11
|
const permissions = useSelector(selectAdminPermissions);
|
|
12
12
|
|
|
13
|
-
// TODO: this is necessary because otherwise we run into an
|
|
14
|
-
// infinite rendering loop
|
|
15
|
-
const permissionsMemoized = React.useMemo(() => {
|
|
16
|
-
return {
|
|
17
|
-
read: permissions.settings.roles.read,
|
|
18
|
-
update: permissions.settings.roles.update,
|
|
19
|
-
};
|
|
20
|
-
}, [permissions.settings.roles.read, permissions.settings.roles.update]);
|
|
21
|
-
|
|
22
13
|
const {
|
|
23
14
|
isLoading,
|
|
24
15
|
allowedActions: { canRead, canUpdate },
|
|
25
|
-
} = useRBAC(
|
|
16
|
+
} = useRBAC({
|
|
17
|
+
read: permissions.settings.roles.read,
|
|
18
|
+
update: permissions.settings.roles.update,
|
|
19
|
+
});
|
|
26
20
|
|
|
27
21
|
if (isLoading) {
|
|
28
22
|
return <LoadingIndicatorPage />;
|
|
@@ -183,13 +183,13 @@ const EditPage = ({ canUpdate }) => {
|
|
|
183
183
|
validateOnChange={false}
|
|
184
184
|
validationSchema={editValidation}
|
|
185
185
|
>
|
|
186
|
-
{({ errors, values, handleChange, isSubmitting }) => {
|
|
186
|
+
{({ errors, values, handleChange, isSubmitting, dirty }) => {
|
|
187
187
|
return (
|
|
188
188
|
<Form>
|
|
189
189
|
<HeaderLayout
|
|
190
190
|
primaryAction={
|
|
191
191
|
<Button
|
|
192
|
-
disabled={isSubmitting || !canUpdate}
|
|
192
|
+
disabled={(isSubmitting || !canUpdate) ? true : !dirty}
|
|
193
193
|
startIcon={<Check />}
|
|
194
194
|
loading={isSubmitting}
|
|
195
195
|
type="submit"
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { translatedErrors } from '@strapi/helper-plugin';
|
|
2
1
|
import * as yup from 'yup';
|
|
3
2
|
|
|
4
3
|
const NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;
|
|
@@ -10,11 +9,18 @@ export const makeWebhookValidationSchema = ({ formatMessage }) =>
|
|
|
10
9
|
.string()
|
|
11
10
|
.required(
|
|
12
11
|
formatMessage({
|
|
13
|
-
id: 'Settings.webhooks.validation.name',
|
|
12
|
+
id: 'Settings.webhooks.validation.name.required',
|
|
14
13
|
defaultMessage: 'Name is required',
|
|
15
14
|
})
|
|
16
15
|
)
|
|
17
|
-
.matches(
|
|
16
|
+
.matches(
|
|
17
|
+
NAME_REGEX,
|
|
18
|
+
formatMessage({
|
|
19
|
+
id: 'Settings.webhooks.validation.name.regex',
|
|
20
|
+
defaultMessage:
|
|
21
|
+
'The name must start with a letter and only contain letters, numbers, spaces and underscores',
|
|
22
|
+
})
|
|
23
|
+
),
|
|
18
24
|
url: yup
|
|
19
25
|
.string()
|
|
20
26
|
.required(
|
|
@@ -26,8 +32,8 @@ export const makeWebhookValidationSchema = ({ formatMessage }) =>
|
|
|
26
32
|
.matches(
|
|
27
33
|
URL_REGEX,
|
|
28
34
|
formatMessage({
|
|
29
|
-
id:
|
|
30
|
-
defaultMessage: 'The value
|
|
35
|
+
id: 'Settings.webhooks.validation.url.regex',
|
|
36
|
+
defaultMessage: 'The value must be a valid Url',
|
|
31
37
|
})
|
|
32
38
|
),
|
|
33
39
|
headers: yup.lazy((array) => {
|
|
@@ -88,6 +88,7 @@
|
|
|
88
88
|
"Settings.apiTokens.emptyStateLayout": "Encara no tens cap contingut...",
|
|
89
89
|
"Settings.tokens.notification.copied": "Token copiat al porta-retalls.",
|
|
90
90
|
"Settings.apiTokens.title": "Tokens d'API",
|
|
91
|
+
"Settings.apiTokens.lastHour": "darrera hora",
|
|
91
92
|
"Settings.tokens.types.full-access": "Accés complet",
|
|
92
93
|
"Settings.tokens.types.read-only": "Només lectura",
|
|
93
94
|
"Settings.application.Strapi-version": "versió de Strapi",
|
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
"Settings.apiTokens.emptyStateLayout": "You don’t have any content yet...",
|
|
98
98
|
"Settings.apiTokens.regenerate": "Regenerate",
|
|
99
99
|
"Settings.apiTokens.title": "API Tokens",
|
|
100
|
+
"Settings.apiTokens.lastHour": "last hour",
|
|
100
101
|
"Settings.application.customization": "Customization",
|
|
101
102
|
"Settings.application.customization.auth-logo.carousel-hint": "Replace the logo in the authentication pages",
|
|
102
103
|
"Settings.application.customization.carousel-hint": "Change the admin panel logo (Max dimension: {dimension}x{dimension}, Max file size: {size}KB)",
|
|
@@ -318,8 +319,10 @@
|
|
|
318
319
|
"Settings.webhooks.trigger.test": "Test-trigger",
|
|
319
320
|
"Settings.webhooks.trigger.title": "Save before Trigger",
|
|
320
321
|
"Settings.webhooks.value": "Value",
|
|
321
|
-
"Settings.webhooks.validation.name": "Name is required",
|
|
322
|
+
"Settings.webhooks.validation.name.required": "Name is required",
|
|
323
|
+
"Settings.webhooks.validation.name.regex": "The name must start with a letter and only contain letters, numbers, spaces and underscores",
|
|
322
324
|
"Settings.webhooks.validation.url.required": "Url is required",
|
|
325
|
+
"Settings.webhooks.validation.url.regex": "The value must be a valid Url",
|
|
323
326
|
"Settings.webhooks.validation.key": "Key is required",
|
|
324
327
|
"Settings.webhooks.validation.value": "Value is required",
|
|
325
328
|
"Usecase.back-end": "Back-end developer",
|
|
@@ -86,6 +86,11 @@
|
|
|
86
86
|
"Settings.apiTokens.emptyStateLayout": "Aún no tienes ningún contenido ...",
|
|
87
87
|
"Settings.tokens.notification.copied": "Token copiado al portapapeles.",
|
|
88
88
|
"Settings.apiTokens.title": "Tokens de API",
|
|
89
|
+
"Settings.apiTokens.lastHour": "última hora",
|
|
90
|
+
"Settings.tokens.ListView.headers.createdAt": "Creado en",
|
|
91
|
+
"Settings.tokens.ListView.headers.description": "Descripción",
|
|
92
|
+
"Settings.tokens.ListView.headers.lastUsedAt": "Último uso",
|
|
93
|
+
"Settings.tokens.ListView.headers.name": "Nombre",
|
|
89
94
|
"Settings.tokens.types.full-access": "Acceso completo",
|
|
90
95
|
"Settings.tokens.types.read-only": "Solo lectura",
|
|
91
96
|
"Settings.application.description": "Información global del panel de administración",
|
|
@@ -100,6 +100,7 @@
|
|
|
100
100
|
"Settings.apiTokens.createPage.BoundRoute.title": "Route rattachée à",
|
|
101
101
|
"Settings.apiTokens.createPage.permissions.header.title": "Paramètres avancés",
|
|
102
102
|
"Settings.apiTokens.createPage.permissions.header.hint": "Sélectionner les actions de l'application ou du plugin et sur l'icône de la roue crantée pour afficher la route rattachée",
|
|
103
|
+
"Settings.apiTokens.lastHour": "dernière heure",
|
|
103
104
|
"Settings.tokens.duration.30-days": "30 jours",
|
|
104
105
|
"Settings.tokens.duration.7-days": "7 jours",
|
|
105
106
|
"Settings.tokens.duration.90-days": "90 jours",
|
|
@@ -799,7 +799,7 @@
|
|
|
799
799
|
"content-manager.popUpWarning.warning.unpublish-question": "您确定不要发布它吗?",
|
|
800
800
|
"content-manager.popUpWarning.warning.updateAllSettings": "这将修改所有设置",
|
|
801
801
|
"content-manager.popUpwarning.warning.has-draft-relations.button-confirm": "是, 发布",
|
|
802
|
-
"content-manager.popUpwarning.warning.has-draft-relations.message": "<b>{count, plural,
|
|
802
|
+
"content-manager.popUpwarning.warning.has-draft-relations.message": "<b>{count, plural, one { 个关联的内容} other { 个关联的内容}}</b> 尚未发布,这可能会导致不可预期的行为。",
|
|
803
803
|
"content-manager.popover.display-relations.label": "显示关联",
|
|
804
804
|
"content-manager.relation.add": "添加关联",
|
|
805
805
|
"content-manager.relation.disconnect": "删除",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2799],{42799:function(n,a,e){e.r(a),e.d(a,{REVIEW_WORKFLOW_COLUMNS_EE:function(){return t}});var s=e(47510);const t={key:"__strapi_reviewWorkflows_stage_temp_key__",name:"strapi_reviewWorkflows_stage",fieldSchema:{type:"relation"},metadatas:{label:{id:(0,s.Z)("containers.ListPage.table-headers.reviewWorkflows.stage"),defaultMessage:"Review stage"},searchable:!1,sortable:!0,mainField:{name:"name",schema:{type:"string"}}}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[539],{60539:function(v,a,t){t.r(a),t.d(a,{ReviewWorkflowsStageEE:function(){return r}});var n=t(32735),e=t(87933),l=t(72850),i=t(49372),u=t(19565),d=t(60216),o=t.n(d),h=t(61937),g=t(54504);function r({color:s,name:m}){const{themeColorName:p}=(0,g.k)(s);return n.createElement(e.k,{alignItems:"center",gap:2,maxWidth:(0,u.Q1)(300)},n.createElement(l.x,{height:2,background:s,borderColor:p==="neutral0"?"neutral150":"transparent",hasRadius:!0,shrink:0,width:2}),n.createElement(i.Z,{fontWeight:"regular",textColor:"neutral700",ellipsis:!0},m))}r.defaultProps={color:h.FT},r.propTypes={color:o().string,name:o().string.isRequired}}}]);
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
`,c=({title:l,description:p,as:h="span",togglePosition:f="right",action:M,...j})=>{const{onToggle:P,toggle:O,expanded:_,id:y,size:b,variant:A,disabled:B}=(0,i.A)(),w=`accordion-content-${y}`,D=`accordion-label-${y}`,W=`accordion-desc-${y}`,C=b==="M"?6:4,L=b==="M"?C:C-2,U=d({expanded:_,disabled:B,variant:A}),I={as:h,fontWeight:b==="S"?"bold":void 0,id:D,textColor:_?"primary600":"neutral700",ellipsis:!0,variant:b==="M"?"delta":void 0},K=_?"primary600":"neutral600",Z=_?"primary200":"neutral200",T=b==="M"?`${32/16}rem`:`${24/16}rem`,R=()=>{B||(O&&!P?(console.warn('Deprecation warning: Usage of "toggle" prop in Accordion component is deprecated. This is discouraged and will be removed in the next major release. Please use "onToggle" instead'),O()):P&&P())},$=(0,t.jsx)(g.k,{justifyContent:"center",borderRadius:"50%",height:T,width:T,transform:_?"rotate(180deg)":void 0,"data-strapi-dropdown":!0,"aria-hidden":!0,as:"span",background:Z,cursor:B?"not-allowed":"pointer",onClick:R,shrink:0,children:(0,t.jsx)(x.J,{as:r.Z,width:b==="M"?`${11/16}rem`:`${8/16}rem`,color:_?"primary600":"neutral600"})});return(0,t.jsx)(v,{paddingBottom:L,paddingLeft:C,paddingRight:C,paddingTop:L,background:U,expanded:_,size:b,justifyContent:"space-between",cursor:B?"not-allowed":"",children:(0,t.jsxs)(g.k,{gap:3,flex:1,maxWidth:"100%",children:[f==="left"&&$,(0,t.jsx)(E,{onClick:R,"aria-disabled":B,"aria-expanded":_,"aria-controls":w,"aria-labelledby":D,"data-strapi-accordion-toggle":!0,expanded:_,type:"button",flex:1,minWidth:0,...j,children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.y,{...I,children:l}),p&&(0,t.jsx)(m.Z,{as:"p",id:W,textColor:K,children:p})]})}),f==="right"&&(0,t.jsxs)(g.k,{gap:3,children:[$,M]}),f==="left"&&M]})})}},99223:function(o,u,n){"use strict";n.d(u,{Z:function(){return e}});var t=n(74512),r=n(87933);const e=({startActions:s,endActions:i})=>!s&&!i?null:(0,t.jsxs)(r.k,{justifyContent:"space-between",alignItems:"flex-start",paddingBottom:4,paddingLeft:10,paddingRight:10,children:[(0,t.jsx)(r.k,{gap:2,wrap:"wrap",children:s}),(0,t.jsx)(r.k,{gap:2,shrink:0,wrap:"wrap",children:i})]})},17e3:function(o,u,n){"use strict";n.d(u,{D:function(){return e}});var t=n(74512),r=n(72850);const e=({children:s})=>(0,t.jsx)(r.x,{paddingLeft:10,paddingRight:10,children:s})},82055:function(o,u,n){"use strict";n.d(u,{T:function(){return m}});var t=n(74512),r=n(32735),e=n(8471);const s=c=>{const l=(0,r.useRef)(null),[p,h]=(0,r.useState)(!0),f=([M])=>{h(M.isIntersecting)};return(0,r.useEffect)(()=>{const M=l.current,j=new IntersectionObserver(f,c);return M&&j.observe(l.current),()=>{M&&j.disconnect()}},[l,c]),[l,p]};var i=n(
|
|
50
|
+
`,c=({title:l,description:p,as:h="span",togglePosition:f="right",action:M,...j})=>{const{onToggle:P,toggle:O,expanded:_,id:y,size:b,variant:A,disabled:B}=(0,i.A)(),w=`accordion-content-${y}`,D=`accordion-label-${y}`,W=`accordion-desc-${y}`,C=b==="M"?6:4,L=b==="M"?C:C-2,U=d({expanded:_,disabled:B,variant:A}),I={as:h,fontWeight:b==="S"?"bold":void 0,id:D,textColor:_?"primary600":"neutral700",ellipsis:!0,variant:b==="M"?"delta":void 0},K=_?"primary600":"neutral600",Z=_?"primary200":"neutral200",T=b==="M"?`${32/16}rem`:`${24/16}rem`,R=()=>{B||(O&&!P?(console.warn('Deprecation warning: Usage of "toggle" prop in Accordion component is deprecated. This is discouraged and will be removed in the next major release. Please use "onToggle" instead'),O()):P&&P())},$=(0,t.jsx)(g.k,{justifyContent:"center",borderRadius:"50%",height:T,width:T,transform:_?"rotate(180deg)":void 0,"data-strapi-dropdown":!0,"aria-hidden":!0,as:"span",background:Z,cursor:B?"not-allowed":"pointer",onClick:R,shrink:0,children:(0,t.jsx)(x.J,{as:r.Z,width:b==="M"?`${11/16}rem`:`${8/16}rem`,color:_?"primary600":"neutral600"})});return(0,t.jsx)(v,{paddingBottom:L,paddingLeft:C,paddingRight:C,paddingTop:L,background:U,expanded:_,size:b,justifyContent:"space-between",cursor:B?"not-allowed":"",children:(0,t.jsxs)(g.k,{gap:3,flex:1,maxWidth:"100%",children:[f==="left"&&$,(0,t.jsx)(E,{onClick:R,"aria-disabled":B,"aria-expanded":_,"aria-controls":w,"aria-labelledby":D,"data-strapi-accordion-toggle":!0,expanded:_,type:"button",flex:1,minWidth:0,...j,children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.y,{...I,children:l}),p&&(0,t.jsx)(m.Z,{as:"p",id:W,textColor:K,children:p})]})}),f==="right"&&(0,t.jsxs)(g.k,{gap:3,children:[$,M]}),f==="left"&&M]})})}},99223:function(o,u,n){"use strict";n.d(u,{Z:function(){return e}});var t=n(74512),r=n(87933);const e=({startActions:s,endActions:i})=>!s&&!i?null:(0,t.jsxs)(r.k,{justifyContent:"space-between",alignItems:"flex-start",paddingBottom:4,paddingLeft:10,paddingRight:10,children:[(0,t.jsx)(r.k,{gap:2,wrap:"wrap",children:s}),(0,t.jsx)(r.k,{gap:2,shrink:0,wrap:"wrap",children:i})]})},17e3:function(o,u,n){"use strict";n.d(u,{D:function(){return e}});var t=n(74512),r=n(72850);const e=({children:s})=>(0,t.jsx)(r.x,{paddingLeft:10,paddingRight:10,children:s})},82055:function(o,u,n){"use strict";n.d(u,{T:function(){return m}});var t=n(74512),r=n(32735),e=n(8471);const s=c=>{const l=(0,r.useRef)(null),[p,h]=(0,r.useState)(!0),f=([M])=>{h(M.isIntersecting)};return(0,r.useEffect)(()=>{const M=l.current,j=new IntersectionObserver(f,c);return M&&j.observe(l.current),()=>{M&&j.disconnect()}},[l,c]),[l,p]};var i=n(2285);const d=(c,l)=>{const p=(0,i.W)(l);(0,r.useLayoutEffect)(()=>{const h=new ResizeObserver(p);return Array.isArray(c)?c.forEach(f=>{f.current&&h.observe(f.current)}):c.current&&h.observe(c.current),()=>{h.disconnect()}},[c,p])};var a=n(72850),x=n(87933),g=n(49372);const m=c=>{const l=(0,r.useRef)(null),[p,h]=(0,r.useState)(null),[f,M]=s({root:null,rootMargin:"0px",threshold:0});return d(f,()=>{f.current&&h(f.current.getBoundingClientRect())}),(0,r.useEffect)(()=>{l.current&&h(l.current.getBoundingClientRect())},[l]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{height:p?.height},ref:f,children:M&&(0,t.jsx)(v,{ref:l,...c})}),!M&&(0,t.jsx)(v,{...c,sticky:!0,width:p?.width})]})};m.displayName="HeaderLayout";const E=(0,e.ZP)(a.x)`
|
|
51
51
|
width: ${({width:c})=>c?`${c/16}rem`:void 0};
|
|
52
52
|
z-index: ${({theme:c})=>c.zIndices[1]};
|
|
53
53
|
`,v=r.forwardRef(({navigationAction:c,primaryAction:l,secondaryAction:p,subtitle:h,title:f,sticky:M,width:j,...P},O)=>{const _=typeof h=="string";return M?(0,t.jsx)(E,{paddingLeft:6,paddingRight:6,paddingTop:3,paddingBottom:3,position:"fixed",top:0,right:0,background:"neutral0",shadow:"tableShadow",width:j,"data-strapi-header-sticky":!0,children:(0,t.jsxs)(x.k,{justifyContent:"space-between",children:[(0,t.jsxs)(x.k,{children:[c&&(0,t.jsx)(a.x,{paddingRight:3,children:c}),(0,t.jsxs)(a.x,{children:[(0,t.jsx)(g.Z,{variant:"beta",as:"h1",...P,children:f}),_?(0,t.jsx)(g.Z,{variant:"pi",textColor:"neutral600",children:h}):h]}),p?(0,t.jsx)(a.x,{paddingLeft:4,children:p}):null]}),(0,t.jsx)(x.k,{children:l?(0,t.jsx)(a.x,{paddingLeft:2,children:l}):void 0})]})}):(0,t.jsxs)(a.x,{ref:O,paddingLeft:10,paddingRight:10,paddingBottom:8,paddingTop:c?6:8,background:"neutral100","data-strapi-header":!0,children:[c?(0,t.jsx)(a.x,{paddingBottom:2,children:c}):null,(0,t.jsxs)(x.k,{justifyContent:"space-between",children:[(0,t.jsxs)(x.k,{minWidth:0,children:[(0,t.jsx)(g.Z,{as:"h1",variant:"alpha",...P,children:f}),p?(0,t.jsx)(a.x,{paddingLeft:4,children:p}):null]}),l]}),_?(0,t.jsx)(g.Z,{variant:"epsilon",textColor:"neutral600",as:"p",children:h}):h]})})},96709:function(o,u,n){"use strict";n.d(u,{A:function(){return d}});var t=n(74512),r=n(8471),e=n(72850);const s=(0,r.ZP)(e.x)`
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5563],{30493:function(C,m,e){"use strict";e.d(m,{Z:function(){return M}});var t=e(32735),u=e(82055),r=e(87933),o=e(41415),a=e(19565),i=e(66456),d=e(29439),v=e(60216),s=e.n(v),y=e(67879),h=e(44647),n=e(10328);const g=({onRegenerate:P,idToRegenerate:I,backUrl:K,onError:N})=>{const{formatMessage:k}=(0,y.Z)(),[A,B]=(0,t.useState)(!1),{regenerateData:R,isLoadingConfirmation:H}=(0,n.rW)(K,I,P,N),Z=async()=>{R(),B(!1)};return t.createElement(t.Fragment,null,t.createElement(o.z,{startIcon:t.createElement(h.Z,null),type:"button",size:"S",variant:"tertiary",onClick:()=>B(!0),name:"regenerate"},k({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),t.createElement(a.QH,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:t.createElement(h.Z,null),isConfirmButtonLoading:H,isOpen:A,onToggleDialog:()=>B(!1),onConfirm:Z,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"}}))};g.defaultProps={onRegenerate(){},onError:void 0},g.propTypes={onRegenerate:s().func,idToRegenerate:s().oneOfType([s().number,s().string]).isRequired,backUrl:s().string.isRequired,onError:s().func};var l=g;const c=({title:P,token:I,setToken:K,canEditInputs:N,canRegenerate:k,isSubmitting:A,backUrl:B,regenerateUrl:R,onErrorRegenerate:H})=>{const{formatMessage:Z}=(0,y.Z)(),Y=Q=>{K({...I,accessKey:Q})};return t.createElement(u.T,{title:I?.name||Z(P),primaryAction:N?t.createElement(r.k,{gap:2},k&&I?.id&&t.createElement(l,{backUrl:R,onRegenerate:Y,idToRegenerate:I?.id,onError:H}),t.createElement(o.z,{disabled:A,loading:A,startIcon:t.createElement(i.Z,null),type:"submit",size:"S"},Z({id:"global.save",defaultMessage:"Save"}))):k&&I?.id&&t.createElement(l,{onRegenerate:Y,idToRegenerate:I?.id,backUrl:R}),navigationAction:t.createElement(a.rU,{startIcon:t.createElement(d.Z,null),to:B},Z({id:"global.back",defaultMessage:"Back"})),ellipsis:!0})};c.propTypes={token:s().shape({id:s().oneOfType([s().number,s().string]),type:s().string,lifespan:s().oneOfType([s().number,s().string]),name:s().string,accessKey:s().string,permissions:s().array,description:s().string,createdAt:s().string}),canEditInputs:s().bool.isRequired,canRegenerate:s().bool.isRequired,setToken:s().func.isRequired,isSubmitting:s().bool.isRequired,backUrl:s().string.isRequired,title:s().shape({id:s().string,label:s().string}).isRequired,regenerateUrl:s().string.isRequired,onErrorRegenerate:s().func},c.defaultProps={token:void 0,onErrorRegenerate:void 0};var M=c},4321:function(C,m,e){"use strict";var t=e(32735),u=e(68465),r=e(84967),o=e(49372),a=e(60216),i=e.n(a),d=e(67879),v=e(37944);const s=({token:y,errors:h,values:n,onChange:g,isCreating:l})=>{const{formatMessage:c}=(0,d.Z)();return t.createElement(t.Fragment,null,t.createElement(u.P,{name:"lifespan",label:c({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:n.lifespan!==null?n.lifespan:"0",error:h.lifespan?c(h.lifespan?.id?h.lifespan:{id:h.lifespan,defaultMessage:h.lifespan}):null,onChange:M=>{g({target:{name:"lifespan",value:M}})},required:!0,disabled:!l,placeholder:"Select"},t.createElement(r.W,{value:"604800000"},c({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),t.createElement(r.W,{value:"2592000000"},c({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),t.createElement(r.W,{value:"7776000000"},c({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),t.createElement(r.W,{value:"0"},c({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),t.createElement(o.Z,{variant:"pi",textColor:"neutral600"},!l&&`${c({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,v.IX)(y?.createdAt,parseInt(n.lifespan,10))}`))};s.propTypes={errors:i().shape({lifespan:i().string}),onChange:i().func.isRequired,values:i().shape({lifespan:i().oneOfType([i().number,i().string])}).isRequired,isCreating:i().bool.isRequired,token:i().shape({id:i().oneOfType([i().number,i().string]),type:i().string,lifespan:i().string,name:i().string,accessKey:i().string,permissions:i().array,description:i().string,createdAt:i().string})},s.defaultProps={errors:{},token:{}},m.Z=s},93682:function(C,m,e){"use strict";var t=e(32735),u=e(50563),r=e(19565),o=e(47765),a=e(11631),i=e(60216),d=e.n(i),v=e(67879);const s=({token:y,tokenType:h})=>{const{formatMessage:n}=(0,v.Z)(),g=(0,r.lm)(),{trackUsage:l}=(0,r.rS)(),{copy:c}=(0,r.VP)(),M=P=>async()=>{await c(P)&&(l.current("didCopyTokenKey",{tokenType:h}),g({type:"success",message:{id:"Settings.tokens.notification.copied"}}))};return t.createElement(r.Y_,{endAction:y&&t.createElement("span",{style:{alignSelf:"start"}},t.createElement(u.h,{label:n({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),onClick:M(y),noBorder:!0,icon:t.createElement(o.Z,null),style:{padding:0,height:"1rem"}})),title:y||n({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:n(y?{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(a.Z,null),iconBackground:"neutral100"})};s.defaultProps={token:null},s.propTypes={token:d().string,tokenType:d().string.isRequired},m.Z=s},42789:function(C,m,e){"use strict";var t=e(32735),u=e(33475),r=e(60216),o=e.n(r),a=e(67879);const i=({errors:d,values:v,onChange:s,canEditInputs:y})=>{const{formatMessage:h}=(0,a.Z)();return t.createElement(u.g,{label:h({id:"Settings.tokens.form.description",defaultMessage:"Description"}),id:"description",error:d.description?h(d.description?.id?d.description:{id:d.description,defaultMessage:d.description}):null,onChange:s,disabled:!y},v.description)};i.propTypes={errors:o().shape({description:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({description:o().string}).isRequired},i.defaultProps={errors:{}},m.Z=i},8377:function(C,m,e){"use strict";var t=e(32735),u=e(10369),r=e(60216),o=e.n(r),a=e(67879);const i=({errors:d,values:v,onChange:s,canEditInputs:y})=>{const{formatMessage:h}=(0,a.Z)();return t.createElement(u.o,{name:"name",error:d.name?h(d.name?.id?d.name:{id:d.name,defaultMessage:d.name}):null,label:h({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:s,value:v.name,disabled:!y,required:!0})};i.propTypes={errors:o().shape({name:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({name:o().string}).isRequired},i.defaultProps={errors:{}},m.Z=i},49638:function(C,m,e){"use strict";var t=e(32735),u=e(68465),r=e(84967),o=e(60216),a=e.n(o),i=e(67879);const d=({name:v,errors:s,values:y,onChange:h,canEditInputs:n,options:g,label:l})=>{const{formatMessage:c}=(0,i.Z)();return t.createElement(u.P,{name:v,label:c({id:l.id,defaultMessage:l.defaultMessage}),value:y&&y[v],error:s[v]?c(s[v]?.id?s[v]:{id:s[v],defaultMessage:s[v]}):null,onChange:h,placeholder:"Select",required:!0,disabled:!n},g&&g.map(({value:M,label:P})=>t.createElement(r.W,{key:M,value:M},c(P))))};d.propTypes={name:a().string,options:a().arrayOf(a().shape({label:a().shape({id:a().string,defaultMessage:a().string}),value:a().string})),errors:a().shape({type:a().string}),onChange:a().func.isRequired,canEditInputs:a().bool.isRequired,values:a().shape({type:a().string}).isRequired,label:a().shape({id:a().string,defaultMessage:a().string}).isRequired},d.defaultProps={name:"type",errors:{},options:[]},m.Z=d},68774:function(C,m,e){"use strict";e.d(m,{Z:function(){return t},f:function(){return u}});const t="api-token",u="transfer-token"},35563:function(C,m,e){"use strict";e.d(m,{Z:function(){return Ge}});var t=e(32735),u=e(27649),r=e(17e3),o=e(87933),a=e(19565),i=e(92802),d=e(67879),v=e(20108),s=e(15062),y=e(53038),h=e(60216),n=e.n(h);const g=(0,t.createContext)({}),l=({children:p,...E})=>t.createElement(g.Provider,{value:E},p),c=()=>(0,t.useContext)(g);l.propTypes={children:n().node.isRequired};var M=e(8997),P=e(78125),I=e(68774),K=e(30493),N=e(93682),k=e(72850),A=e(49372),B=e(15335),R=e(5803),H=e(4321),Z=e(42789),Y=e(8377),Q=e(49638);const J=({errors:p,onChange:E,canEditInputs:f,isCreating:D,values:x,apiToken:S,onDispatch:O,setHasChangedPermissions:V})=>{const{formatMessage:j}=(0,d.Z)(),F=({target:{value:z}})=>{V(!1),z==="full-access"&&O({type:"SELECT_ALL_ACTIONS"}),z==="read-only"&&O({type:"ON_CHANGE_READ_ONLY"})},w=[{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 t.createElement(k.x,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:4},t.createElement(A.Z,{variant:"delta",as:"h2"},j({id:"global.details",defaultMessage:"Details"})),t.createElement(B.r,{gap:5},t.createElement(R.P,{key:"name",col:6,xs:12},t.createElement(Y.Z,{errors:p,values:x,canEditInputs:f,onChange:E})),t.createElement(R.P,{key:"description",col:6,xs:12},t.createElement(Z.Z,{errors:p,values:x,canEditInputs:f,onChange:E})),t.createElement(R.P,{key:"lifespan",col:6,xs:12},t.createElement(H.Z,{isCreating:D,errors:p,values:x,onChange:E,token:S})),t.createElement(R.P,{key:"type",col:6,xs:12},t.createElement(Q.Z,{values:x,errors:p,label:{id:"Settings.tokens.form.type",defaultMessage:"Token type"},onChange:z=>{F({target:{value:z}}),E({target:{name:"type",value:z}})},options:w,canEditInputs:f})))))};J.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,apiToken: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}),onDispatch:n().func.isRequired,setHasChangedPermissions:n().func.isRequired},J.defaultProps={errors:{},apiToken:{}};var X=J,ne=e(82055),le=e(41415),de=e(66456);const _=({apiTokenName:p})=>{const{formatMessage:E}=(0,d.Z)();return(0,a.go)(),t.createElement(u.o,{"aria-busy":"true"},t.createElement(a.SL,{name:"API Tokens"}),t.createElement(ne.T,{primaryAction:t.createElement(le.z,{disabled:!0,startIcon:t.createElement(de.Z,null),type:"button",size:"L"},E({id:"global.save",defaultMessage:"Save"})),title:p||E({id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"})}),t.createElement(r.D,null,t.createElement(a.dO,null)))};_.defaultProps={apiTokenName:null},_.propTypes={apiTokenName:n().string};var ce=_,se=e(37213),ae=e.n(se),oe=e(15738),Me=e.n(oe),re=e(8471),Ae=p=>{switch(p){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 xe=(0,re.ZP)(k.x)`
|
|
1
|
+
(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5563],{30493:function(C,m,e){"use strict";e.d(m,{Z:function(){return M}});var t=e(32735),u=e(82055),r=e(87933),o=e(41415),a=e(19565),i=e(66456),d=e(29439),v=e(60216),s=e.n(v),y=e(67879),h=e(44647),n=e(10328);const g=({onRegenerate:P,idToRegenerate:I,backUrl:K,onError:N})=>{const{formatMessage:k}=(0,y.Z)(),[A,B]=(0,t.useState)(!1),{regenerateData:R,isLoadingConfirmation:H}=(0,n.rW)(K,I,P,N),Z=async()=>{R(),B(!1)};return t.createElement(t.Fragment,null,t.createElement(o.z,{startIcon:t.createElement(h.Z,null),type:"button",size:"S",variant:"tertiary",onClick:()=>B(!0),name:"regenerate"},k({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),t.createElement(a.QH,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:t.createElement(h.Z,null),isConfirmButtonLoading:H,isOpen:A,onToggleDialog:()=>B(!1),onConfirm:Z,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"}}))};g.defaultProps={onRegenerate(){},onError:void 0},g.propTypes={onRegenerate:s().func,idToRegenerate:s().oneOfType([s().number,s().string]).isRequired,backUrl:s().string.isRequired,onError:s().func};var l=g;const c=({title:P,token:I,setToken:K,canEditInputs:N,canRegenerate:k,isSubmitting:A,backUrl:B,regenerateUrl:R,onErrorRegenerate:H})=>{const{formatMessage:Z}=(0,y.Z)(),Y=Q=>{K({...I,accessKey:Q})};return t.createElement(u.T,{title:I?.name||Z(P),primaryAction:N?t.createElement(r.k,{gap:2},k&&I?.id&&t.createElement(l,{backUrl:R,onRegenerate:Y,idToRegenerate:I?.id,onError:H}),t.createElement(o.z,{disabled:A,loading:A,startIcon:t.createElement(i.Z,null),type:"submit",size:"S"},Z({id:"global.save",defaultMessage:"Save"}))):k&&I?.id&&t.createElement(l,{onRegenerate:Y,idToRegenerate:I?.id,backUrl:R}),navigationAction:t.createElement(a.rU,{startIcon:t.createElement(d.Z,null),to:B},Z({id:"global.back",defaultMessage:"Back"})),ellipsis:!0})};c.propTypes={token:s().shape({id:s().oneOfType([s().number,s().string]),type:s().string,lifespan:s().oneOfType([s().number,s().string]),name:s().string,accessKey:s().string,permissions:s().array,description:s().string,createdAt:s().string}),canEditInputs:s().bool.isRequired,canRegenerate:s().bool.isRequired,setToken:s().func.isRequired,isSubmitting:s().bool.isRequired,backUrl:s().string.isRequired,title:s().shape({id:s().string,label:s().string}).isRequired,regenerateUrl:s().string.isRequired,onErrorRegenerate:s().func},c.defaultProps={token:void 0,onErrorRegenerate:void 0};var M=c},4321:function(C,m,e){"use strict";var t=e(32735),u=e(68465),r=e(84967),o=e(49372),a=e(60216),i=e.n(a),d=e(67879),v=e(37944);const s=({token:y,errors:h,values:n,onChange:g,isCreating:l})=>{const{formatMessage:c}=(0,d.Z)();return t.createElement(t.Fragment,null,t.createElement(u.P,{name:"lifespan",label:c({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:n.lifespan!==null?n.lifespan:"0",error:h.lifespan?c(h.lifespan?.id?h.lifespan:{id:h.lifespan,defaultMessage:h.lifespan}):null,onChange:M=>{g({target:{name:"lifespan",value:M}})},required:!0,disabled:!l,placeholder:"Select"},t.createElement(r.W,{value:"604800000"},c({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),t.createElement(r.W,{value:"2592000000"},c({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),t.createElement(r.W,{value:"7776000000"},c({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),t.createElement(r.W,{value:"0"},c({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),t.createElement(o.Z,{variant:"pi",textColor:"neutral600"},!l&&`${c({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,v.IX)(y?.createdAt,parseInt(n.lifespan,10))}`))};s.propTypes={errors:i().shape({lifespan:i().string}),onChange:i().func.isRequired,values:i().shape({lifespan:i().oneOfType([i().number,i().string])}).isRequired,isCreating:i().bool.isRequired,token:i().shape({id:i().oneOfType([i().number,i().string]),type:i().string,lifespan:i().string,name:i().string,accessKey:i().string,permissions:i().array,description:i().string,createdAt:i().string})},s.defaultProps={errors:{},token:{}},m.Z=s},93682:function(C,m,e){"use strict";var t=e(32735),u=e(50563),r=e(19565),o=e(47765),a=e(11631),i=e(60216),d=e.n(i),v=e(67879);const s=({token:y,tokenType:h})=>{const{formatMessage:n}=(0,v.Z)(),g=(0,r.lm)(),{trackUsage:l}=(0,r.rS)(),{copy:c}=(0,r.VP)(),M=P=>async()=>{await c(P)&&(l("didCopyTokenKey",{tokenType:h}),g({type:"success",message:{id:"Settings.tokens.notification.copied"}}))};return t.createElement(r.Y_,{endAction:y&&t.createElement("span",{style:{alignSelf:"start"}},t.createElement(u.h,{label:n({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),onClick:M(y),noBorder:!0,icon:t.createElement(o.Z,null),style:{padding:0,height:"1rem"}})),title:y||n({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:n(y?{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(a.Z,null),iconBackground:"neutral100"})};s.defaultProps={token:null},s.propTypes={token:d().string,tokenType:d().string.isRequired},m.Z=s},42789:function(C,m,e){"use strict";var t=e(32735),u=e(33475),r=e(60216),o=e.n(r),a=e(67879);const i=({errors:d,values:v,onChange:s,canEditInputs:y})=>{const{formatMessage:h}=(0,a.Z)();return t.createElement(u.g,{label:h({id:"Settings.tokens.form.description",defaultMessage:"Description"}),id:"description",error:d.description?h(d.description?.id?d.description:{id:d.description,defaultMessage:d.description}):null,onChange:s,disabled:!y},v.description)};i.propTypes={errors:o().shape({description:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({description:o().string}).isRequired},i.defaultProps={errors:{}},m.Z=i},8377:function(C,m,e){"use strict";var t=e(32735),u=e(10369),r=e(60216),o=e.n(r),a=e(67879);const i=({errors:d,values:v,onChange:s,canEditInputs:y})=>{const{formatMessage:h}=(0,a.Z)();return t.createElement(u.o,{name:"name",error:d.name?h(d.name?.id?d.name:{id:d.name,defaultMessage:d.name}):null,label:h({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:s,value:v.name,disabled:!y,required:!0})};i.propTypes={errors:o().shape({name:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({name:o().string}).isRequired},i.defaultProps={errors:{}},m.Z=i},49638:function(C,m,e){"use strict";var t=e(32735),u=e(68465),r=e(84967),o=e(60216),a=e.n(o),i=e(67879);const d=({name:v,errors:s,values:y,onChange:h,canEditInputs:n,options:g,label:l})=>{const{formatMessage:c}=(0,i.Z)();return t.createElement(u.P,{name:v,label:c({id:l.id,defaultMessage:l.defaultMessage}),value:y&&y[v],error:s[v]?c(s[v]?.id?s[v]:{id:s[v],defaultMessage:s[v]}):null,onChange:h,placeholder:"Select",required:!0,disabled:!n},g&&g.map(({value:M,label:P})=>t.createElement(r.W,{key:M,value:M},c(P))))};d.propTypes={name:a().string,options:a().arrayOf(a().shape({label:a().shape({id:a().string,defaultMessage:a().string}),value:a().string})),errors:a().shape({type:a().string}),onChange:a().func.isRequired,canEditInputs:a().bool.isRequired,values:a().shape({type:a().string}).isRequired,label:a().shape({id:a().string,defaultMessage:a().string}).isRequired},d.defaultProps={name:"type",errors:{},options:[]},m.Z=d},68774:function(C,m,e){"use strict";e.d(m,{Z:function(){return t},f:function(){return u}});const t="api-token",u="transfer-token"},35563:function(C,m,e){"use strict";e.d(m,{Z:function(){return Ge}});var t=e(32735),u=e(27649),r=e(17e3),o=e(87933),a=e(19565),i=e(92802),d=e(67879),v=e(20108),s=e(15062),y=e(53038),h=e(60216),n=e.n(h);const g=(0,t.createContext)({}),l=({children:p,...E})=>t.createElement(g.Provider,{value:E},p),c=()=>(0,t.useContext)(g);l.propTypes={children:n().node.isRequired};var M=e(8997),P=e(78125),I=e(68774),K=e(30493),N=e(93682),k=e(72850),A=e(49372),B=e(15335),R=e(5803),H=e(4321),Z=e(42789),Y=e(8377),Q=e(49638);const J=({errors:p,onChange:E,canEditInputs:f,isCreating:D,values:x,apiToken:S,onDispatch:O,setHasChangedPermissions:V})=>{const{formatMessage:j}=(0,d.Z)(),F=({target:{value:z}})=>{V(!1),z==="full-access"&&O({type:"SELECT_ALL_ACTIONS"}),z==="read-only"&&O({type:"ON_CHANGE_READ_ONLY"})},w=[{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 t.createElement(k.x,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:4},t.createElement(A.Z,{variant:"delta",as:"h2"},j({id:"global.details",defaultMessage:"Details"})),t.createElement(B.r,{gap:5},t.createElement(R.P,{key:"name",col:6,xs:12},t.createElement(Y.Z,{errors:p,values:x,canEditInputs:f,onChange:E})),t.createElement(R.P,{key:"description",col:6,xs:12},t.createElement(Z.Z,{errors:p,values:x,canEditInputs:f,onChange:E})),t.createElement(R.P,{key:"lifespan",col:6,xs:12},t.createElement(H.Z,{isCreating:D,errors:p,values:x,onChange:E,token:S})),t.createElement(R.P,{key:"type",col:6,xs:12},t.createElement(Q.Z,{values:x,errors:p,label:{id:"Settings.tokens.form.type",defaultMessage:"Token type"},onChange:z=>{F({target:{value:z}}),E({target:{name:"type",value:z}})},options:w,canEditInputs:f})))))};J.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,apiToken: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}),onDispatch:n().func.isRequired,setHasChangedPermissions:n().func.isRequired},J.defaultProps={errors:{},apiToken:{}};var X=J,ne=e(82055),le=e(41415),de=e(66456);const _=({apiTokenName:p})=>{const{formatMessage:E}=(0,d.Z)();return(0,a.go)(),t.createElement(u.o,{"aria-busy":"true"},t.createElement(a.SL,{name:"API Tokens"}),t.createElement(ne.T,{primaryAction:t.createElement(le.z,{disabled:!0,startIcon:t.createElement(de.Z,null),type:"button",size:"L"},E({id:"global.save",defaultMessage:"Save"})),title:p||E({id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"})}),t.createElement(r.D,null,t.createElement(a.dO,null)))};_.defaultProps={apiTokenName:null},_.propTypes={apiTokenName:n().string};var ce=_,se=e(37213),ae=e.n(se),oe=e(15738),Me=e.n(oe),re=e(8471),Ae=p=>{switch(p){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 xe=(0,re.ZP)(k.x)`
|
|
2
2
|
margin: -1px;
|
|
3
3
|
border-radius: ${({theme:p})=>p.spaces[1]} 0 0 ${({theme:p})=>p.spaces[1]};
|
|
4
|
-
`;function pe({route:p}){const{formatMessage:E}=(0,d.Z)(),{method:f,handler:D,path:x}=p,S=x?Me()(x.split("/")):[],[O="",V=""]=D?D.split("."):[],j=Ae(p.method);return t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},t.createElement(A.Z,{variant:"delta",as:"h3"},E({id:"Settings.apiTokens.createPage.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",t.createElement("span",null,O),t.createElement(A.Z,{variant:"delta",textColor:"primary600"},".",V)),t.createElement(o.k,{hasRadius:!0,background:"neutral0",borderColor:"neutral200",gap:0},t.createElement(xe,{background:j.background,borderColor:j.border,padding:2},t.createElement(A.Z,{fontWeight:"bold",textColor:j.text},f)),t.createElement(k.x,{paddingLeft:2,paddingRight:2},ae()(S,F=>t.createElement(A.Z,{key:F,textColor:F.includes(":")?"neutral600":"neutral900"},"/",F)))))}pe.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},pe.propTypes={route:n().shape({handler:n().string,method:n().string,path:n().string})};var Oe=pe,Re=()=>{const{value:{selectedAction:p,routes:E}}=c(),{formatMessage:f}=(0,d.Z)(),D=p?.split(".")[0];return t.createElement(R.P,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},p?t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},E[D]?.map(x=>x.config.auth?.scope?.includes(p)||x.handler===p?t.createElement(Oe,{key:x.handler,route:x}):null)):t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},t.createElement(A.Z,{variant:"delta",as:"h3"},f({id:"Settings.apiTokens.createPage.permissions.header.title",defaultMessage:"Advanced settings"})),t.createElement(A.Z,{as:"p",textColor:"neutral600"},f({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"}))))},Ie=e(83828),De=e(61762),ke=e(89966),Te=e(8284),Se=e(45112),Le=e(73400),Be=e.n(Le);const Ce=re.iv`
|
|
4
|
+
`;function pe({route:p}){const{formatMessage:E}=(0,d.Z)(),{method:f,handler:D,path:x}=p,S=x?Me()(x.split("/")):[],[O="",V=""]=D?D.split("."):[],j=Ae(p.method);return t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},t.createElement(A.Z,{variant:"delta",as:"h3"},E({id:"Settings.apiTokens.createPage.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",t.createElement("span",null,O),t.createElement(A.Z,{variant:"delta",textColor:"primary600"},".",V)),t.createElement(o.k,{hasRadius:!0,background:"neutral0",borderColor:"neutral200",gap:0},t.createElement(xe,{background:j.background,borderColor:j.border,padding:2},t.createElement(A.Z,{fontWeight:"bold",textColor:j.text},f)),t.createElement(k.x,{paddingLeft:2,paddingRight:2},ae()(S,F=>t.createElement(A.Z,{key:F,textColor:F.includes(":")?"neutral600":"neutral900"},"/",F)))))}pe.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},pe.propTypes={route:n().shape({handler:n().string,method:n().string,path:n().string})};var Oe=pe,Re=()=>{const{value:{selectedAction:p,routes:E}}=c(),{formatMessage:f}=(0,d.Z)(),D=p?.split(".")[0];return t.createElement(R.P,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},p?t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},E[D]?.map(x=>x.config.auth?.scope?.includes(p)||x.handler===p?t.createElement(Oe,{key:x.handler,route:x}):null)):t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},t.createElement(A.Z,{variant:"delta",as:"h3"},f({id:"Settings.apiTokens.createPage.permissions.header.title",defaultMessage:"Advanced settings"})),t.createElement(A.Z,{as:"p",textColor:"neutral600"},f({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"}))))},Ie=e(83828),De=e(61762),ke=e(89966),Te=e(8284),Se=e(45112),Le=e(73400),Be=e.n(Le);const Ce=(0,re.iv)`
|
|
5
5
|
background: ${p=>p.theme.colors.primary100};
|
|
6
6
|
svg {
|
|
7
7
|
opacity: 1;
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
flex: 1;
|
|
28
28
|
align-self: center;
|
|
29
29
|
border-top: 1px solid ${({theme:p})=>p.colors.neutral150};
|
|
30
|
-
`,ue=({controllers:p,label:E,orderNumber:f,disabled:D,onExpanded:x,indexExpandendCollapsedContent:S})=>{const{value:{onChangeSelectAll:O,onChange:V,selectedActions:j,setSelectedAction:F,selectedAction:w}}=c(),[z,ie]=(0,t.useState)(!1),{formatMessage:Ee}=(0,d.Z)(),q=()=>{ie(L=>!L),x(f)};(0,t.useEffect)(()=>{S!==null&&S!==f&&z&&ie(!1)},[S,f,z]);const U=L=>L===w;return t.createElement(Ie.U,{expanded:z,onToggle:q,variant:f%2?"primary":"secondary"},t.createElement(De.B,{title:Be()(E)}),t.createElement(ke.v,null,p?.map(L=>{const ee=L.actions.every(W=>j.includes(W.actionId)),fe=L.actions.some(W=>j.includes(W.actionId));return t.createElement(k.x,{key:`${E}.${L?.controller}`},t.createElement(o.k,{justifyContent:"space-between",alignItems:"center",padding:4},t.createElement(k.x,{paddingRight:4},t.createElement(A.Z,{variant:"sigma",textColor:"neutral600"},L?.controller)),t.createElement(Ue,null),t.createElement(k.x,{paddingLeft:4},t.createElement(Te.X,{value:ee,indeterminate:!ee&&fe,onValueChange:()=>{O({target:{value:[...L.actions]}})},disabled:D},Ee({id:"app.utils.select-all",defaultMessage:"Select all"})))),t.createElement(B.r,{gap:4,padding:4},L?.actions&&L?.actions.map(W=>t.createElement(R.P,{col:6,key:W.actionId},t.createElement(be,{isActive:U(W.actionId),padding:2,hasRadius:!0},t.createElement(Te.X,{value:j.includes(W.actionId),name:W.actionId,onValueChange:()=>{V({target:{value:W.actionId}})},disabled:D},W.action),t.createElement("button",{type:"button","data-testid":"action-cog",onClick:()=>F({target:{value:W.actionId}}),style:{display:"inline-flex",alignItems:"center"}},t.createElement(Se.Z,null)))))))})))};ue.defaultProps={controllers:[],orderNumber:0,disabled:!1,onExpanded:()=>null,indexExpandendCollapsedContent:null},ue.propTypes={controllers:n().array,orderNumber:n().number,label:n().string.isRequired,disabled:n().bool,onExpanded:n().func,indexExpandendCollapsedContent:n().number};var Ze=ue;const ge=({section:p,...E})=>{const[f,D]=(0,t.useState)(null),x=S=>D(S);return t.createElement(k.x,{padding:4,background:"neutral0"},p&&p.map((S,O)=>t.createElement(Ze,{key:S.apiId,label:S.label,controllers:S.controllers,orderNumber:O,indexExpandendCollapsedContent:f,onExpanded:x,name:S.apiId,...E})))};ge.defaultProps={section:null},ge.propTypes={section:n().arrayOf(n().object)};var We=ge;const Ke=({...p})=>{const{value:{data:E}}=c(),{formatMessage:f}=(0,d.Z)();return t.createElement(B.r,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},t.createElement(R.P,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},t.createElement(A.Z,{variant:"delta",as:"h2"},f({id:"Settings.apiTokens.createPage.permissions.title",defaultMessage:"Permissions"})),t.createElement(A.Z,{as:"p",textColor:"neutral600"},f({id:"Settings.apiTokens.createPage.permissions.description",defaultMessage:"Only actions bound by a route are listed below."}))),E?.permissions&&t.createElement(We,{section:E?.permissions,...p})),t.createElement(Re,null))};var Ne=(0,t.memo)(Ke),me=e(37944),$e=(p,E=[])=>({...p,selectedAction:null,routes:[],selectedActions:[],data:(0,me.mk)(E)}),je=e(97889),Fe=e(82879),Pe=e.n(Fe);const ze={data:{},selectedActions:[]};var He=(p,E)=>(0,je.ZP)(p,f=>{switch(E.type){case"ON_CHANGE":{f.selectedActions.includes(E.value)?Pe()(f.selectedActions,E.value):f.selectedActions.push(E.value);break}case"SELECT_ALL_IN_PERMISSION":{E.value.every(x=>f.selectedActions.includes(x.actionId))?E.value.forEach(x=>{Pe()(f.selectedActions,x.actionId)}):E.value.forEach(x=>{f.selectedActions.push(x.actionId)});break}case"SELECT_ALL_ACTIONS":{f.selectedActions=[...f.data.allActionsIds];break}case"ON_CHANGE_READ_ONLY":{const D=f.data.allActionsIds.filter(x=>x.includes("find")||x.includes("findOne"));f.selectedActions=[...D];break}case"UPDATE_PERMISSIONS_LAYOUT":{f.data=(0,me.mk)(E.value);break}case"UPDATE_ROUTES":{f.routes={...E.value};break}case"UPDATE_PERMISSIONS":{f.selectedActions=[...E.value];break}case"SET_SELECTED_ACTION":{f.selectedAction=E.value;break}default:return f}});const Ve="Name already taken";var Ge=()=>{(0,a.go)();const{formatMessage:p}=(0,d.Z)(),{lockApp:E,unlockApp:f}=(0,a.o1)(),D=(0,a.lm)(),x=(0,y.k6)(),S=(0,s.v9)(P._),[O,V]=(0,t.useState)(x.location.state?.apiToken.accessKey?{...x.location.state.apiToken}:null),{trackUsage:j}=(0,a.rS)(),F=(0,t.useRef)(j),{setCurrentStep:w}=(0,a.c1)(),{allowedActions:{canCreate:z,canUpdate:ie,canRegenerate:Ee}}=(0,a.ss)(S.settings["api-tokens"]),[q,U]=(0,t.useReducer)(He,ze,T=>$e(T,{})),{params:{id:L}}=(0,y.$B)("/settings/api-tokens/:id"),{get:ee,post:fe,put:W}=(0,a.kY)(),$=L==="create";(0,v.useQuery)("content-api-permissions",async()=>{const[T,G]=await Promise.all(["/admin/content-api/permissions","/admin/content-api/routes"].map(async te=>{const{data:b}=await ee(te);return b.data}));U({type:"UPDATE_PERMISSIONS_LAYOUT",value:T}),U({type:"UPDATE_ROUTES",value:G}),O&&(O?.type==="read-only"&&U({type:"ON_CHANGE_READ_ONLY"}),O?.type==="full-access"&&U({type:"SELECT_ALL_ACTIONS"}),O?.type==="custom"&&U({type:"UPDATE_PERMISSIONS",value:O?.permissions}))},{onError(){D({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),(0,t.useEffect)(()=>{F.current($?"didAddTokenFromList":"didEditTokenFromList",{tokenType:I.Z})},[$]);const{status:Ye}=(0,v.useQuery)(["api-token",L],async()=>{const{data:{data:T}}=await ee(`/admin/api-tokens/${L}`);return V({...T}),T?.type==="read-only"&&U({type:"ON_CHANGE_READ_ONLY"}),T?.type==="full-access"&&U({type:"SELECT_ALL_ACTIONS"}),T?.type==="custom"&&U({type:"UPDATE_PERMISSIONS",value:T?.permissions}),T},{enabled:!$&&!O,onError(){D({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),Qe=async(T,G)=>{F.current($?"willCreateToken":"willEditToken",{tokenType:I.Z}),E();const te=T.lifespan&&parseInt(T.lifespan,10)&&T.lifespan!=="0"?parseInt(T.lifespan,10):null;try{const{data:{data:b}}=$?await fe("/admin/api-tokens",{...T,lifespan:te,permissions:T.type==="custom"?q.selectedActions:null}):await W(`/admin/api-tokens/${L}`,{name:T.name,description:T.description,type:T.type,permissions:T.type==="custom"?q.selectedActions:null});$&&(x.replace(`/settings/api-tokens/${b.id}`,{apiToken:b}),w("apiTokens.success")),f(),V({...b}),D({type:"success",message:p($?{id:"notification.success.apitokencreated",defaultMessage:"API Token successfully created"}:{id:"notification.success.apitokenedited",defaultMessage:"API Token successfully edited"})}),F.current($?"didCreateToken":"didEditToken",{type:O.type,tokenType:I.Z})}catch(b){const ve=(0,M.Iz)(b.response.data);G.setErrors(ve),b?.response?.data?.error?.message===Ve?D({type:"warning",message:b.response.data.message||"notification.error.tokennamenotunique"}):D({type:"warning",message:b?.response?.data?.message||"notification.error"}),f()}},[Xe,ye]=(0,t.useState)(!1),Je={...q,onChange:({target:{value:T}})=>{ye(!0),U({type:"ON_CHANGE",value:T})},onChangeSelectAll:({target:{value:T}})=>{ye(!0),U({type:"SELECT_ALL_IN_PERMISSION",value:T})},setSelectedAction:({target:{value:T}})=>{U({type:"SET_SELECTED_ACTION",value:T})}},he=ie&&!$||z&&$;return!$&&!O&&Ye!=="success"?t.createElement(ce,{apiTokenName:O?.name}):t.createElement(l,{value:Je},t.createElement(u.o,null,t.createElement(a.SL,{name:"API Tokens"}),t.createElement(i.J9,{validationSchema:me.fK,validateOnChange:!1,initialValues:{name:O?.name||"",description:O?.description||"",type:O?.type,lifespan:O?.lifespan?O.lifespan.toString():O?.lifespan},enableReinitialize:!0,onSubmit:(T,G)=>Qe(T,G)},({errors:T,handleChange:G,isSubmitting:te,values:b,setFieldValue:ve})=>(Xe&&b?.type!=="custom"&&ve("type","custom"),t.createElement(a.l0,null,t.createElement(K.Z,{backUrl:"/settings/api-tokens",title:{id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"},token:O,setToken:V,canEditInputs:he,canRegenerate:Ee,isSubmitting:te,regenerateUrl:"/admin/api-tokens/"}),t.createElement(r.D,null,t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:6},Boolean(O?.name)&&t.createElement(N.Z,{token:O?.accessKey,tokenType:I.Z}),t.createElement(X,{errors:T,onChange:G,canEditInputs:he,isCreating:$,values:b,apiToken:O,onDispatch:U,setHasChangedPermissions:ye}),t.createElement(Ne,{disabled:!he||b?.type==="read-only"||b?.type==="full-access"}))))))))}},37944:function(C,m,e){"use strict";e.d(m,{IX:function(){return a},fK:function(){return s},mk:function(){return h}});var t=e(14723),u=e(85544),r=e(76698),a=(n,g,l="en")=>{if(g&&typeof g=="number"){const c=g/24/60/60/1e3;return(0,t.Z)((0,u.Z)(new Date(n),c),"PPP",{locale:r[l]})}return"Unlimited"},i=e(19565),d=e(24346),s=d.Ry().shape({name:d.Z_(i.I0.string).max(100).required(i.I0.required),type:d.Z_(i.I0.string).oneOf(["read-only","full-access","custom"]).required(i.I0.required),description:d.Z_().nullable(),lifespan:d.Rx().integer().min(0).nullable().defined(i.I0.required)}),h=n=>{const g={allActionsIds:[],permissions:[]};return g.permissions=Object.keys(n).map(l=>({apiId:l,label:l.split("::")[1],controllers:Object.keys(n[l].controllers).map(c=>({controller:c,actions:n[l].controllers[c].map(M=>{const P=`${l}.${c}.${M}`;return l.includes("api::")&&g.allActionsIds.push(P),{action:M,actionId:P}}).flat()})).flat()})),g}},60528:function(C){function m(e,t,u,r){for(var o=e.length,a=u+(r?1:-1);r?a--:++a<o;)if(t(e[a],a,e))return a;return-1}C.exports=m},87650:function(C,m,e){var t=e(60528),u=e(25556),r=e(54256);function o(a,i,d){return i===i?r(a,i,d):t(a,u,d)}C.exports=o},15880:function(C){function m(e,t,u,r){for(var o=u-1,a=e.length;++o<a;)if(r(e[o],t))return o;return-1}C.exports=m},25556:function(C){function m(e){return e!==e}C.exports=m},11224:function(C,m,e){var t=e(26460),u=e(87650),r=e(15880),o=e(76535),a=e(66438),i=Array.prototype,d=i.splice;function v(s,y,h,n){var g=n?r:u,l=-1,c=y.length,M=s;for(s===y&&(y=a(y)),h&&(M=t(s,o(h)));++l<c;)for(var P=0,I=y[l],K=h?h(I):I;(P=g(M,K,P,n))>-1;)M!==s&&d.call(M,P,1),d.call(s,P,1);return s}C.exports=v},54256:function(C){function m(e,t,u){for(var r=u-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}C.exports=m},82879:function(C,m,e){var t=e(94569),u=e(83147),r=t(u);C.exports=r},83147:function(C,m,e){var t=e(11224);function u(r,o){return r&&r.length&&o&&o.length?t(r,o):r}C.exports=u},15738:function(C,m,e){var t=e(4293);function u(r){var o=r==null?0:r.length;return o?t(r,1,o):[]}C.exports=u},83828:function(C,m,e){"use strict";e.d(m,{U:function(){return n},y:function(){return y}});var t=e(74512),u=e(32735),r=e(8471),o=e(91045),a=e(74971),i=e(49372),d=e(87933),v=e(72850);const s=({theme:g,expanded:l,variant:c,disabled:M,error:P})=>P?`1px solid ${g.colors.danger600} !important`:M?`1px solid ${g.colors.neutral150}`:l?`1px solid ${g.colors.primary600}`:c==="primary"?`1px solid ${g.colors.neutral0}`:`1px solid ${g.colors.neutral100}`,y=(0,r.ZP)(i.Z)``,h=(0,r.ZP)(v.x)`
|
|
30
|
+
`,ue=({controllers:p,label:E,orderNumber:f,disabled:D,onExpanded:x,indexExpandendCollapsedContent:S})=>{const{value:{onChangeSelectAll:O,onChange:V,selectedActions:j,setSelectedAction:F,selectedAction:w}}=c(),[z,ie]=(0,t.useState)(!1),{formatMessage:Ee}=(0,d.Z)(),q=()=>{ie(L=>!L),x(f)};(0,t.useEffect)(()=>{S!==null&&S!==f&&z&&ie(!1)},[S,f,z]);const U=L=>L===w;return t.createElement(Ie.U,{expanded:z,onToggle:q,variant:f%2?"primary":"secondary"},t.createElement(De.B,{title:Be()(E)}),t.createElement(ke.v,null,p?.map(L=>{const ee=L.actions.every(W=>j.includes(W.actionId)),fe=L.actions.some(W=>j.includes(W.actionId));return t.createElement(k.x,{key:`${E}.${L?.controller}`},t.createElement(o.k,{justifyContent:"space-between",alignItems:"center",padding:4},t.createElement(k.x,{paddingRight:4},t.createElement(A.Z,{variant:"sigma",textColor:"neutral600"},L?.controller)),t.createElement(Ue,null),t.createElement(k.x,{paddingLeft:4},t.createElement(Te.X,{value:ee,indeterminate:!ee&&fe,onValueChange:()=>{O({target:{value:[...L.actions]}})},disabled:D},Ee({id:"app.utils.select-all",defaultMessage:"Select all"})))),t.createElement(B.r,{gap:4,padding:4},L?.actions&&L?.actions.map(W=>t.createElement(R.P,{col:6,key:W.actionId},t.createElement(be,{isActive:U(W.actionId),padding:2,hasRadius:!0},t.createElement(Te.X,{value:j.includes(W.actionId),name:W.actionId,onValueChange:()=>{V({target:{value:W.actionId}})},disabled:D},W.action),t.createElement("button",{type:"button","data-testid":"action-cog",onClick:()=>F({target:{value:W.actionId}}),style:{display:"inline-flex",alignItems:"center"}},t.createElement(Se.Z,null)))))))})))};ue.defaultProps={controllers:[],orderNumber:0,disabled:!1,onExpanded:()=>null,indexExpandendCollapsedContent:null},ue.propTypes={controllers:n().array,orderNumber:n().number,label:n().string.isRequired,disabled:n().bool,onExpanded:n().func,indexExpandendCollapsedContent:n().number};var Ze=ue;const ge=({section:p,...E})=>{const[f,D]=(0,t.useState)(null),x=S=>D(S);return t.createElement(k.x,{padding:4,background:"neutral0"},p&&p.map((S,O)=>t.createElement(Ze,{key:S.apiId,label:S.label,controllers:S.controllers,orderNumber:O,indexExpandendCollapsedContent:f,onExpanded:x,name:S.apiId,...E})))};ge.defaultProps={section:null},ge.propTypes={section:n().arrayOf(n().object)};var We=ge;const Ke=({...p})=>{const{value:{data:E}}=c(),{formatMessage:f}=(0,d.Z)();return t.createElement(B.r,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},t.createElement(R.P,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:2},t.createElement(A.Z,{variant:"delta",as:"h2"},f({id:"Settings.apiTokens.createPage.permissions.title",defaultMessage:"Permissions"})),t.createElement(A.Z,{as:"p",textColor:"neutral600"},f({id:"Settings.apiTokens.createPage.permissions.description",defaultMessage:"Only actions bound by a route are listed below."}))),E?.permissions&&t.createElement(We,{section:E?.permissions,...p})),t.createElement(Re,null))};var Ne=(0,t.memo)(Ke),me=e(37944),$e=(p,E=[])=>({...p,selectedAction:null,routes:[],selectedActions:[],data:(0,me.mk)(E)}),je=e(97889),Fe=e(82879),Pe=e.n(Fe);const ze={data:{},selectedActions:[]};var He=(p,E)=>(0,je.ZP)(p,f=>{switch(E.type){case"ON_CHANGE":{f.selectedActions.includes(E.value)?Pe()(f.selectedActions,E.value):f.selectedActions.push(E.value);break}case"SELECT_ALL_IN_PERMISSION":{E.value.every(x=>f.selectedActions.includes(x.actionId))?E.value.forEach(x=>{Pe()(f.selectedActions,x.actionId)}):E.value.forEach(x=>{f.selectedActions.push(x.actionId)});break}case"SELECT_ALL_ACTIONS":{f.selectedActions=[...f.data.allActionsIds];break}case"ON_CHANGE_READ_ONLY":{const D=f.data.allActionsIds.filter(x=>x.includes("find")||x.includes("findOne"));f.selectedActions=[...D];break}case"UPDATE_PERMISSIONS_LAYOUT":{f.data=(0,me.mk)(E.value);break}case"UPDATE_ROUTES":{f.routes={...E.value};break}case"UPDATE_PERMISSIONS":{f.selectedActions=[...E.value];break}case"SET_SELECTED_ACTION":{f.selectedAction=E.value;break}default:return f}});const Ve="Name already taken";var Ge=()=>{(0,a.go)();const{formatMessage:p}=(0,d.Z)(),{lockApp:E,unlockApp:f}=(0,a.o1)(),D=(0,a.lm)(),x=(0,y.k6)(),S=(0,s.v9)(P._),[O,V]=(0,t.useState)(x.location.state?.apiToken.accessKey?{...x.location.state.apiToken}:null),{trackUsage:j}=(0,a.rS)(),F=(0,t.useRef)(j),{setCurrentStep:w}=(0,a.c1)(),{allowedActions:{canCreate:z,canUpdate:ie,canRegenerate:Ee}}=(0,a.ss)(S.settings["api-tokens"]),[q,U]=(0,t.useReducer)(He,ze,T=>$e(T,{})),{params:{id:L}}=(0,y.$B)("/settings/api-tokens/:id"),{get:ee,post:fe,put:W}=(0,a.kY)(),$=L==="create";(0,v.useQuery)("content-api-permissions",async()=>{const[T,G]=await Promise.all(["/admin/content-api/permissions","/admin/content-api/routes"].map(async te=>{const{data:b}=await ee(te);return b.data}));U({type:"UPDATE_PERMISSIONS_LAYOUT",value:T}),U({type:"UPDATE_ROUTES",value:G}),O&&(O?.type==="read-only"&&U({type:"ON_CHANGE_READ_ONLY"}),O?.type==="full-access"&&U({type:"SELECT_ALL_ACTIONS"}),O?.type==="custom"&&U({type:"UPDATE_PERMISSIONS",value:O?.permissions}))},{onError(){D({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),(0,t.useEffect)(()=>{F.current($?"didAddTokenFromList":"didEditTokenFromList",{tokenType:I.Z})},[$]);const{status:Ye}=(0,v.useQuery)(["api-token",L],async()=>{const{data:{data:T}}=await ee(`/admin/api-tokens/${L}`);return V({...T}),T?.type==="read-only"&&U({type:"ON_CHANGE_READ_ONLY"}),T?.type==="full-access"&&U({type:"SELECT_ALL_ACTIONS"}),T?.type==="custom"&&U({type:"UPDATE_PERMISSIONS",value:T?.permissions}),T},{enabled:!$&&!O,onError(){D({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),Qe=async(T,G)=>{F.current($?"willCreateToken":"willEditToken",{tokenType:I.Z}),E();const te=T.lifespan&&parseInt(T.lifespan,10)&&T.lifespan!=="0"?parseInt(T.lifespan,10):null;try{const{data:{data:b}}=$?await fe("/admin/api-tokens",{...T,lifespan:te,permissions:T.type==="custom"?q.selectedActions:null}):await W(`/admin/api-tokens/${L}`,{name:T.name,description:T.description,type:T.type,permissions:T.type==="custom"?q.selectedActions:null});$&&(x.replace(`/settings/api-tokens/${b.id}`,{apiToken:b}),w("apiTokens.success")),f(),V({...b}),D({type:"success",message:p($?{id:"notification.success.apitokencreated",defaultMessage:"API Token successfully created"}:{id:"notification.success.apitokenedited",defaultMessage:"API Token successfully edited"})}),F.current($?"didCreateToken":"didEditToken",{type:O.type,tokenType:I.Z})}catch(b){const ve=(0,M.Iz)(b.response.data);G.setErrors(ve),b?.response?.data?.error?.message===Ve?D({type:"warning",message:b.response.data.message||"notification.error.tokennamenotunique"}):D({type:"warning",message:b?.response?.data?.message||"notification.error"}),f()}},[Xe,ye]=(0,t.useState)(!1),Je={...q,onChange:({target:{value:T}})=>{ye(!0),U({type:"ON_CHANGE",value:T})},onChangeSelectAll:({target:{value:T}})=>{ye(!0),U({type:"SELECT_ALL_IN_PERMISSION",value:T})},setSelectedAction:({target:{value:T}})=>{U({type:"SET_SELECTED_ACTION",value:T})}},he=ie&&!$||z&&$;return!$&&!O&&Ye!=="success"?t.createElement(ce,{apiTokenName:O?.name}):t.createElement(l,{value:Je},t.createElement(u.o,null,t.createElement(a.SL,{name:"API Tokens"}),t.createElement(i.J9,{validationSchema:me.fK,validateOnChange:!1,initialValues:{name:O?.name||"",description:O?.description||"",type:O?.type,lifespan:O?.lifespan?O.lifespan.toString():O?.lifespan},enableReinitialize:!0,onSubmit:(T,G)=>Qe(T,G)},({errors:T,handleChange:G,isSubmitting:te,values:b,setFieldValue:ve})=>(Xe&&b?.type!=="custom"&&ve("type","custom"),t.createElement(a.l0,null,t.createElement(K.Z,{backUrl:"/settings/api-tokens",title:{id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"},token:O,setToken:V,canEditInputs:he,canRegenerate:Ee,isSubmitting:te,regenerateUrl:"/admin/api-tokens/"}),t.createElement(r.D,null,t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:6},Boolean(O?.name)&&t.createElement(N.Z,{token:O?.accessKey,tokenType:I.Z}),t.createElement(X,{errors:T,onChange:G,canEditInputs:he,isCreating:$,values:b,apiToken:O,onDispatch:U,setHasChangedPermissions:ye}),t.createElement(Ne,{disabled:!he||b?.type==="read-only"||b?.type==="full-access"}))))))))}},37944:function(C,m,e){"use strict";e.d(m,{IX:function(){return a},fK:function(){return s},mk:function(){return h}});var t=e(14723),u=e(85544),r=e(76698),a=(n,g,l="en")=>{if(g&&typeof g=="number"){const c=g/24/60/60/1e3;return(0,t.Z)((0,u.Z)(new Date(n),c),"PPP",{locale:r[l]})}return"Unlimited"},i=e(19565),d=e(24346),s=d.Ry().shape({name:d.Z_(i.I0.string).max(100).required(i.I0.required),type:d.Z_(i.I0.string).oneOf(["read-only","full-access","custom"]).required(i.I0.required),description:d.Z_().nullable(),lifespan:d.Rx().integer().min(0).nullable().defined(i.I0.required)}),h=n=>{const g={allActionsIds:[],permissions:[]};return g.permissions=Object.keys(n).map(l=>({apiId:l,label:l.split("::")[1],controllers:Object.keys(n[l].controllers).map(c=>({controller:c,actions:n[l].controllers[c].map(M=>{const P=`${l}.${c}.${M}`;return l.includes("api::")&&g.allActionsIds.push(P),{action:M,actionId:P}}).flat()})).flat()})),g}},60528:function(C){function m(e,t,u,r){for(var o=e.length,a=u+(r?1:-1);r?a--:++a<o;)if(t(e[a],a,e))return a;return-1}C.exports=m},87650:function(C,m,e){var t=e(60528),u=e(25556),r=e(54256);function o(a,i,d){return i===i?r(a,i,d):t(a,u,d)}C.exports=o},15880:function(C){function m(e,t,u,r){for(var o=u-1,a=e.length;++o<a;)if(r(e[o],t))return o;return-1}C.exports=m},25556:function(C){function m(e){return e!==e}C.exports=m},25026:function(C,m,e){var t=e(26460),u=e(87650),r=e(15880),o=e(76535),a=e(66438),i=Array.prototype,d=i.splice;function v(s,y,h,n){var g=n?r:u,l=-1,c=y.length,M=s;for(s===y&&(y=a(y)),h&&(M=t(s,o(h)));++l<c;)for(var P=0,I=y[l],K=h?h(I):I;(P=g(M,K,P,n))>-1;)M!==s&&d.call(M,P,1),d.call(s,P,1);return s}C.exports=v},54256:function(C){function m(e,t,u){for(var r=u-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}C.exports=m},82879:function(C,m,e){var t=e(94569),u=e(83147),r=t(u);C.exports=r},83147:function(C,m,e){var t=e(25026);function u(r,o){return r&&r.length&&o&&o.length?t(r,o):r}C.exports=u},15738:function(C,m,e){var t=e(4293);function u(r){var o=r==null?0:r.length;return o?t(r,1,o):[]}C.exports=u},83828:function(C,m,e){"use strict";e.d(m,{U:function(){return n},y:function(){return y}});var t=e(74512),u=e(32735),r=e(8471),o=e(91045),a=e(74971),i=e(49372),d=e(87933),v=e(72850);const s=({theme:g,expanded:l,variant:c,disabled:M,error:P})=>P?`1px solid ${g.colors.danger600} !important`:M?`1px solid ${g.colors.neutral150}`:l?`1px solid ${g.colors.primary600}`:c==="primary"?`1px solid ${g.colors.neutral0}`:`1px solid ${g.colors.neutral100}`,y=(0,r.ZP)(i.Z)``,h=(0,r.ZP)(v.x)`
|
|
31
31
|
border: ${s};
|
|
32
32
|
|
|
33
33
|
&:hover:not([aria-disabled='true']) {
|