@strapi/admin 4.12.6 → 4.12.7
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/StrapiApp.js +1 -1
- package/admin/src/components/AuthenticatedApp/index.js +118 -0
- package/admin/src/components/AuthenticatedApp/utils/api.js +85 -0
- package/admin/src/components/AuthenticatedApp/utils/checkLatestStrapiVersion.js +11 -0
- package/admin/src/components/GuidedTour/Modal/index.js +3 -1
- package/admin/src/components/PluginsInitializer/index.js +68 -0
- package/admin/src/components/PluginsInitializer/init.js +11 -0
- package/admin/src/components/PluginsInitializer/reducer.js +22 -0
- package/admin/src/content-manager/pages/App/index.js +16 -5
- package/admin/src/content-manager/pages/EditView/Information/index.js +1 -1
- package/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js +2 -2
- package/admin/src/content-manager/pages/ListView/components/TableRows/index.js +1 -1
- package/admin/src/hooks/useSettingsForm/index.js +3 -14
- package/admin/src/hooks/useSettingsMenu/index.js +2 -2
- package/admin/src/hooks/useSettingsMenu/utils/formatLinks.js +3 -1
- package/admin/src/hooks/useSettingsMenu/utils/sortLinks.js +3 -1
- package/admin/src/index.js +1 -1
- package/admin/src/layouts/AppLayout/index.js +33 -0
- package/admin/src/pages/Admin/Onboarding/index.js +3 -1
- package/admin/src/pages/Admin/index.js +74 -80
- package/admin/src/pages/App/constants.js +1 -1
- package/admin/src/pages/App/index.js +122 -160
- package/admin/src/pages/AuthPage/index.js +4 -2
- package/admin/src/pages/HomePage/index.js +3 -1
- package/admin/src/pages/InstalledPluginsPage/index.js +3 -1
- package/admin/src/pages/{InternalErrorPage.js → InternalErrorPage/index.js} +4 -3
- package/admin/src/pages/{NotFoundPage.js → NotFoundPage/index.js} +3 -1
- package/admin/src/pages/ProfilePage/index.js +4 -2
- package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +3 -3
- package/admin/src/pages/SettingsPage/constants.js +132 -67
- package/admin/src/pages/SettingsPage/index.js +36 -31
- package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +35 -69
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +23 -0
- package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +17 -0
- package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +1 -2
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/DynamicTable/TableRows/index.js +1 -1
- package/admin/src/pages/SettingsPage/utils/createSectionsRoutes.js +11 -0
- package/admin/src/pages/SettingsPage/utils/getSectionsToDisplay.js +5 -0
- package/admin/src/pages/SettingsPage/utils/index.js +2 -0
- package/admin/src/pages/UseCasePage/index.js +175 -0
- package/admin/src/utils/checkFormValidity.js +15 -0
- package/admin/src/utils/createRoute.js +7 -5
- package/admin/src/utils/formatAPIErrors.js +3 -1
- package/admin/src/utils/getAttributesToDisplay.js +19 -0
- package/admin/src/utils/getExistingActions.js +32 -0
- package/admin/src/utils/getFullName.js +1 -1
- package/admin/src/utils/index.js +9 -0
- package/admin/src/utils/makeUniqueRoutes.js +6 -0
- package/admin/src/utils/sortLinks.js +3 -1
- package/admin/src/utils/uniqueAdminHash.js +9 -2
- package/build/{1049.9d69d231.chunk.js → 1049.f76cb14b.chunk.js} +1 -1
- package/build/1386.879bcd90.chunk.js +7 -0
- package/build/2225.c6244756.chunk.js +79 -0
- package/build/2379.f1641312.chunk.js +1 -0
- package/build/2395.46f8d0c1.chunk.js +26 -0
- package/build/2801.5cef5ec8.chunk.js +1 -0
- package/build/3483.03c24f96.chunk.js +1 -0
- package/build/3739.63e352f1.chunk.js +103 -0
- package/build/3929.5632f24d.chunk.js +114 -0
- package/build/448.829e1344.chunk.js +1 -0
- package/build/502.8ae8ef60.chunk.js +1 -0
- package/build/5483.6dd2e776.chunk.js +6 -0
- package/build/5542.2415a393.chunk.js +63 -0
- package/build/6691.4985ef22.chunk.js +105 -0
- package/build/7464.3e64a1d5.chunk.js +1 -0
- package/build/8276.10a3f883.chunk.js +26 -0
- package/build/{2747.d1442a90.chunk.js → 9806.5d5a0e8d.chunk.js} +64 -72
- package/build/9944.7af075a5.chunk.js +26 -0
- package/build/Admin-authenticatedApp.31497f74.chunk.js +79 -0
- package/build/Admin_InternalErrorPage.f45f2462.chunk.js +1 -0
- package/build/Admin_homePage.ac9dfb86.chunk.js +81 -0
- package/build/Admin_marketplace.c94239f6.chunk.js +55 -0
- package/build/Admin_pluginsPage.bbe79434.chunk.js +6 -0
- package/build/Admin_profilePage.192edc52.chunk.js +13 -0
- package/build/Admin_settingsPage.97cb9d41.chunk.js +111 -0
- package/build/admin-app.91898385.chunk.js +36 -0
- package/build/{admin-edit-roles-page.24bdf746.chunk.js → admin-edit-roles-page.6d567273.chunk.js} +1 -1
- package/build/admin-edit-users.acfd4128.chunk.js +10 -0
- package/build/{admin-users.2b3e4305.chunk.js → admin-users.00e20017.chunk.js} +2 -2
- package/build/{content-manager.fb0833bd.chunk.js → content-manager.b40f79c0.chunk.js} +78 -78
- package/build/{content-type-builder.66066281.chunk.js → content-type-builder.cd999f6e.chunk.js} +18 -18
- package/build/email-settings-page.d494d1eb.chunk.js +11 -0
- package/build/index.html +1 -1
- package/build/main.9dbe4579.js +2859 -0
- package/build/review-workflows-settings-create-view.cb08cfa2.chunk.js +1 -0
- package/build/review-workflows-settings-edit-view.3c7cbe63.chunk.js +1 -0
- package/build/review-workflows-settings-list-view.1611dc1f.chunk.js +56 -0
- package/build/runtime~main.d515c521.js +2 -0
- package/build/{sso-settings-page.4dba0670.chunk.js → sso-settings-page.12b6d8ae.chunk.js} +1 -1
- package/build/users-advanced-settings-page.f0760eb8.chunk.js +9 -0
- package/build/users-email-settings-page.ff4b32f3.chunk.js +9 -0
- package/build/users-providers-settings-page.48de0306.chunk.js +14 -0
- package/build/users-roles-settings-page.9d9a1eff.chunk.js +30 -0
- package/build/webhook-edit-page.6cb479ff.chunk.js +33 -0
- package/ee/admin/hooks/index.js +4 -0
- package/ee/admin/hooks/useAuthProviders/index.js +50 -0
- package/ee/admin/hooks/useAuthProviders/reducer.js +26 -0
- package/ee/admin/hooks/{useLicenseLimitNotification.js → useLicenseLimitNotification/index.js} +4 -2
- package/ee/admin/hooks/useLicenseLimits/index.js +1 -0
- package/ee/admin/hooks/{useLicenseLimits.js → useLicenseLimits/useLicenseLimits.js} +1 -4
- package/ee/admin/pages/App/constants.js +5 -6
- package/ee/admin/pages/AuthPage/components/Login/index.js +4 -8
- package/ee/admin/pages/AuthPage/components/Providers/index.js +5 -8
- package/ee/admin/pages/HomePage/index.js +1 -1
- package/ee/admin/pages/SettingsPage/constants.js +42 -27
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/CreateView/CreateView.js +1 -1
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/EditView.js +1 -1
- package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/ListView/ListView.js +1 -1
- package/ee/admin/pages/SettingsPage/pages/Users/ListPage/CreateAction/index.js +1 -1
- package/ee/admin/pages/SettingsPage/pages/Users/ListPage/index.js +1 -1
- package/package.json +8 -8
- package/admin/src/components/AuthenticatedApp.js +0 -229
- package/admin/src/pages/UseCasePage.js +0 -174
- package/build/1504.eff012f7.chunk.js +0 -95
- package/build/2166.c837469a.chunk.js +0 -1
- package/build/2225.33287e1b.chunk.js +0 -79
- package/build/2237.03792b63.chunk.js +0 -114
- package/build/2379.401f56f3.chunk.js +0 -1
- package/build/2395.e6a79fbb.chunk.js +0 -26
- package/build/2801.31393ffe.chunk.js +0 -1
- package/build/3483.8517171f.chunk.js +0 -1
- package/build/502.8dd074ff.chunk.js +0 -1
- package/build/5483.5bfbb00d.chunk.js +0 -6
- package/build/7464.592a9295.chunk.js +0 -1
- package/build/748.fd2e5afd.chunk.js +0 -105
- package/build/773.6381d62d.chunk.js +0 -18
- package/build/7826.399afe81.chunk.js +0 -103
- package/build/8261.2525d35c.chunk.js +0 -7
- package/build/8276.e519a707.chunk.js +0 -26
- package/build/8299.62b67c72.chunk.js +0 -1
- package/build/Admin-AuthPage.90d64342.chunk.js +0 -35
- package/build/Admin-AuthenticatedApp.379ac945.chunk.js +0 -24
- package/build/Admin-UseCasePage.1f757db5.chunk.js +0 -13
- package/build/Admin_GuidedTourModal.8ccf1fbc.chunk.js +0 -12
- package/build/Admin_InternalErrorPage.9de92c6d.chunk.js +0 -9
- package/build/Admin_NotFoundPage.21620424.chunk.js +0 -9
- package/build/Admin_Onboarding.dbfa32f6.chunk.js +0 -43
- package/build/Admin_homePage.2000cbe9.chunk.js +0 -86
- package/build/Admin_marketplace.ec80e29b.chunk.js +0 -63
- package/build/Admin_pluginsPage.0c6851f8.chunk.js +0 -14
- package/build/Admin_profilePage.78cd8495.chunk.js +0 -21
- package/build/Admin_settingsPage.1760c3ce.chunk.js +0 -119
- package/build/StrapiApp.221fac30.chunk.js +0 -5
- package/build/admin-edit-users.5d10d444.chunk.js +0 -10
- package/build/email-settings-page.2f7e35c0.chunk.js +0 -11
- package/build/main.ee3c1938.js +0 -2859
- package/build/review-workflows-settings-create-view.d24a32b9.chunk.js +0 -1
- package/build/review-workflows-settings-edit-view.6044b022.chunk.js +0 -1
- package/build/review-workflows-settings-list-view.3f0ef4bc.chunk.js +0 -56
- package/build/runtime~main.397ee447.js +0 -2
- package/build/users-advanced-settings-page.17052d72.chunk.js +0 -9
- package/build/users-email-settings-page.3de8ea50.chunk.js +0 -9
- package/build/users-providers-settings-page.0eaa916d.chunk.js +0 -14
- package/build/users-roles-settings-page.957ad48b.chunk.js +0 -55
- package/build/webhook-edit-page.665210af.chunk.js +0 -33
- package/ee/admin/hooks/useAuthProviders.js +0 -25
- /package/ee/admin/hooks/{__mocks__/useLicenseLimits.js → useLicenseLimits/__mocks__/index.js} +0 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Box,
|
|
5
|
+
Button,
|
|
6
|
+
Flex,
|
|
7
|
+
Main,
|
|
8
|
+
Option,
|
|
9
|
+
Select,
|
|
10
|
+
TextButton,
|
|
11
|
+
TextInput,
|
|
12
|
+
Typography,
|
|
13
|
+
} from '@strapi/design-system';
|
|
14
|
+
import { auth, pxToRem, useFetchClient, useNotification } from '@strapi/helper-plugin';
|
|
15
|
+
import { parse } from 'qs';
|
|
16
|
+
import { useIntl } from 'react-intl';
|
|
17
|
+
import { useHistory } from 'react-router-dom';
|
|
18
|
+
import styled from 'styled-components';
|
|
19
|
+
|
|
20
|
+
import Logo from '../../components/UnauthenticatedLogo';
|
|
21
|
+
import UnauthenticatedLayout, { LayoutContent } from '../../layouts/UnauthenticatedLayout';
|
|
22
|
+
|
|
23
|
+
export const options = [
|
|
24
|
+
{
|
|
25
|
+
intlLabel: {
|
|
26
|
+
id: 'Usecase.front-end',
|
|
27
|
+
defaultMessage: 'Front-end developer',
|
|
28
|
+
},
|
|
29
|
+
value: 'front_end_developer',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
intlLabel: {
|
|
33
|
+
id: 'Usecase.back-end',
|
|
34
|
+
defaultMessage: 'Back-end developer',
|
|
35
|
+
},
|
|
36
|
+
value: 'back_end_developer',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
intlLabel: {
|
|
40
|
+
id: 'Usecase.full-stack',
|
|
41
|
+
defaultMessage: 'Full-stack developer',
|
|
42
|
+
},
|
|
43
|
+
value: 'full_stack_developer',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
intlLabel: {
|
|
47
|
+
id: 'global.content-manager',
|
|
48
|
+
defaultMessage: 'Content Manager',
|
|
49
|
+
},
|
|
50
|
+
value: 'content_manager',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
intlLabel: {
|
|
54
|
+
id: 'Usecase.content-creator',
|
|
55
|
+
defaultMessage: 'Content Creator',
|
|
56
|
+
},
|
|
57
|
+
value: 'content_creator',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
intlLabel: {
|
|
61
|
+
id: 'Usecase.other',
|
|
62
|
+
defaultMessage: 'Other',
|
|
63
|
+
},
|
|
64
|
+
value: 'other',
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
const TypographyCenter = styled(Typography)`
|
|
69
|
+
text-align: center;
|
|
70
|
+
`;
|
|
71
|
+
|
|
72
|
+
const UseCasePage = () => {
|
|
73
|
+
const toggleNotification = useNotification();
|
|
74
|
+
const { push, location } = useHistory();
|
|
75
|
+
const { formatMessage } = useIntl();
|
|
76
|
+
const [role, setRole] = useState();
|
|
77
|
+
const [otherRole, setOtherRole] = useState('');
|
|
78
|
+
const { post } = useFetchClient();
|
|
79
|
+
|
|
80
|
+
const { firstname, email } = auth.getUserInfo();
|
|
81
|
+
const { hasAdmin } = parse(location?.search, { ignoreQueryPrefix: true });
|
|
82
|
+
const isOther = role === 'other';
|
|
83
|
+
|
|
84
|
+
const handleSubmit = async (event, skipPersona) => {
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
try {
|
|
87
|
+
await post('https://analytics.strapi.io/register', {
|
|
88
|
+
email,
|
|
89
|
+
username: firstname,
|
|
90
|
+
firstAdmin: Boolean(!hasAdmin),
|
|
91
|
+
persona: {
|
|
92
|
+
role: skipPersona ? undefined : role,
|
|
93
|
+
otherRole: skipPersona ? undefined : otherRole,
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
toggleNotification({
|
|
98
|
+
type: 'success',
|
|
99
|
+
message: {
|
|
100
|
+
id: 'Usecase.notification.success.project-created',
|
|
101
|
+
defaultMessage: 'Project has been successfully created',
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
push('/');
|
|
105
|
+
} catch (err) {
|
|
106
|
+
// Silent
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<UnauthenticatedLayout>
|
|
112
|
+
<Main labelledBy="usecase-title">
|
|
113
|
+
<LayoutContent>
|
|
114
|
+
<form onSubmit={(e) => handleSubmit(e, false)}>
|
|
115
|
+
<Flex direction="column" paddingBottom={7}>
|
|
116
|
+
<Logo />
|
|
117
|
+
<Box paddingTop={6} paddingBottom={1} width={pxToRem(250)}>
|
|
118
|
+
<TypographyCenter variant="alpha" as="h1" id="usecase-title">
|
|
119
|
+
{formatMessage({
|
|
120
|
+
id: 'Usecase.title',
|
|
121
|
+
defaultMessage: 'Tell us a bit more about yourself',
|
|
122
|
+
})}
|
|
123
|
+
</TypographyCenter>
|
|
124
|
+
</Box>
|
|
125
|
+
</Flex>
|
|
126
|
+
<Flex direction="column" alignItems="stretch" gap={6}>
|
|
127
|
+
<Select
|
|
128
|
+
id="usecase"
|
|
129
|
+
data-testid="usecase"
|
|
130
|
+
label={formatMessage({
|
|
131
|
+
id: 'Usecase.input.work-type',
|
|
132
|
+
defaultMessage: 'What type of work do you do?',
|
|
133
|
+
})}
|
|
134
|
+
// onClear={() => setRole(null)}
|
|
135
|
+
// clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}
|
|
136
|
+
onChange={setRole}
|
|
137
|
+
value={role}
|
|
138
|
+
>
|
|
139
|
+
{options.map(({ intlLabel, value }) => (
|
|
140
|
+
<Option key={value} value={value}>
|
|
141
|
+
{formatMessage(intlLabel)}
|
|
142
|
+
</Option>
|
|
143
|
+
))}
|
|
144
|
+
</Select>
|
|
145
|
+
{isOther && (
|
|
146
|
+
<TextInput
|
|
147
|
+
name="other"
|
|
148
|
+
label={formatMessage({ id: 'Usecase.other', defaultMessage: 'Other' })}
|
|
149
|
+
value={otherRole}
|
|
150
|
+
onChange={(e) => setOtherRole(e.target.value)}
|
|
151
|
+
data-testid="other"
|
|
152
|
+
/>
|
|
153
|
+
)}
|
|
154
|
+
<Button type="submit" size="L" fullWidth disabled={!role}>
|
|
155
|
+
{formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}
|
|
156
|
+
</Button>
|
|
157
|
+
</Flex>
|
|
158
|
+
</form>
|
|
159
|
+
</LayoutContent>
|
|
160
|
+
<Flex justifyContent="center">
|
|
161
|
+
<Box paddingTop={4}>
|
|
162
|
+
<TextButton onClick={() => handleSubmit(true)}>
|
|
163
|
+
{formatMessage({
|
|
164
|
+
id: 'Usecase.button.skip',
|
|
165
|
+
defaultMessage: 'Skip this question',
|
|
166
|
+
})}
|
|
167
|
+
</TextButton>
|
|
168
|
+
</Box>
|
|
169
|
+
</Flex>
|
|
170
|
+
</Main>
|
|
171
|
+
</UnauthenticatedLayout>
|
|
172
|
+
);
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
export default UseCasePage;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getYupInnerErrors } from '@strapi/helper-plugin';
|
|
2
|
+
|
|
3
|
+
const checkFormValidity = async (data, schema) => {
|
|
4
|
+
let errors = null;
|
|
5
|
+
|
|
6
|
+
try {
|
|
7
|
+
await schema.validate(data, { abortEarly: false });
|
|
8
|
+
} catch (err) {
|
|
9
|
+
errors = getYupInnerErrors(err);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return errors;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default checkFormValidity;
|
|
@@ -29,11 +29,7 @@ const LazyCompo = ({ loadComponent }) => {
|
|
|
29
29
|
return <LoadingIndicatorPage />;
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
loadComponent: PropTypes.func.isRequired,
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export const createRoute = (Component, to, exact) => {
|
|
32
|
+
const createRoute = (Component, to, exact) => {
|
|
37
33
|
return (
|
|
38
34
|
<Route
|
|
39
35
|
render={() => <LazyCompo loadComponent={Component} />}
|
|
@@ -43,3 +39,9 @@ export const createRoute = (Component, to, exact) => {
|
|
|
43
39
|
/>
|
|
44
40
|
);
|
|
45
41
|
};
|
|
42
|
+
|
|
43
|
+
LazyCompo.propTypes = {
|
|
44
|
+
loadComponent: PropTypes.func.isRequired,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default createRoute;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
const formatAPIError = ({ data }) => {
|
|
2
2
|
try {
|
|
3
3
|
return Object.keys(data).reduce((acc, current) => {
|
|
4
4
|
const errorMessage = data[current][0];
|
|
@@ -13,3 +13,5 @@ export const formatAPIErrors = ({ data }) => {
|
|
|
13
13
|
return {};
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
|
+
|
|
17
|
+
export default formatAPIError;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const getAttributesToDisplay = (contentType) => {
|
|
2
|
+
const timestamps = contentType?.options?.timestamps;
|
|
3
|
+
|
|
4
|
+
// Sometimes timestamps is false
|
|
5
|
+
let timestampsArray = Array.isArray(timestamps) ? timestamps : [];
|
|
6
|
+
const idsAttributes = ['id', '_id']; // For both SQL and mongo
|
|
7
|
+
const unwritableAttributes = [...idsAttributes, ...timestampsArray, 'publishedAt'];
|
|
8
|
+
const schemaAttributes = contentType?.attributes ?? {};
|
|
9
|
+
|
|
10
|
+
return Object.keys(schemaAttributes).reduce((acc, current) => {
|
|
11
|
+
if (!unwritableAttributes.includes(current)) {
|
|
12
|
+
acc.push({ ...schemaAttributes[current], attributeName: current });
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return acc;
|
|
16
|
+
}, []);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export default getAttributesToDisplay;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const getExistingActions = (permissions) => {
|
|
2
|
+
return Array.from(
|
|
3
|
+
new Set(
|
|
4
|
+
Object.entries(permissions).reduce((acc, current) => {
|
|
5
|
+
const getActionsPermission = (permission) =>
|
|
6
|
+
permission.reduce((accAction, currentAction) => {
|
|
7
|
+
let actionsToReturn = accAction;
|
|
8
|
+
|
|
9
|
+
if (currentAction.actions) {
|
|
10
|
+
actionsToReturn = [...actionsToReturn, ...currentAction.actions];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (typeof currentAction === 'object' && !currentAction.actions) {
|
|
14
|
+
actionsToReturn = [...actionsToReturn, ...Object.keys(currentAction)];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return actionsToReturn;
|
|
18
|
+
}, []);
|
|
19
|
+
|
|
20
|
+
return [
|
|
21
|
+
...acc,
|
|
22
|
+
...getActionsPermission([
|
|
23
|
+
...Object.values(current[1].attributes || {}),
|
|
24
|
+
current[1]?.contentTypeActions ?? {},
|
|
25
|
+
]),
|
|
26
|
+
];
|
|
27
|
+
}, [])
|
|
28
|
+
)
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default getExistingActions;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { default as checkFormValidity } from './checkFormValidity';
|
|
2
|
+
export { default as createRoute } from './createRoute';
|
|
3
|
+
export { default as formatAPIErrors } from './formatAPIErrors';
|
|
4
|
+
export { default as getAttributesToDisplay } from './getAttributesToDisplay';
|
|
5
|
+
export { default as getExistingActions } from './getExistingActions';
|
|
6
|
+
export { default as getFullName } from './getFullName';
|
|
7
|
+
export { default as makeUniqueRoutes } from './makeUniqueRoutes';
|
|
8
|
+
export { default as sortLinks } from './sortLinks';
|
|
9
|
+
export { default as hashAdminUserEmail } from './uniqueAdminHash';
|
|
@@ -10,6 +10,13 @@ export const utils = {
|
|
|
10
10
|
},
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export async function hashAdminUserEmail(payload) {
|
|
14
|
-
|
|
13
|
+
export default async function hashAdminUserEmail(payload) {
|
|
14
|
+
if (!payload) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
return await utils.digestMessage(payload.email);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
15
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1049],{39404:function(A,T,e){e.d(T,{Z:function(){return M}});var t=e(32735),y=e(82055),c=e(87933),o=e(41415),s=e(19565),a=e(66456),r=e(29439),f=e(60216),n=e.n(f),m=e(67879),u=e(44647),E=e(63465);const d=({onRegenerate:P,idToRegenerate:O,backUrl:L,onError:W})=>{const{formatMessage:i}=(0,m.Z)(),[K,B]=(0,t.useState)(!1),{regenerateData:U,isLoadingConfirmation:x}=(0,E.rW)(L,O,P,W),h=async()=>{U(),B(!1)};return t.createElement(t.Fragment,null,t.createElement(o.z,{startIcon:t.createElement(u.Z,null),type:"button",size:"S",variant:"tertiary",onClick:()=>B(!0),name:"regenerate"},i({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),t.createElement(s.QH,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:t.createElement(u.Z,null),isConfirmButtonLoading:x,isOpen:K,onToggleDialog:()=>B(!1),onConfirm:h,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"}}))};d.defaultProps={onRegenerate(){},onError:void 0},d.propTypes={onRegenerate:n().func,idToRegenerate:n().oneOfType([n().number,n().string]).isRequired,backUrl:n().string.isRequired,onError:n().func};var g=d;const l=({title:P,token:O,setToken:L,canEditInputs:W,canRegenerate:i,isSubmitting:K,backUrl:B,regenerateUrl:U,onErrorRegenerate:x})=>{const{formatMessage:h}=(0,m.Z)(),z=j=>{L({...O,accessKey:j})};return t.createElement(y.T,{title:O?.name||h(P),primaryAction:W?t.createElement(c.k,{gap:2},i&&O?.id&&t.createElement(g,{backUrl:U,onRegenerate:z,idToRegenerate:O?.id,onError:x}),t.createElement(o.z,{disabled:K,loading:K,startIcon:t.createElement(a.Z,null),type:"submit",size:"S"},h({id:"global.save",defaultMessage:"Save"}))):i&&O?.id&&t.createElement(g,{onRegenerate:z,idToRegenerate:O?.id,backUrl:U}),navigationAction:t.createElement(s.rU,{startIcon:t.createElement(r.Z,null),to:B},h({id:"global.back",defaultMessage:"Back"})),ellipsis:!0})};l.propTypes={token:n().shape({id:n().oneOfType([n().number,n().string]),type:n().string,lifespan:n().oneOfType([n().number,n().string]),name:n().string,accessKey:n().string,permissions:n().array,description:n().string,createdAt:n().string}),canEditInputs:n().bool.isRequired,canRegenerate:n().bool.isRequired,setToken:n().func.isRequired,isSubmitting:n().bool.isRequired,backUrl:n().string.isRequired,title:n().shape({id:n().string,label:n().string}).isRequired,regenerateUrl:n().string.isRequired,onErrorRegenerate:n().func},l.defaultProps={token:void 0,onErrorRegenerate:void 0};var M=l},82505:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(49372),s=e(60216),a=e.n(s),r=e(67879),f=e(25652);const n=({token:m,errors:u,values:E,onChange:d,isCreating:g})=>{const{formatMessage:l}=(0,r.Z)();return t.createElement(t.Fragment,null,t.createElement(y.P,{name:"lifespan",label:l({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:E.lifespan!==null?E.lifespan:"0",error:u.lifespan?l(u.lifespan?.id?u.lifespan:{id:u.lifespan,defaultMessage:u.lifespan}):null,onChange:M=>{d({target:{name:"lifespan",value:M}})},required:!0,disabled:!g,placeholder:"Select"},t.createElement(c.W,{value:"604800000"},l({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),t.createElement(c.W,{value:"2592000000"},l({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),t.createElement(c.W,{value:"7776000000"},l({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),t.createElement(c.W,{value:"0"},l({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),t.createElement(o.Z,{variant:"pi",textColor:"neutral600"},!g&&`${l({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,f.IX)(m?.createdAt,parseInt(E.lifespan,10))}`))};n.propTypes={errors:a().shape({lifespan:a().string}),onChange:a().func.isRequired,values:a().shape({lifespan:a().oneOfType([a().number,a().string])}).isRequired,isCreating:a().bool.isRequired,token:a().shape({id:a().oneOfType([a().number,a().string]),type:a().string,lifespan:a().string,name:a().string,accessKey:a().string,permissions:a().array,description:a().string,createdAt:a().string})},n.defaultProps={errors:{},token:{}},T.Z=n},7210:function(A,T,e){var t=e(32735),y=e(50563),c=e(19565),o=e(47765),s=e(11631),a=e(60216),r=e.n(a),f=e(67879);const n=({token:m,tokenType:u})=>{const{formatMessage:E}=(0,f.Z)(),d=(0,c.lm)(),{trackUsage:g}=(0,c.rS)(),{copy:l}=(0,c.VP)(),M=P=>async()=>{await l(P)&&(g("didCopyTokenKey",{tokenType:u}),d({type:"success",message:{id:"Settings.tokens.notification.copied"}}))};return t.createElement(c.Y_,{endAction:m&&t.createElement("span",{style:{alignSelf:"start"}},t.createElement(y.h,{label:E({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),onClick:M(m),noBorder:!0,icon:t.createElement(o.Z,null),style:{padding:0,height:"1rem"}})),title:m||E({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:E(m?{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(s.Z,null),iconBackground:"neutral100"})};n.defaultProps={token:null},n.propTypes={token:r().string,tokenType:r().string.isRequired},T.Z=n},58380:function(A,T,e){var t=e(32735),y=e(33475),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.g,{label:u({id:"Settings.tokens.form.description",defaultMessage:"Description"}),id:"description",error:r.description?u(r.description?.id?r.description:{id:r.description,defaultMessage:r.description}):null,onChange:n,disabled:!m},f.description)};a.propTypes={errors:o().shape({description:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({description:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},37823:function(A,T,e){var t=e(32735),y=e(10369),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.o,{name:"name",error:r.name?u(r.name?.id?r.name:{id:r.name,defaultMessage:r.name}):null,label:u({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:n,value:f.name,disabled:!m,required:!0})};a.propTypes={errors:o().shape({name:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({name:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},32655:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(60216),s=e.n(o),a=e(67879);const r=({name:f,errors:n,values:m,onChange:u,canEditInputs:E,options:d,label:g})=>{const{formatMessage:l}=(0,a.Z)();return t.createElement(y.P,{name:f,label:l({id:g.id,defaultMessage:g.defaultMessage}),value:m&&m[f],error:n[f]?l(n[f]?.id?n[f]:{id:n[f],defaultMessage:n[f]}):null,onChange:u,placeholder:"Select",required:!0,disabled:!E},d&&d.map(({value:M,label:P})=>t.createElement(c.W,{key:M,value:M},l(P))))};r.propTypes={name:s().string,options:s().arrayOf(s().shape({label:s().shape({id:s().string,defaultMessage:s().string}),value:s().string})),errors:s().shape({type:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({type:s().string}).isRequired,label:s().shape({id:s().string,defaultMessage:s().string}).isRequired},r.defaultProps={name:"type",errors:{},options:[]},T.Z=r},49756:function(A,T,e){e.d(T,{Z:function(){return t},f:function(){return y}});const t="api-token",y="transfer-token"},25652:function(A,T,e){e.d(T,{IX:function(){return s},fK:function(){return n},mk:function(){return u}});var t=e(14723),y=e(85544),c=e(76698),s=(E,d,g="en")=>{if(d&&typeof d=="number"){const l=d/24/60/60/1e3;return(0,t.Z)((0,y.Z)(new Date(E),l),"PPP",{locale:c[g]})}return"Unlimited"},a=e(19565),r=e(24346),n=r.Ry().shape({name:r.Z_(a.I0.string).max(100).required(a.I0.required),type:r.Z_(a.I0.string).oneOf(["read-only","full-access","custom"]).required(a.I0.required),description:r.Z_().nullable(),lifespan:r.Rx().integer().min(0).nullable().defined(a.I0.required)}),u=E=>{const d={allActionsIds:[],permissions:[]};return d.permissions=Object.keys(E).map(g=>({apiId:g,label:g.split("::")[1],controllers:Object.keys(E[g].controllers).map(l=>({controller:l,actions:E[g].controllers[l].map(M=>{const P=`${g}.${l}.${M}`;return g.includes("api::")&&d.allActionsIds.push(P),{action:M,actionId:P}}).flat()})).flat()})),d}},1930:function(A,T,e){e.d(T,{Z:function(){return ne}});var t=e(32735),y=e(27649),c=e(17e3),o=e(87933),s=e(19565),a=e(92802),r=e(67879),f=e(20108),n=e(15062),m=e(53038),u=e(5074),E=e(30305),d=e(49756),g=e(39404),l=e(7210),M=e(72850),P=e(49372),O=e(15335),L=e(5803),W=e(60216),i=e.n(W),K=e(82505),B=e(58380),U=e(37823),x=e(32655);const h=({errors:C,onChange:I,canEditInputs:Z,isCreating:D,values:S,transferToken:v})=>{const{formatMessage:F}=(0,r.Z)(),Q=[{value:"push",label:{id:"Settings.transferTokens.types.push",defaultMessage:"Push"}},{value:"pull",label:{id:"Settings.transferTokens.types.pull",defaultMessage:"Pull"}},{value:"push-pull",label:{id:"Settings.transferTokens.types.push-pull",defaultMessage:"Full Access"}}];return t.createElement(M.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(P.Z,{variant:"delta",as:"h2"},F({id:"global.details",defaultMessage:"Details"})),t.createElement(O.r,{gap:5},t.createElement(L.P,{key:"name",col:6,xs:12},t.createElement(U.Z,{errors:C,values:S,canEditInputs:Z,onChange:I})),t.createElement(L.P,{key:"description",col:6,xs:12},t.createElement(B.Z,{errors:C,values:S,canEditInputs:Z,onChange:I})),t.createElement(L.P,{key:"lifespan",col:6,xs:12},t.createElement(K.Z,{isCreating:D,errors:C,values:S,onChange:I,token:v})),t.createElement(L.P,{key:"permissions",col:6,xs:12},t.createElement(x.Z,{name:"permissions",values:S,errors:C,label:{id:"Settings.tokens.form.type",defaultMessage:"Token type"},onChange:V=>{I({target:{name:"permissions",value:V}})},options:Q,canEditInputs:Z})))))};h.propTypes={errors:i().shape({name:i().string,description:i().string,lifespan:i().string,type:i().string}),onChange:i().func.isRequired,canEditInputs:i().bool.isRequired,values:i().shape({name:i().string,description:i().string,lifespan:i().oneOfType([i().number,i().string]),type:i().string}).isRequired,isCreating:i().bool.isRequired,transferToken: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})},h.defaultProps={errors:{},transferToken:{}};var z=h,j=e(82055),_=e(41415),q=e(66456);const G=({transferTokenName:C})=>{const{formatMessage:I}=(0,r.Z)();return(0,s.go)(),t.createElement(y.o,{"aria-busy":"true"},t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(j.T,{primaryAction:t.createElement(_.z,{disabled:!0,startIcon:t.createElement(q.Z,null),type:"button",size:"L"},I({id:"global.save",defaultMessage:"Save"})),title:C||I({id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"})}),t.createElement(c.D,null,t.createElement(s.dO,null)))};G.defaultProps={transferTokenName:null},G.propTypes={transferTokenName:i().string};var w=G,N=e(24346),ee=N.Ry().shape({name:N.Z_(s.I0.string).max(100).required(s.I0.required),description:N.Z_().nullable(),lifespan:N.Rx().integer().min(0).nullable().defined(s.I0.required),permissions:N.Z_(s.I0.string).required(s.I0.required)});const te="Name already taken";var ne=()=>{(0,s.go)();const{formatMessage:C}=(0,r.Z)(),{lockApp:I,unlockApp:Z}=(0,s.o1)(),D=(0,s.lm)(),S=(0,m.k6)(),[v,F]=(0,t.useState)(S.location.state?.transferToken.accessKey?{...S.location.state.transferToken}:null),{trackUsage:Q}=(0,s.rS)(),V=(0,t.useRef)(Q),{setCurrentStep:se}=(0,s.c1)(),ae=(0,n.v9)(E._),{allowedActions:{canCreate:re,canUpdate:ie,canRegenerate:oe}}=(0,s.ss)(ae.settings["transfer-tokens"]),{params:{id:Y}}=(0,m.$B)("/settings/transfer-tokens/:id"),{get:le,post:de,put:ce}=(0,s.kY)(),R=Y==="create",{formatAPIError:J}=(0,s.So)();(0,t.useEffect)(()=>{V.current(R?"didAddTokenFromList":"didEditTokenFromList",{tokenType:d.f})},[R]);const{status:ue}=(0,f.useQuery)(["transfer-token",Y],async()=>{const{data:{data:p}}=await le(`/admin/transfer/tokens/${Y}`);return F({...p}),p},{enabled:!R&&!v,onError(p){p.response.data.error.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})}}),ge=async(p,$)=>{V.current(R?"willCreateToken":"willEditToken",{tokenType:d.f}),I();const X=p.lifespan&&parseInt(p.lifespan,10)&&p.lifespan!=="0"?parseInt(p.lifespan,10):null,H=p.permissions.split("-");try{const{data:{data:k}}=R?await de("/admin/transfer/tokens",{...p,lifespan:X,permissions:H}):await ce(`/admin/transfer/tokens/${Y}`,{name:p.name,description:p.description,permissions:H});Z(),R&&(S.replace(`/settings/transfer-tokens/${k.id}`,{transferToken:k}),se("transferTokens.success")),F({...k}),D({type:"success",message:C(R?{id:"notification.success.transfertokencreated",defaultMessage:"Transfer Token successfully created"}:{id:"notification.success.transfertokenedited",defaultMessage:"Transfer Token successfully edited"})}),V.current(R?"didCreateToken":"didEditToken",{type:v?.permissions,tokenType:d.f})}catch(k){const fe=(0,u.I)(k.response.data);$.setErrors(fe),k?.response?.data?.error?.message===te?D({type:"warning",message:k.response.data.message||"notification.error.tokennamenotunique"}):k?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:k?.response?.data?.message||"notification.error"}),Z()}},b=ie&&!R||re&&R;if(!R&&!v&&ue!=="success")return t.createElement(w,{transferTokenName:v?.name});const pe=p=>{p?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})};return t.createElement(y.o,null,t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(a.J9,{validationSchema:ee,validateOnChange:!1,initialValues:{name:v?.name||"",description:v?.description||"",lifespan:v?.lifespan?v.lifespan.toString():v?.lifespan,permissions:v?.permissions.join("-")},enableReinitialize:!0,onSubmit:(p,$)=>ge(p,$)},({errors:p,handleChange:$,isSubmitting:X,values:H})=>t.createElement(s.l0,null,t.createElement(g.Z,{backUrl:"/settings/transfer-tokens",title:{id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"},token:v,setToken:F,canEditInputs:b,canRegenerate:oe,isSubmitting:X,regenerateUrl:"/admin/transfer/tokens/",onErrorRegenerate:pe}),t.createElement(c.D,null,t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:6},Boolean(v?.name)&&t.createElement(l.Z,{token:v?.accessKey,tokenType:d.f}),t.createElement(z,{errors:p,onChange:$,canEditInputs:b,isCreating:R,values:H,transferToken:v}))))))}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1049],{39404:function(A,T,e){e.d(T,{Z:function(){return M}});var t=e(32735),y=e(82055),c=e(87933),o=e(41415),s=e(19565),a=e(66456),r=e(29439),f=e(60216),n=e.n(f),m=e(67879),u=e(44647),E=e(79652);const d=({onRegenerate:R,idToRegenerate:O,backUrl:L,onError:W})=>{const{formatMessage:i}=(0,m.Z)(),[K,B]=(0,t.useState)(!1),{regenerateData:U,isLoadingConfirmation:x}=(0,E.rW)(L,O,R,W),h=async()=>{U(),B(!1)};return t.createElement(t.Fragment,null,t.createElement(o.z,{startIcon:t.createElement(u.Z,null),type:"button",size:"S",variant:"tertiary",onClick:()=>B(!0),name:"regenerate"},i({id:"Settings.tokens.regenerate",defaultMessage:"Regenerate"})),t.createElement(s.QH,{bodyText:{id:"Settings.tokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:t.createElement(u.Z,null),isConfirmButtonLoading:x,isOpen:K,onToggleDialog:()=>B(!1),onConfirm:h,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"}}))};d.defaultProps={onRegenerate(){},onError:void 0},d.propTypes={onRegenerate:n().func,idToRegenerate:n().oneOfType([n().number,n().string]).isRequired,backUrl:n().string.isRequired,onError:n().func};var g=d;const l=({title:R,token:O,setToken:L,canEditInputs:W,canRegenerate:i,isSubmitting:K,backUrl:B,regenerateUrl:U,onErrorRegenerate:x})=>{const{formatMessage:h}=(0,m.Z)(),z=j=>{L({...O,accessKey:j})};return t.createElement(y.T,{title:O?.name||h(R),primaryAction:W?t.createElement(c.k,{gap:2},i&&O?.id&&t.createElement(g,{backUrl:U,onRegenerate:z,idToRegenerate:O?.id,onError:x}),t.createElement(o.z,{disabled:K,loading:K,startIcon:t.createElement(a.Z,null),type:"submit",size:"S"},h({id:"global.save",defaultMessage:"Save"}))):i&&O?.id&&t.createElement(g,{onRegenerate:z,idToRegenerate:O?.id,backUrl:U}),navigationAction:t.createElement(s.rU,{startIcon:t.createElement(r.Z,null),to:B},h({id:"global.back",defaultMessage:"Back"})),ellipsis:!0})};l.propTypes={token:n().shape({id:n().oneOfType([n().number,n().string]),type:n().string,lifespan:n().oneOfType([n().number,n().string]),name:n().string,accessKey:n().string,permissions:n().array,description:n().string,createdAt:n().string}),canEditInputs:n().bool.isRequired,canRegenerate:n().bool.isRequired,setToken:n().func.isRequired,isSubmitting:n().bool.isRequired,backUrl:n().string.isRequired,title:n().shape({id:n().string,label:n().string}).isRequired,regenerateUrl:n().string.isRequired,onErrorRegenerate:n().func},l.defaultProps={token:void 0,onErrorRegenerate:void 0};var M=l},82505:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(49372),s=e(60216),a=e.n(s),r=e(67879),f=e(25652);const n=({token:m,errors:u,values:E,onChange:d,isCreating:g})=>{const{formatMessage:l}=(0,r.Z)();return t.createElement(t.Fragment,null,t.createElement(y.P,{name:"lifespan",label:l({id:"Settings.tokens.form.duration",defaultMessage:"Token duration"}),value:E.lifespan!==null?E.lifespan:"0",error:u.lifespan?l(u.lifespan?.id?u.lifespan:{id:u.lifespan,defaultMessage:u.lifespan}):null,onChange:M=>{d({target:{name:"lifespan",value:M}})},required:!0,disabled:!g,placeholder:"Select"},t.createElement(c.W,{value:"604800000"},l({id:"Settings.tokens.duration.7-days",defaultMessage:"7 days"})),t.createElement(c.W,{value:"2592000000"},l({id:"Settings.tokens.duration.30-days",defaultMessage:"30 days"})),t.createElement(c.W,{value:"7776000000"},l({id:"Settings.tokens.duration.90-days",defaultMessage:"90 days"})),t.createElement(c.W,{value:"0"},l({id:"Settings.tokens.duration.unlimited",defaultMessage:"Unlimited"}))),t.createElement(o.Z,{variant:"pi",textColor:"neutral600"},!g&&`${l({id:"Settings.tokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${(0,f.IX)(m?.createdAt,parseInt(E.lifespan,10))}`))};n.propTypes={errors:a().shape({lifespan:a().string}),onChange:a().func.isRequired,values:a().shape({lifespan:a().oneOfType([a().number,a().string])}).isRequired,isCreating:a().bool.isRequired,token:a().shape({id:a().oneOfType([a().number,a().string]),type:a().string,lifespan:a().string,name:a().string,accessKey:a().string,permissions:a().array,description:a().string,createdAt:a().string})},n.defaultProps={errors:{},token:{}},T.Z=n},7210:function(A,T,e){var t=e(32735),y=e(50563),c=e(19565),o=e(47765),s=e(11631),a=e(60216),r=e.n(a),f=e(67879);const n=({token:m,tokenType:u})=>{const{formatMessage:E}=(0,f.Z)(),d=(0,c.lm)(),{trackUsage:g}=(0,c.rS)(),{copy:l}=(0,c.VP)(),M=R=>async()=>{await l(R)&&(g("didCopyTokenKey",{tokenType:u}),d({type:"success",message:{id:"Settings.tokens.notification.copied"}}))};return t.createElement(c.Y_,{endAction:m&&t.createElement("span",{style:{alignSelf:"start"}},t.createElement(y.h,{label:E({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),onClick:M(m),noBorder:!0,icon:t.createElement(o.Z,null),style:{padding:0,height:"1rem"}})),title:m||E({id:"Settings.tokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:E(m?{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(s.Z,null),iconBackground:"neutral100"})};n.defaultProps={token:null},n.propTypes={token:r().string,tokenType:r().string.isRequired},T.Z=n},58380:function(A,T,e){var t=e(32735),y=e(33475),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.g,{label:u({id:"Settings.tokens.form.description",defaultMessage:"Description"}),id:"description",error:r.description?u(r.description?.id?r.description:{id:r.description,defaultMessage:r.description}):null,onChange:n,disabled:!m},f.description)};a.propTypes={errors:o().shape({description:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({description:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},37823:function(A,T,e){var t=e(32735),y=e(10369),c=e(60216),o=e.n(c),s=e(67879);const a=({errors:r,values:f,onChange:n,canEditInputs:m})=>{const{formatMessage:u}=(0,s.Z)();return t.createElement(y.o,{name:"name",error:r.name?u(r.name?.id?r.name:{id:r.name,defaultMessage:r.name}):null,label:u({id:"Settings.tokens.form.name",defaultMessage:"Name"}),onChange:n,value:f.name,disabled:!m,required:!0})};a.propTypes={errors:o().shape({name:o().string}),onChange:o().func.isRequired,canEditInputs:o().bool.isRequired,values:o().shape({name:o().string}).isRequired},a.defaultProps={errors:{}},T.Z=a},32655:function(A,T,e){var t=e(32735),y=e(68465),c=e(84967),o=e(60216),s=e.n(o),a=e(67879);const r=({name:f,errors:n,values:m,onChange:u,canEditInputs:E,options:d,label:g})=>{const{formatMessage:l}=(0,a.Z)();return t.createElement(y.P,{name:f,label:l({id:g.id,defaultMessage:g.defaultMessage}),value:m&&m[f],error:n[f]?l(n[f]?.id?n[f]:{id:n[f],defaultMessage:n[f]}):null,onChange:u,placeholder:"Select",required:!0,disabled:!E},d&&d.map(({value:M,label:R})=>t.createElement(c.W,{key:M,value:M},l(R))))};r.propTypes={name:s().string,options:s().arrayOf(s().shape({label:s().shape({id:s().string,defaultMessage:s().string}),value:s().string})),errors:s().shape({type:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({type:s().string}).isRequired,label:s().shape({id:s().string,defaultMessage:s().string}).isRequired},r.defaultProps={name:"type",errors:{},options:[]},T.Z=r},49756:function(A,T,e){e.d(T,{Z:function(){return t},f:function(){return y}});const t="api-token",y="transfer-token"},25652:function(A,T,e){e.d(T,{IX:function(){return s},fK:function(){return n},mk:function(){return u}});var t=e(14723),y=e(85544),c=e(76698),s=(E,d,g="en")=>{if(d&&typeof d=="number"){const l=d/24/60/60/1e3;return(0,t.Z)((0,y.Z)(new Date(E),l),"PPP",{locale:c[g]})}return"Unlimited"},a=e(19565),r=e(24346),n=r.Ry().shape({name:r.Z_(a.I0.string).max(100).required(a.I0.required),type:r.Z_(a.I0.string).oneOf(["read-only","full-access","custom"]).required(a.I0.required),description:r.Z_().nullable(),lifespan:r.Rx().integer().min(0).nullable().defined(a.I0.required)}),u=E=>{const d={allActionsIds:[],permissions:[]};return d.permissions=Object.keys(E).map(g=>({apiId:g,label:g.split("::")[1],controllers:Object.keys(E[g].controllers).map(l=>({controller:l,actions:E[g].controllers[l].map(M=>{const R=`${g}.${l}.${M}`;return g.includes("api::")&&d.allActionsIds.push(R),{action:M,actionId:R}}).flat()})).flat()})),d}},1930:function(A,T,e){e.d(T,{Z:function(){return ne}});var t=e(32735),y=e(27649),c=e(17e3),o=e(87933),s=e(19565),a=e(92802),r=e(67879),f=e(20108),n=e(15062),m=e(53038),u=e(24388),E=e(30305),d=e(49756),g=e(39404),l=e(7210),M=e(72850),R=e(49372),O=e(15335),L=e(5803),W=e(60216),i=e.n(W),K=e(82505),B=e(58380),U=e(37823),x=e(32655);const h=({errors:C,onChange:k,canEditInputs:Z,isCreating:D,values:S,transferToken:v})=>{const{formatMessage:F}=(0,r.Z)(),Q=[{value:"push",label:{id:"Settings.transferTokens.types.push",defaultMessage:"Push"}},{value:"pull",label:{id:"Settings.transferTokens.types.pull",defaultMessage:"Pull"}},{value:"push-pull",label:{id:"Settings.transferTokens.types.push-pull",defaultMessage:"Full Access"}}];return t.createElement(M.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(R.Z,{variant:"delta",as:"h2"},F({id:"global.details",defaultMessage:"Details"})),t.createElement(O.r,{gap:5},t.createElement(L.P,{key:"name",col:6,xs:12},t.createElement(U.Z,{errors:C,values:S,canEditInputs:Z,onChange:k})),t.createElement(L.P,{key:"description",col:6,xs:12},t.createElement(B.Z,{errors:C,values:S,canEditInputs:Z,onChange:k})),t.createElement(L.P,{key:"lifespan",col:6,xs:12},t.createElement(K.Z,{isCreating:D,errors:C,values:S,onChange:k,token:v})),t.createElement(L.P,{key:"permissions",col:6,xs:12},t.createElement(x.Z,{name:"permissions",values:S,errors:C,label:{id:"Settings.tokens.form.type",defaultMessage:"Token type"},onChange:V=>{k({target:{name:"permissions",value:V}})},options:Q,canEditInputs:Z})))))};h.propTypes={errors:i().shape({name:i().string,description:i().string,lifespan:i().string,type:i().string}),onChange:i().func.isRequired,canEditInputs:i().bool.isRequired,values:i().shape({name:i().string,description:i().string,lifespan:i().oneOfType([i().number,i().string]),type:i().string}).isRequired,isCreating:i().bool.isRequired,transferToken: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})},h.defaultProps={errors:{},transferToken:{}};var z=h,j=e(82055),_=e(41415),q=e(66456);const G=({transferTokenName:C})=>{const{formatMessage:k}=(0,r.Z)();return(0,s.go)(),t.createElement(y.o,{"aria-busy":"true"},t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(j.T,{primaryAction:t.createElement(_.z,{disabled:!0,startIcon:t.createElement(q.Z,null),type:"button",size:"L"},k({id:"global.save",defaultMessage:"Save"})),title:C||k({id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"})}),t.createElement(c.D,null,t.createElement(s.dO,null)))};G.defaultProps={transferTokenName:null},G.propTypes={transferTokenName:i().string};var w=G,N=e(24346),ee=N.Ry().shape({name:N.Z_(s.I0.string).max(100).required(s.I0.required),description:N.Z_().nullable(),lifespan:N.Rx().integer().min(0).nullable().defined(s.I0.required),permissions:N.Z_(s.I0.string).required(s.I0.required)});const te="Name already taken";var ne=()=>{(0,s.go)();const{formatMessage:C}=(0,r.Z)(),{lockApp:k,unlockApp:Z}=(0,s.o1)(),D=(0,s.lm)(),S=(0,m.k6)(),[v,F]=(0,t.useState)(S.location.state?.transferToken.accessKey?{...S.location.state.transferToken}:null),{trackUsage:Q}=(0,s.rS)(),V=(0,t.useRef)(Q),{setCurrentStep:se}=(0,s.c1)(),ae=(0,n.v9)(E._),{allowedActions:{canCreate:re,canUpdate:ie,canRegenerate:oe}}=(0,s.ss)(ae.settings["transfer-tokens"]),{params:{id:Y}}=(0,m.$B)("/settings/transfer-tokens/:id"),{get:le,post:de,put:ce}=(0,s.kY)(),P=Y==="create",{formatAPIError:J}=(0,s.So)();(0,t.useEffect)(()=>{V.current(P?"didAddTokenFromList":"didEditTokenFromList",{tokenType:d.f})},[P]);const{status:ue}=(0,f.useQuery)(["transfer-token",Y],async()=>{const{data:{data:p}}=await le(`/admin/transfer/tokens/${Y}`);return F({...p}),p},{enabled:!P&&!v,onError(p){p.response.data.error.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})}}),ge=async(p,$)=>{V.current(P?"willCreateToken":"willEditToken",{tokenType:d.f}),k();const X=p.lifespan&&parseInt(p.lifespan,10)&&p.lifespan!=="0"?parseInt(p.lifespan,10):null,H=p.permissions.split("-");try{const{data:{data:I}}=P?await de("/admin/transfer/tokens",{...p,lifespan:X,permissions:H}):await ce(`/admin/transfer/tokens/${Y}`,{name:p.name,description:p.description,permissions:H});Z(),P&&(S.replace(`/settings/transfer-tokens/${I.id}`,{transferToken:I}),se("transferTokens.success")),F({...I}),D({type:"success",message:C(P?{id:"notification.success.transfertokencreated",defaultMessage:"Transfer Token successfully created"}:{id:"notification.success.transfertokenedited",defaultMessage:"Transfer Token successfully edited"})}),V.current(P?"didCreateToken":"didEditToken",{type:v?.permissions,tokenType:d.f})}catch(I){const fe=(0,u.Iz)(I.response.data);$.setErrors(fe),I?.response?.data?.error?.message===te?D({type:"warning",message:I.response.data.message||"notification.error.tokennamenotunique"}):I?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:I?.response?.data?.message||"notification.error"}),Z()}},b=ie&&!P||re&&P;if(!P&&!v&&ue!=="success")return t.createElement(w,{transferTokenName:v?.name});const pe=p=>{p?.response?.data?.error?.details?.code==="INVALID_TOKEN_SALT"?D({type:"warning",message:{id:"notification.error.invalid.configuration",defaultMessage:"You have an invalid configuration, check your server log for more information."}}):D({type:"warning",message:J(p)})};return t.createElement(y.o,null,t.createElement(s.SL,{name:"Transfer Tokens"}),t.createElement(a.J9,{validationSchema:ee,validateOnChange:!1,initialValues:{name:v?.name||"",description:v?.description||"",lifespan:v?.lifespan?v.lifespan.toString():v?.lifespan,permissions:v?.permissions.join("-")},enableReinitialize:!0,onSubmit:(p,$)=>ge(p,$)},({errors:p,handleChange:$,isSubmitting:X,values:H})=>t.createElement(s.l0,null,t.createElement(g.Z,{backUrl:"/settings/transfer-tokens",title:{id:"Settings.transferTokens.createPage.title",defaultMessage:"Create Transfer Token"},token:v,setToken:F,canEditInputs:b,canRegenerate:oe,isSubmitting:X,regenerateUrl:"/admin/transfer/tokens/",onErrorRegenerate:pe}),t.createElement(c.D,null,t.createElement(o.k,{direction:"column",alignItems:"stretch",gap:6},Boolean(v?.name)&&t.createElement(l.Z,{token:v?.accessKey,tokenType:d.f}),t.createElement(z,{errors:p,onChange:$,canEditInputs:b,isCreating:P,values:H,transferToken:v}))))))}}}]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[1386],{31386:function(E,v,c){"use strict";c.r(v),c.d(v,{ROUTES_EE:function(){return l}});var u=c(32735),a=c(19565),p=c(49189),d=c.n(p),C=c(67879),t=c(53038);const o=()=>{const{params:{authResponse:n}}=(0,t.$B)("/auth/login/:authResponse"),{formatMessage:r}=(0,C.Z)(),{push:e}=(0,t.k6)(),g=(0,u.useRef)(r);let i=(0,u.useCallback)(()=>{e(`/auth/oops?info=${encodeURIComponent(g.current({id:"Auth.form.button.login.providers.error",defaultMessage:"We cannot connect you through the selected provider."}))}`)},[e]);const{get:f}=(0,a.kY)(),s=(0,u.useCallback)(async()=>{try{const h=d().get("jwtToken");if(a.I8.clearAppStorage(),h){a.I8.setToken(h,!0);const R="/admin/users/me",{data:{data:I}}=await f(R);a.I8.setUserInfo(I,!0),d().remove("jwtToken"),e("/auth/login")}}catch{i()}},[f,e,i]);return(0,u.useEffect)(()=>{n==="error"&&i(),n==="success"&&s()},[n,s,i]),u.createElement(a.dO,null)};var m=null;const l=[{Component:()=>({default:o}),to:"/auth/login/:authResponse",exact:!0}]},49189:function(E,v,c){var u,a;/*!
|
|
2
|
+
* JavaScript Cookie v2.2.1
|
|
3
|
+
* https://github.com/js-cookie/js-cookie
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
|
|
6
|
+
* Released under the MIT license
|
|
7
|
+
*/(function(p){var d;if(u=p,a=typeof u=="function"?u.call(v,c,v,E):u,a!==void 0&&(E.exports=a),d=!0,E.exports=p(),d=!0,!d){var C=window.Cookies,t=window.Cookies=p();t.noConflict=function(){return window.Cookies=C,t}}})(function(){function p(){for(var t=0,o={};t<arguments.length;t++){var m=arguments[t];for(var l in m)o[l]=m[l]}return o}function d(t){return t.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}function C(t){function o(){}function m(n,r,e){if(!(typeof document>"u")){e=p({path:"/"},o.defaults,e),typeof e.expires=="number"&&(e.expires=new Date(new Date*1+e.expires*864e5)),e.expires=e.expires?e.expires.toUTCString():"";try{var g=JSON.stringify(r);/^[\{\[]/.test(g)&&(r=g)}catch{}r=t.write?t.write(r,n):encodeURIComponent(String(r)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var i="";for(var f in e)e[f]&&(i+="; "+f,e[f]!==!0&&(i+="="+e[f].split(";")[0]));return document.cookie=n+"="+r+i}}function l(n,r){if(!(typeof document>"u")){for(var e={},g=document.cookie?document.cookie.split("; "):[],i=0;i<g.length;i++){var f=g[i].split("="),s=f.slice(1).join("=");!r&&s.charAt(0)==='"'&&(s=s.slice(1,-1));try{var h=d(f[0]);if(s=(t.read||t)(s,h)||d(s),r)try{s=JSON.parse(s)}catch{}if(e[h]=s,n===h)break}catch{}}return n?e[n]:e}}return o.set=m,o.get=function(n){return l(n,!1)},o.getJSON=function(n){return l(n,!0)},o.remove=function(n,r){m(n,"",p(r,{expires:-1}))},o.defaults={},o.withConverter=C,o}return C(function(){})})}}]);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2225],{39404: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(79652);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},82505: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(25652);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},7210: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},58380: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},37823: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},32655: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},49756:function(C,m,e){"use strict";e.d(m,{Z:function(){return t},f:function(){return u}});const t="api-token",u="transfer-token"},72225: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(24388),P=e(30305),I=e(49756),K=e(39404),N=e(7210),k=e(72850),A=e(49372),B=e(15335),R=e(5803),H=e(82505),Z=e(58380),Y=e(37823),Q=e(32655);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
|
+
margin: -1px;
|
|
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=(0,re.iv)`
|
|
5
|
+
background: ${p=>p.theme.colors.primary100};
|
|
6
|
+
svg {
|
|
7
|
+
opacity: 1;
|
|
8
|
+
}
|
|
9
|
+
`;var be=(0,re.ZP)(k.x)`
|
|
10
|
+
display: flex;
|
|
11
|
+
justify-content: space-between;
|
|
12
|
+
align-items: center;
|
|
13
|
+
|
|
14
|
+
svg {
|
|
15
|
+
opacity: 0;
|
|
16
|
+
path {
|
|
17
|
+
fill: ${p=>p.theme.colors.primary600};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Show active style both on hover and when the action is selected */
|
|
22
|
+
${p=>p.isActive&&Ce}
|
|
23
|
+
&:hover {
|
|
24
|
+
${Ce}
|
|
25
|
+
}
|
|
26
|
+
`;const Ue=re.ZP.div`
|
|
27
|
+
flex: 1;
|
|
28
|
+
align-self: center;
|
|
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(25652),$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"}))))))))}},25652: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
|
+
border: ${s};
|
|
32
|
+
|
|
33
|
+
&:hover:not([aria-disabled='true']) {
|
|
34
|
+
border: 1px solid ${({theme:g})=>g.colors.primary600};
|
|
35
|
+
|
|
36
|
+
${y} {
|
|
37
|
+
color: ${({theme:g,expanded:l})=>l?void 0:g.colors.primary700};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
${i.Z} {
|
|
41
|
+
color: ${({theme:g,expanded:l})=>l?void 0:g.colors.primary600};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
& > ${d.k} {
|
|
45
|
+
background: ${({theme:g})=>g.colors.primary100};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
[data-strapi-dropdown='true'] {
|
|
49
|
+
background: ${({theme:g})=>g.colors.primary200};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
`,n=({children:g,disabled:l=!1,error:c,expanded:M=!1,hasErrorMessage:P=!0,id:I,onToggle:K,toggle:N,size:k="M",variant:A="primary",shadow:B})=>{const R=(0,a.M)(I),H=u.useMemo(()=>({expanded:M,onToggle:K,toggle:N,id:R,size:k,variant:A,disabled:l}),[l,M,R,K,k,N,A]);return(0,t.jsxs)(o.S.Provider,{value:H,children:[(0,t.jsx)(h,{"data-strapi-expanded":M,disabled:l,"aria-disabled":l,expanded:M,hasRadius:!0,variant:A,error:c,shadow:B,children:g}),c&&P&&(0,t.jsx)(v.x,{paddingTop:1,children:(0,t.jsx)(i.Z,{variant:"pi",textColor:"danger600",children:c})})]})}},89966:function(C,m,e){"use strict";e.d(m,{v:function(){return o}});var t=e(74512),u=e(91045),r=e(72850);const o=({children:a,...i})=>{const{expanded:d,id:v}=(0,u.A)();if(!d)return null;const s=`accordion-content-${v}`,y=`accordion-label-${v}`,h=`accordion-desc-${v}`;return(0,t.jsx)(r.x,{role:"region",id:s,"aria-labelledby":y,"aria-describedby":h,...i,children:a})}},91045:function(C,m,e){"use strict";e.d(m,{A:function(){return r},S:function(){return u}});var t=e(32735);const u=(0,t.createContext)({disabled:!1,expanded:!1,id:"",size:"M",variant:"primary"}),r=()=>(0,t.useContext)(u)},61762:function(C,m,e){"use strict";e.d(m,{B:function(){return g}});var t=e(74512),u=e(16899),r=e(8471),o=e(83828),a=e(91045);const i=({expanded:l,disabled:c,variant:M})=>{let P="neutral100";return l?P="primary100":c?P="neutral150":M==="primary"&&(P="neutral0"),P};var d=e(7563),v=e(99140),s=e(87933),y=e(49372);const h=(0,r.ZP)(d.A)`
|
|
53
|
+
text-align: left;
|
|
54
|
+
|
|
55
|
+
// necessary to make the ellipsis prop work on the title
|
|
56
|
+
> span {
|
|
57
|
+
max-width: 100%;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
svg {
|
|
61
|
+
width: ${14/16}rem;
|
|
62
|
+
height: ${14/16}rem;
|
|
63
|
+
|
|
64
|
+
path {
|
|
65
|
+
fill: ${({theme:l,expanded:c})=>c?l.colors.primary600:l.colors.neutral500};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
`,n=(0,r.ZP)(s.k)`
|
|
69
|
+
min-height: ${({theme:l,size:c})=>l.sizes.accordions[c]};
|
|
70
|
+
border-radius: ${({theme:l,expanded:c})=>c?`${l.borderRadius} ${l.borderRadius} 0 0`:l.borderRadius};
|
|
71
|
+
|
|
72
|
+
&:hover {
|
|
73
|
+
svg {
|
|
74
|
+
path {
|
|
75
|
+
fill: ${({theme:l})=>l.colors.primary600};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
`,g=({title:l,description:c,as:M="span",togglePosition:P="right",action:I,...K})=>{const{onToggle:N,toggle:k,expanded:A,id:B,size:R,variant:H,disabled:Z}=(0,a.A)(),Y=`accordion-content-${B}`,Q=`accordion-label-${B}`,J=`accordion-desc-${B}`,X=R==="M"?6:4,ne=R==="M"?X:X-2,le=i({expanded:A,disabled:Z,variant:H}),de={as:M,fontWeight:R==="S"?"bold":void 0,id:Q,textColor:A?"primary600":"neutral700",ellipsis:!0,variant:R==="M"?"delta":void 0},_=A?"primary600":"neutral600",ce=A?"primary200":"neutral200",se=R==="M"?`${32/16}rem`:`${24/16}rem`,ae=()=>{Z||(k&&!N?(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'),k()):N&&N())},oe=(0,t.jsx)(s.k,{justifyContent:"center",borderRadius:"50%",height:se,width:se,transform:A?"rotate(180deg)":void 0,"data-strapi-dropdown":!0,"aria-hidden":!0,as:"span",background:ce,cursor:Z?"not-allowed":"pointer",onClick:ae,shrink:0,children:(0,t.jsx)(v.J,{as:u.Z,width:R==="M"?`${11/16}rem`:`${8/16}rem`,color:A?"primary600":"neutral600"})});return(0,t.jsx)(n,{paddingBottom:ne,paddingLeft:X,paddingRight:X,paddingTop:ne,background:le,expanded:A,size:R,justifyContent:"space-between",cursor:Z?"not-allowed":"",children:(0,t.jsxs)(s.k,{gap:3,flex:1,maxWidth:"100%",children:[P==="left"&&oe,(0,t.jsx)(h,{onClick:ae,"aria-disabled":Z,"aria-expanded":A,"aria-controls":Y,"aria-labelledby":Q,"data-strapi-accordion-toggle":!0,expanded:A,type:"button",flex:1,minWidth:0,...K,children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.y,{...de,children:l}),c&&(0,t.jsx)(y.Z,{as:"p",id:J,textColor:_,children:c})]})}),P==="right"&&(0,t.jsxs)(s.k,{gap:3,children:[oe,I]}),P==="left"&&I]})})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2379],{50337:function(S,c,t){t.d(c,{pl:function(){return L},aY:function(){return p},q5:function(){return D.q}});var e=t(32735),a=t(19565),E=t(97889);const f={data:[],isLoading:!0};var m=(s,n)=>(0,E.ZP)(s,i=>{switch(n.type){case"GET_DATA_SUCCEEDED":{i.data=n.data,i.isLoading=!1;break}case"GET_DATA_ERROR":{i.isLoading=!1;break}default:return i}}),L=({ssoEnabled:s})=>{const[n,i]=(0,e.useReducer)(m,f),T=(0,a.lm)(),{get:v}=(0,a.kY)();return(0,e.useEffect)(()=>{(async()=>{try{if(!s){i({type:"GET_DATA_SUCCEEDED",data:[]});return}const{data:u}=await v("/admin/providers");i({type:"GET_DATA_SUCCEEDED",data:u})}catch(u){console.error(u),i({type:"GET_DATA_ERROR"}),T({type:"warning",message:{id:"notification.error"}})}})()},[v,s,T]),n},g=t(36866),o=t.n(g),A=t(67879),r=t(53038),D=t(53104);const l="strapi-notification-seat-limit",_="https://cloud.strapi.io/profile/billing",I="https://strapi.io/billing/request-seats";var p=()=>{const{formatMessage:s}=(0,A.Z)();let{license:n,isError:i,isLoading:T}=(0,D.q)();const v=(0,a.lm)(),{pathname:P}=(0,r.TH)(),{enforcementUserCount:u,permittedSeats:C,licenseLimitStatus:d,isHostedOnStrapiCloud:h}=n;(0,e.useEffect)(()=>{if(i||T)return;const U=!o()(C)&&!window.sessionStorage.getItem(`${l}-${P}`)&&(d==="AT_LIMIT"||d==="OVER_LIMIT");let R;d==="OVER_LIMIT"?R="warning":d==="AT_LIMIT"&&(R="softWarning"),U&&v({type:R,message:s({id:"notification.ee.warning.over-.message",defaultMessage:"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app."},{licenseLimitStatus:d}),title:s({id:"notification.ee.warning.at-seat-limit.title",defaultMessage:"{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})"},{licenseLimitStatus:d,enforcementUserCount:u,permittedSeats:C}),link:{url:h?_:I,label:s({id:"notification.ee.warning.seat-limit.link",defaultMessage:"{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}"},{isHostedOnStrapiCloud:h})},blockTransition:!0,onClose(){window.sessionStorage.setItem(`${l}-${P}`,!0)}})},[v,n,P,s,T,C,d,u,h,i])}},53104:function(S,c,t){t.d(c,{q:function(){return f}});var e=t(32735),a=t(19565),E=t(20108);function f({enabled:M}={enabled:!0}){const{get:m}=(0,a.kY)(),{data:O,isError:L,isLoading:g}=(0,E.useQuery)(["ee","license-limit-info"],async()=>{const{data:{data:r}}=await m("/admin/license-limit-information");return r},{enabled:M}),o=O??{},A=e.useCallback(r=>(o?.features??[]).find(l=>l.name===r)?.options??{},[o?.features]);return{license:o,getFeature:A,isError:L,isLoading:g}}},42379:function(S,c,t){t.r(c),t.d(c,{CreateActionEE:function(){return l}});var e=t(32735),a=t(87933),E=t(63919),f=t(99140),M=t(41415),m=t(69932),O=t(7961),L=t(36866),g=t.n(L),o=t(60216),A=t.n(o),r=t(67879),D=t(50337);const l=({onClick:_})=>{const{formatMessage:I}=(0,r.Z)(),{license:{permittedSeats:y,shouldStopCreate:p},isError:s,isLoading:n}=(0,D.q5)();return s||n?null:e.createElement(a.k,{gap:2},!g()(y)&&p&&e.createElement(E.u,{description:I({id:"Settings.application.admin-seats.at-limit-tooltip",defaultMessage:"At limit: add seats to invite more users"}),position:"left"},e.createElement(f.J,{width:`${14/16}rem`,height:`${14/16}rem`,color:"danger500",as:m.Z})),e.createElement(M.z,{"data-testid":"create-user-button",onClick:_,startIcon:e.createElement(O.Z,null),size:"S",disabled:p},I({id:"Settings.permissions.users.create",defaultMessage:"Invite new user"})))};l.propTypes={onClick:A().func.isRequired}}}]);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2395],{50337:function(y,g,t){t.d(g,{pl:function(){return i},aY:function(){return A},q5:function(){return L.q}});var e=t(32735),c=t(19565),E=t(97889);const P={data:[],isLoading:!0};var u=(n,f)=>(0,E.ZP)(n,r=>{switch(f.type){case"GET_DATA_SUCCEEDED":{r.data=f.data,r.isLoading=!1;break}case"GET_DATA_ERROR":{r.isLoading=!1;break}default:return r}}),i=({ssoEnabled:n})=>{const[f,r]=(0,e.useReducer)(u,P),v=(0,c.lm)(),{get:h}=(0,c.kY)();return(0,e.useEffect)(()=>{(async()=>{try{if(!n){r({type:"GET_DATA_SUCCEEDED",data:[]});return}const{data:T}=await h("/admin/providers");r({type:"GET_DATA_SUCCEEDED",data:T})}catch(T){console.error(T),r({type:"GET_DATA_ERROR"}),v({type:"warning",message:{id:"notification.error"}})}})()},[h,n,v]),f},D=t(36866),l=t.n(D),m=t(67879),d=t(53038),L=t(53104);const a="strapi-notification-seat-limit",_="https://cloud.strapi.io/profile/billing",s="https://strapi.io/billing/request-seats";var A=()=>{const{formatMessage:n}=(0,m.Z)();let{license:f,isError:r,isLoading:v}=(0,L.q)();const h=(0,c.lm)(),{pathname:R}=(0,d.TH)(),{enforcementUserCount:T,permittedSeats:I,licenseLimitStatus:p,isHostedOnStrapiCloud:C}=f;(0,e.useEffect)(()=>{if(r||v)return;const S=!l()(I)&&!window.sessionStorage.getItem(`${a}-${R}`)&&(p==="AT_LIMIT"||p==="OVER_LIMIT");let U;p==="OVER_LIMIT"?U="warning":p==="AT_LIMIT"&&(U="softWarning"),S&&h({type:U,message:n({id:"notification.ee.warning.over-.message",defaultMessage:"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app."},{licenseLimitStatus:p}),title:n({id:"notification.ee.warning.at-seat-limit.title",defaultMessage:"{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})"},{licenseLimitStatus:p,enforcementUserCount:T,permittedSeats:I}),link:{url:C?_:s,label:n({id:"notification.ee.warning.seat-limit.link",defaultMessage:"{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}"},{isHostedOnStrapiCloud:C})},blockTransition:!0,onClose(){window.sessionStorage.setItem(`${a}-${R}`,!0)}})},[h,f,R,n,v,I,p,T,C,r])}},53104:function(y,g,t){t.d(g,{q:function(){return P}});var e=t(32735),c=t(19565),E=t(20108);function P({enabled:O}={enabled:!0}){const{get:u}=(0,c.kY)(),{data:o,isError:i,isLoading:D}=(0,E.useQuery)(["ee","license-limit-info"],async()=>{const{data:{data:d}}=await u("/admin/license-limit-information");return d},{enabled:O}),l=o??{},m=e.useCallback(d=>(l?.features??[]).find(a=>a.name===d)?.options??{},[l?.features]);return{license:l,getFeature:m,isError:i,isLoading:D}}},82395:function(y,g,t){t.r(g),t.d(g,{LoginEE:function(){return _}});var e=t(32735),c=t(9026),E=t(72850),P=t(87933),O=t(49372),u=t(60216),o=t.n(u),i=t(67879),D=t(8471),l=t(11060),m=t(24436),d=t(50337),L=t(68726);const a=(0,D.ZP)(c.i)`
|
|
2
|
+
flex: 1;
|
|
3
|
+
`,_=s=>{const M=window.strapi.features.isEnabled(window.strapi.features.SSO),{isLoading:A,data:n}=(0,d.pl)({ssoEnabled:M}),{formatMessage:f}=(0,i.Z)();return!M||!A&&n.length===0?e.createElement(l.ZP,null,e.createElement(m.Z,{...s})):e.createElement(l.ZP,null,e.createElement(m.Z,{...s},e.createElement(E.x,{paddingTop:7},e.createElement(P.k,{direction:"column",alignItems:"stretch",gap:7},e.createElement(P.k,null,e.createElement(a,null),e.createElement(E.x,{paddingLeft:3,paddingRight:3},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},f({id:"Auth.login.sso.divider"}))),e.createElement(a,null)),e.createElement(L.Z,{providers:n,displayAllProviders:!1})))))};_.defaultProps={onSubmit:s=>s.preventDefault(),requestError:null},_.propTypes={formErrors:o().object.isRequired,modifiedData:o().object.isRequired,onChange:o().func.isRequired,onSubmit:o().func,requestError:o().object}},68726:function(y,g,t){var e=t(32735),c=t(87933),E=t(63919),P=t(49372),O=t(15335),u=t(5803),o=t(60216),i=t.n(o),D=t(67879),l=t(14911),m=t(8471);const d=m.ZP.a`
|
|
4
|
+
width: ${136/16}rem;
|
|
5
|
+
display: flex;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
align-items: center;
|
|
8
|
+
height: ${48/16}rem;
|
|
9
|
+
border: 1px solid ${({theme:s})=>s.colors.neutral150};
|
|
10
|
+
border-radius: ${({theme:s})=>s.borderRadius};
|
|
11
|
+
text-decoration: inherit;
|
|
12
|
+
&:link {
|
|
13
|
+
text-decoration: none;
|
|
14
|
+
}
|
|
15
|
+
color: ${({theme:s})=>s.colors.neutral600};
|
|
16
|
+
`,L=(0,m.ZP)(c.k)`
|
|
17
|
+
& a:not(:first-child):not(:last-child) {
|
|
18
|
+
margin: 0 ${({theme:s})=>s.spaces[2]};
|
|
19
|
+
}
|
|
20
|
+
& a:first-child {
|
|
21
|
+
margin-right: ${({theme:s})=>s.spaces[2]};
|
|
22
|
+
}
|
|
23
|
+
& a:last-child {
|
|
24
|
+
margin-left: ${({theme:s})=>s.spaces[2]};
|
|
25
|
+
}
|
|
26
|
+
`,a=({provider:s})=>e.createElement(E.u,{label:s.displayName},e.createElement(d,{href:`${window.strapi.backendURL}/admin/connect/${s.uid}`},s.icon?e.createElement("img",{src:s.icon,"aria-hidden":!0,alt:"",height:"32px"}):e.createElement(P.Z,null,s.displayName)));a.propTypes={provider:i().shape({icon:i().string,displayName:i().string.isRequired,uid:i().string.isRequired}).isRequired};const _=({providers:s,displayAllProviders:M})=>{const{formatMessage:A}=(0,D.Z)();return M?e.createElement(O.r,{gap:4},s.map(n=>e.createElement(u.P,{key:n.uid,col:4},e.createElement(a,{provider:n})))):s.length>2&&!M?e.createElement(O.r,{gap:4},s.slice(0,2).map(n=>e.createElement(u.P,{key:n.uid,col:4},e.createElement(a,{provider:n}))),e.createElement(u.P,{col:4},e.createElement(E.u,{label:A({id:"global.see-more"})},e.createElement(d,{as:l.rU,to:"/auth/providers"},e.createElement("span",{"aria-hidden":!0},"\u2022\u2022\u2022"))))):e.createElement(L,{justifyContent:"center"},s.map(n=>e.createElement(a,{key:n.uid,provider:n})))};_.defaultProps={displayAllProviders:!0},_.propTypes={providers:i().arrayOf(i().object).isRequired,displayAllProviders:i().bool},g.Z=_}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2801],{50337:function(S,r,t){t.d(r,{pl:function(){return A},aY:function(){return M},q5:function(){return I.q}});var s=t(32735),n=t(19565),c=t(97889);const l={data:[],isLoading:!0};var T=(i,a)=>(0,c.ZP)(i,e=>{switch(a.type){case"GET_DATA_SUCCEEDED":{e.data=a.data,e.isLoading=!1;break}case"GET_DATA_ERROR":{e.isLoading=!1;break}default:return e}}),A=({ssoEnabled:i})=>{const[a,e]=(0,s.useReducer)(T,l),m=(0,n.lm)(),{get:E}=(0,n.kY)();return(0,s.useEffect)(()=>{(async()=>{try{if(!i){e({type:"GET_DATA_SUCCEEDED",data:[]});return}const{data:u}=await E("/admin/providers");e({type:"GET_DATA_SUCCEEDED",data:u})}catch(u){console.error(u),e({type:"GET_DATA_ERROR"}),m({type:"warning",message:{id:"notification.error"}})}})()},[E,i,m]),a},v=t(36866),d=t.n(v),h=t(67879),f=t(53038),I=t(53104);const g="strapi-notification-seat-limit",R="https://cloud.strapi.io/profile/billing",y="https://strapi.io/billing/request-seats";var M=()=>{const{formatMessage:i}=(0,h.Z)();let{license:a,isError:e,isLoading:m}=(0,I.q)();const E=(0,n.lm)(),{pathname:L}=(0,f.TH)(),{enforcementUserCount:u,permittedSeats:p,licenseLimitStatus:o,isHostedOnStrapiCloud:D}=a;(0,s.useEffect)(()=>{if(e||m)return;const U=!d()(p)&&!window.sessionStorage.getItem(`${g}-${L}`)&&(o==="AT_LIMIT"||o==="OVER_LIMIT");let C;o==="OVER_LIMIT"?C="warning":o==="AT_LIMIT"&&(C="softWarning"),U&&E({type:C,message:i({id:"notification.ee.warning.over-.message",defaultMessage:"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app."},{licenseLimitStatus:o}),title:i({id:"notification.ee.warning.at-seat-limit.title",defaultMessage:"{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})"},{licenseLimitStatus:o,enforcementUserCount:u,permittedSeats:p}),link:{url:D?R:y,label:i({id:"notification.ee.warning.seat-limit.link",defaultMessage:"{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}"},{isHostedOnStrapiCloud:D})},blockTransition:!0,onClose(){window.sessionStorage.setItem(`${g}-${L}`,!0)}})},[E,a,L,i,m,p,o,u,D,e])}},53104:function(S,r,t){t.d(r,{q:function(){return l}});var s=t(32735),n=t(19565),c=t(20108);function l({enabled:O}={enabled:!0}){const{get:T}=(0,n.kY)(),{data:P,isError:A,isLoading:v}=(0,c.useQuery)(["ee","license-limit-info"],async()=>{const{data:{data:f}}=await T("/admin/license-limit-information");return f},{enabled:O}),d=P??{},h=s.useCallback(f=>(d?.features??[]).find(g=>g.name===f)?.options??{},[d?.features]);return{license:d,getFeature:h,isError:A,isLoading:v}}},12801:function(S,r,t){t.r(r),t.d(r,{UserListPageEE:function(){return l}});var s=t(32735),n=t(99528),c=t(50337);function l(){return(0,c.aY)(),s.createElement(n.W,null)}}}]);
|