payload 1.1.28-beta.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +116 -97
- package/components/fields/Select.ts +1 -1
- package/dist/admin/components/elements/ReactSelect/index.js +2 -2
- package/dist/admin/components/elements/VersionsCount/index.js +1 -1
- package/dist/admin/components/elements/WhereBuilder/Condition/Text/index.js +5 -1
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +3 -3
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +7 -7
- package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts +2 -2
- package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +2 -2
- package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +3 -3
- package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +2 -2
- package/dist/admin/components/forms/Form/index.js +4 -4
- package/dist/admin/components/forms/field-types/Array/index.js +2 -2
- package/dist/admin/components/forms/field-types/Blocks/index.js +2 -2
- package/dist/admin/components/forms/field-types/Relationship/AddNew/Modal/index.js +2 -2
- package/dist/admin/components/forms/field-types/RichText/elements/link/Button.js +2 -2
- package/dist/admin/components/forms/field-types/RichText/elements/link/Element.js +3 -3
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.js +2 -2
- package/dist/admin/components/forms/field-types/Select/Input.js +13 -3
- package/dist/admin/components/forms/field-types/Textarea/Input.js +1 -1
- package/dist/admin/components/forms/field-types/Textarea/index.scss +3 -6
- package/dist/admin/components/forms/useField/index.js +2 -2
- package/dist/admin/components/utilities/I18n/index.js +4 -1
- package/dist/admin/components/views/Account/index.js +10 -5
- package/dist/admin/components/views/Global/index.js +5 -5
- package/dist/admin/components/views/Login/index.js +1 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +1 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Nested/index.js +15 -9
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +5 -2
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +5 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Select/index.js +34 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Select/index.scss +10 -0
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Text/index.js +3 -2
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/index.js +3 -2
- package/dist/admin/components/views/Versions/index.js +1 -1
- package/dist/admin/components/views/collections/Edit/Auth/APIKey.js +2 -2
- package/dist/admin/components/views/collections/Edit/Default.js +5 -2
- package/dist/admin/components/views/collections/Edit/SetStepNav.d.ts +7 -0
- package/dist/admin/components/views/collections/Edit/SetStepNav.js +31 -0
- package/dist/admin/components/views/collections/Edit/index.js +6 -40
- package/dist/admin/hooks/usePayloadAPI.js +3 -1
- package/dist/auth/executeAccess.js +3 -3
- package/dist/auth/getExecuteStaticAccess.js +2 -2
- package/dist/auth/operations/forgotPassword.js +5 -5
- package/dist/auth/operations/local/forgotPassword.js +3 -1
- package/dist/auth/operations/local/login.js +3 -1
- package/dist/auth/operations/local/resetPassword.js +3 -1
- package/dist/auth/operations/local/unlock.js +3 -1
- package/dist/auth/operations/login.js +4 -4
- package/dist/auth/operations/logout.js +2 -2
- package/dist/auth/operations/refresh.js +2 -2
- package/dist/auth/operations/registerFirstUser.js +2 -2
- package/dist/auth/sendVerificationEmail.js +3 -3
- package/dist/collections/operations/create.js +4 -4
- package/dist/collections/operations/delete.js +6 -6
- package/dist/collections/operations/findByID.js +4 -4
- package/dist/collections/operations/findVersionByID.js +5 -5
- package/dist/collections/operations/local/create.js +3 -1
- package/dist/collections/operations/local/delete.js +3 -1
- package/dist/collections/operations/local/find.js +3 -1
- package/dist/collections/operations/local/findByID.js +3 -1
- package/dist/collections/operations/local/findVersionByID.js +3 -1
- package/dist/collections/operations/local/findVersions.js +5 -2
- package/dist/collections/operations/local/restoreVersion.js +4 -2
- package/dist/collections/operations/local/update.js +5 -2
- package/dist/collections/operations/restoreVersion.js +5 -5
- package/dist/collections/operations/update.js +6 -6
- package/dist/collections/requestHandlers/create.js +2 -2
- package/dist/collections/requestHandlers/delete.js +2 -2
- package/dist/collections/requestHandlers/restoreVersion.js +2 -2
- package/dist/collections/requestHandlers/update.js +4 -4
- package/dist/errors/AuthenticationError.d.ts +2 -2
- package/dist/errors/AuthenticationError.js +3 -3
- package/dist/errors/ErrorDeletingFile.d.ts +2 -2
- package/dist/errors/ErrorDeletingFile.js +3 -3
- package/dist/errors/FileUploadError.d.ts +2 -2
- package/dist/errors/FileUploadError.js +3 -3
- package/dist/errors/Forbidden.d.ts +2 -2
- package/dist/errors/Forbidden.js +3 -3
- package/dist/errors/LockedAuth.d.ts +2 -2
- package/dist/errors/LockedAuth.js +3 -3
- package/dist/errors/MissingFile.d.ts +2 -2
- package/dist/errors/MissingFile.js +3 -3
- package/dist/errors/NotFound.d.ts +2 -2
- package/dist/errors/NotFound.js +3 -3
- package/dist/errors/UnathorizedError.d.ts +2 -2
- package/dist/errors/UnathorizedError.js +3 -3
- package/dist/errors/ValidationError.d.ts +2 -2
- package/dist/errors/ValidationError.js +3 -3
- package/dist/express/middleware/i18n.js +3 -3
- package/dist/express/types.d.ts +2 -1
- package/dist/fields/config/types.d.ts +2 -2
- package/dist/fields/hooks/beforeChange/index.js +2 -2
- package/dist/fields/hooks/beforeChange/promise.js +8 -2
- package/dist/fields/validations.js +51 -51
- package/dist/fields/validations.spec.js +2 -3
- package/dist/globals/operations/findVersionByID.js +5 -5
- package/dist/globals/operations/local/findOne.js +5 -1
- package/dist/globals/operations/local/findVersionByID.js +5 -1
- package/dist/globals/operations/local/findVersions.js +5 -1
- package/dist/globals/operations/local/restoreVersion.js +5 -1
- package/dist/globals/operations/local/update.js +5 -1
- package/dist/globals/operations/restoreVersion.js +3 -3
- package/dist/globals/requestHandlers/restoreVersion.js +2 -2
- package/dist/globals/requestHandlers/update.js +4 -4
- package/dist/preferences/operations/delete.js +2 -2
- package/dist/preferences/operations/findOne.js +2 -2
- package/dist/preferences/operations/update.js +2 -2
- package/dist/preferences/requestHandlers/delete.js +2 -2
- package/dist/preferences/requestHandlers/findOne.js +2 -2
- package/dist/preferences/requestHandlers/update.js +2 -2
- package/dist/translations/en.json +2 -0
- package/dist/translations/index.d.ts +5 -0
- package/dist/translations/init.d.ts +2 -2
- package/dist/translations/init.js +4 -1
- package/dist/translations/it.json +18 -15
- package/dist/uploads/generateFileData.js +3 -3
- package/dist/uploads/uploadFiles.d.ts +2 -2
- package/dist/uploads/uploadFiles.js +3 -3
- package/dist/versions/drafts/saveCollectionDraft.js +4 -3
- package/dist/versions/drafts/saveGlobalDraft.js +4 -3
- package/dist/versions/ensurePublishedCollectionVersion.js +2 -1
- package/dist/versions/ensurePublishedGlobalVersion.js +2 -1
- package/docs/authentication/config.mdx +1 -1
- package/docs/configuration/i18n.mdx +2 -2
- package/docs/fields/overview.mdx +1 -1
- package/package.json +1 -1
|
@@ -21,7 +21,7 @@ const TextareaInput = (props) => {
|
|
|
21
21
|
} },
|
|
22
22
|
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
23
23
|
React.createElement(Label, { htmlFor: `field-${path.replace(/\./gi, '__')}`, label: label, required: required }),
|
|
24
|
-
React.createElement("
|
|
24
|
+
React.createElement("label", { className: "textarea-outer", htmlFor: `field-${path.replace(/\./gi, '__')}` },
|
|
25
25
|
React.createElement("div", { className: "textarea-inner" },
|
|
26
26
|
React.createElement("div", { className: "textarea-clone", "data-value": value || placeholder || '' }),
|
|
27
27
|
React.createElement("textarea", { className: "textarea-element", id: `field-${path.replace(/\./gi, '__')}`, value: value || '', onChange: onChange, disabled: readOnly, placeholder: getTranslation(placeholder, i18n), name: path, rows: rows }))),
|
|
@@ -6,12 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
.textarea-outer {
|
|
8
8
|
@include formInput();
|
|
9
|
+
display: flex;
|
|
9
10
|
resize: vertical;
|
|
10
|
-
height: auto;
|
|
11
11
|
min-height: base(3);
|
|
12
|
+
height: 100%;
|
|
12
13
|
|
|
13
14
|
// Scrollbar for giant content
|
|
14
|
-
max-height:
|
|
15
|
+
max-height: calc(100vh - $top-header-offset - calc(#{base(5)}));
|
|
15
16
|
overflow: auto;
|
|
16
17
|
|
|
17
18
|
@include mid-break {
|
|
@@ -31,7 +32,6 @@
|
|
|
31
32
|
position: relative;
|
|
32
33
|
line-height: inherit;
|
|
33
34
|
flex-grow: 1;
|
|
34
|
-
box-sizing: border-box;
|
|
35
35
|
background: none;
|
|
36
36
|
outline: none;
|
|
37
37
|
}
|
|
@@ -49,7 +49,6 @@
|
|
|
49
49
|
line-height: inherit;
|
|
50
50
|
color: inherit;
|
|
51
51
|
background: none;
|
|
52
|
-
box-sizing: border-box;
|
|
53
52
|
overflow: auto;
|
|
54
53
|
resize: none;
|
|
55
54
|
outline: none;
|
|
@@ -65,8 +64,6 @@
|
|
|
65
64
|
vertical-align: top;
|
|
66
65
|
display: inline-block;
|
|
67
66
|
flex-grow: 1;
|
|
68
|
-
white-space: pre;
|
|
69
|
-
box-sizing: border-box;
|
|
70
67
|
overflow: hidden;
|
|
71
68
|
text-overflow: ellipsis;
|
|
72
69
|
white-space: pre-wrap;
|
|
@@ -15,7 +15,7 @@ const useField = (options) => {
|
|
|
15
15
|
const operation = useOperation();
|
|
16
16
|
const field = useFormFields(([fields]) => fields[path]);
|
|
17
17
|
const dispatchField = useFormFields(([_, dispatch]) => dispatch);
|
|
18
|
-
const {
|
|
18
|
+
const { t } = useTranslation();
|
|
19
19
|
const { getData, getSiblingData, setModified } = useForm();
|
|
20
20
|
const value = field === null || field === void 0 ? void 0 : field.value;
|
|
21
21
|
const initialValue = field === null || field === void 0 ? void 0 : field.initialValue;
|
|
@@ -77,7 +77,7 @@ const useField = (options) => {
|
|
|
77
77
|
data: getData(),
|
|
78
78
|
siblingData: getSiblingData(path),
|
|
79
79
|
operation,
|
|
80
|
-
|
|
80
|
+
t,
|
|
81
81
|
};
|
|
82
82
|
const validationResult = typeof validate === 'function' ? await validate(value, validateOptions) : true;
|
|
83
83
|
if (typeof validationResult === 'string') {
|
|
@@ -6,10 +6,13 @@ import { defaultOptions } from '../../../../translations/defaultOptions';
|
|
|
6
6
|
import { useConfig } from '../Config';
|
|
7
7
|
export const I18n = () => {
|
|
8
8
|
const config = useConfig();
|
|
9
|
+
if (i18n.isInitialized) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
9
12
|
i18n
|
|
10
13
|
.use(LanguageDetector)
|
|
11
14
|
.use(initReactI18next)
|
|
12
|
-
.init(deepmerge(defaultOptions, config.i18n || {}));
|
|
15
|
+
.init(deepmerge(defaultOptions, config.i18n || { debug: true }));
|
|
13
16
|
return null;
|
|
14
17
|
};
|
|
15
18
|
export default I18n;
|
|
@@ -25,29 +25,34 @@ const AccountView = () => {
|
|
|
25
25
|
}, } = {}, } = {
|
|
26
26
|
user: 'users',
|
|
27
27
|
}, } = useConfig();
|
|
28
|
-
const { t
|
|
28
|
+
const { t } = useTranslation('authentication');
|
|
29
29
|
const collection = collections.find((coll) => coll.slug === adminUser);
|
|
30
30
|
const { fields } = collection;
|
|
31
31
|
const collectionPermissions = (_a = permissions === null || permissions === void 0 ? void 0 : permissions.collections) === null || _a === void 0 ? void 0 : _a[adminUser];
|
|
32
|
-
const [{ data }] = usePayloadAPI(`${serverURL}${api}/${collection === null || collection === void 0 ? void 0 : collection.slug}/${user === null || user === void 0 ? void 0 : user.id}
|
|
32
|
+
const [{ data }] = usePayloadAPI(`${serverURL}${api}/${collection === null || collection === void 0 ? void 0 : collection.slug}/${user === null || user === void 0 ? void 0 : user.id}`, {
|
|
33
|
+
initialParams: {
|
|
34
|
+
'fallback-locale': 'null',
|
|
35
|
+
depth: 0,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
33
38
|
const hasSavePermission = (_b = collectionPermissions === null || collectionPermissions === void 0 ? void 0 : collectionPermissions.update) === null || _b === void 0 ? void 0 : _b.permission;
|
|
34
39
|
const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
|
|
35
40
|
const apiURL = `${serverURL}${api}/${user.collection}/${data === null || data === void 0 ? void 0 : data.id}`;
|
|
36
41
|
const action = `${serverURL}${api}/${user.collection}/${data === null || data === void 0 ? void 0 : data.id}?locale=${locale}&depth=0`;
|
|
37
42
|
useEffect(() => {
|
|
38
43
|
const nav = [{
|
|
39
|
-
label: t('
|
|
44
|
+
label: t('account'),
|
|
40
45
|
}];
|
|
41
46
|
setStepNav(nav);
|
|
42
47
|
}, [setStepNav, t]);
|
|
43
48
|
useEffect(() => {
|
|
44
49
|
const awaitInitialState = async () => {
|
|
45
|
-
const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, operation: 'update', id, user, locale,
|
|
50
|
+
const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, operation: 'update', id, user, locale, t });
|
|
46
51
|
await getPreference(preferencesKey);
|
|
47
52
|
setInitialState(state);
|
|
48
53
|
};
|
|
49
54
|
awaitInitialState();
|
|
50
|
-
}, [dataToRender, fields, id, user, locale, preferencesKey, getPreference,
|
|
55
|
+
}, [dataToRender, fields, id, user, locale, preferencesKey, getPreference, t]);
|
|
51
56
|
return (React.createElement(RenderCustomComponent, { DefaultComponent: DefaultAccount, CustomComponent: CustomAccount, componentProps: {
|
|
52
57
|
action,
|
|
53
58
|
data,
|
|
@@ -20,15 +20,15 @@ const GlobalView = (props) => {
|
|
|
20
20
|
const [initialState, setInitialState] = useState();
|
|
21
21
|
const { getVersions, preferencesKey } = useDocumentInfo();
|
|
22
22
|
const { getPreference } = usePreferences();
|
|
23
|
-
const {
|
|
23
|
+
const { t } = useTranslation();
|
|
24
24
|
const { serverURL, routes: { api, }, } = useConfig();
|
|
25
25
|
const { global } = props;
|
|
26
26
|
const { slug, label, fields, admin: { components: { views: { Edit: CustomEdit, } = {}, } = {}, } = {}, } = global;
|
|
27
27
|
const onSave = useCallback(async (json) => {
|
|
28
28
|
getVersions();
|
|
29
|
-
const state = await buildStateFromSchema({ fieldSchema: fields, data: json.result, operation: 'update', user, locale,
|
|
29
|
+
const state = await buildStateFromSchema({ fieldSchema: fields, data: json.result, operation: 'update', user, locale, t });
|
|
30
30
|
setInitialState(state);
|
|
31
|
-
}, [getVersions, fields, user, locale,
|
|
31
|
+
}, [getVersions, fields, user, locale, t]);
|
|
32
32
|
const [{ data }] = usePayloadAPI(`${serverURL}${api}/globals/${slug}`, { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
|
|
33
33
|
const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
|
|
34
34
|
useEffect(() => {
|
|
@@ -39,12 +39,12 @@ const GlobalView = (props) => {
|
|
|
39
39
|
}, [setStepNav, label]);
|
|
40
40
|
useEffect(() => {
|
|
41
41
|
const awaitInitialState = async () => {
|
|
42
|
-
const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: 'update', locale,
|
|
42
|
+
const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: 'update', locale, t });
|
|
43
43
|
await getPreference(preferencesKey);
|
|
44
44
|
setInitialState(state);
|
|
45
45
|
};
|
|
46
46
|
awaitInitialState();
|
|
47
|
-
}, [dataToRender, fields, user, locale, getPreference, preferencesKey,
|
|
47
|
+
}, [dataToRender, fields, user, locale, getPreference, preferencesKey, t]);
|
|
48
48
|
const globalPermissions = (_a = permissions === null || permissions === void 0 ? void 0 : permissions.globals) === null || _a === void 0 ? void 0 : _a[slug];
|
|
49
49
|
return (React.createElement(RenderCustomComponent, { DefaultComponent: DefaultGlobal, CustomComponent: CustomEdit, componentProps: {
|
|
50
50
|
isLoading: !initialState,
|
|
@@ -45,7 +45,7 @@ const Login = () => {
|
|
|
45
45
|
!collection.auth.disableLocalStrategy && (React.createElement(Form, { disableSuccessStatus: true, waitForAutocomplete: true, onSuccess: onSuccess, method: "post", action: `${serverURL}${api}/${userSlug}/login` },
|
|
46
46
|
React.createElement(Email, { label: t('general:email'), name: "email", admin: { autoComplete: 'email' }, required: true }),
|
|
47
47
|
React.createElement(Password, { label: t('general:password'), name: "password", autoComplete: "off", required: true }),
|
|
48
|
-
React.createElement(Link, { to: `${admin}/forgot` }, t('
|
|
48
|
+
React.createElement(Link, { to: `${admin}/forgot` }, t('forgotPasswordQuestion')),
|
|
49
49
|
React.createElement(FormSubmit, null, t('login')))),
|
|
50
50
|
Array.isArray(afterLogin) && afterLogin.map((Component, i) => React.createElement(Component, { key: i }))));
|
|
51
51
|
};
|
|
@@ -16,7 +16,7 @@ const Iterable = ({ version, comparison, permissions, field, locale, locales, fi
|
|
|
16
16
|
return (React.createElement("div", { className: baseClass },
|
|
17
17
|
field.label && (React.createElement(Label, null,
|
|
18
18
|
locale && (React.createElement("span", { className: `${baseClass}__locale-label` }, locale)),
|
|
19
|
-
field.label)),
|
|
19
|
+
getTranslation(field.label, i18n))),
|
|
20
20
|
maxRows > 0 && (React.createElement(React.Fragment, null, Array.from(Array(maxRows).keys()).map((row, i) => {
|
|
21
21
|
const versionRow = (version === null || version === void 0 ? void 0 : version[i]) || {};
|
|
22
22
|
const comparisonRow = (comparison === null || comparison === void 0 ? void 0 : comparison[i]) || {};
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
2
3
|
import RenderFieldsToDiff from '../..';
|
|
3
4
|
import Label from '../../Label';
|
|
5
|
+
import { getTranslation } from '../../../../../../../utilities/getTranslation';
|
|
4
6
|
import './index.scss';
|
|
5
7
|
const baseClass = 'nested-diff';
|
|
6
|
-
const Nested = ({ version, comparison, permissions, field, locale, locales, fieldComponents, disableGutter = false, }) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
field.label
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
const Nested = ({ version, comparison, permissions, field, locale, locales, fieldComponents, disableGutter = false, }) => {
|
|
9
|
+
const { i18n } = useTranslation();
|
|
10
|
+
return (React.createElement("div", { className: baseClass },
|
|
11
|
+
field.label && (React.createElement(Label, null,
|
|
12
|
+
locale && (React.createElement("span", { className: `${baseClass}__locale-label` }, locale)),
|
|
13
|
+
getTranslation(field.label, i18n))),
|
|
14
|
+
React.createElement("div", { className: [
|
|
15
|
+
`${baseClass}__wrap`,
|
|
16
|
+
!disableGutter && `${baseClass}__wrap--gutter`,
|
|
17
|
+
].filter(Boolean)
|
|
18
|
+
.join(' ') },
|
|
19
|
+
React.createElement(RenderFieldsToDiff, { locales: locales, version: version, comparison: comparison, fieldPermissions: permissions, fields: field.fields, fieldComponents: fieldComponents }))));
|
|
20
|
+
};
|
|
15
21
|
export default Nested;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import ReactDiffViewer from 'react-diff-viewer';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
import { useConfig } from '../../../../../utilities/Config';
|
|
4
5
|
import { useLocale } from '../../../../../utilities/Locale';
|
|
5
6
|
import { fieldAffectsData, fieldIsPresentationalOnly } from '../../../../../../../fields/config/types';
|
|
6
7
|
import Label from '../../Label';
|
|
7
8
|
import { diffStyles } from '../styles';
|
|
9
|
+
import { getTranslation } from '../../../../../../../utilities/getTranslation';
|
|
8
10
|
import './index.scss';
|
|
9
11
|
const baseClass = 'relationship-diff';
|
|
10
12
|
const generateLabelFromValue = (collections, field, locale, value) => {
|
|
@@ -43,10 +45,11 @@ const generateLabelFromValue = (collections, field, locale, value) => {
|
|
|
43
45
|
};
|
|
44
46
|
const Relationship = ({ field, version, comparison }) => {
|
|
45
47
|
const { collections } = useConfig();
|
|
48
|
+
const { t, i18n } = useTranslation('general');
|
|
46
49
|
const locale = useLocale();
|
|
47
50
|
let placeholder = '';
|
|
48
51
|
if (version === comparison)
|
|
49
|
-
placeholder = '
|
|
52
|
+
placeholder = `[${t('noValue')}]`;
|
|
50
53
|
let versionToRender = version;
|
|
51
54
|
let comparisonToRender = comparison;
|
|
52
55
|
if (field.hasMany) {
|
|
@@ -62,7 +65,7 @@ const Relationship = ({ field, version, comparison }) => {
|
|
|
62
65
|
return (React.createElement("div", { className: baseClass },
|
|
63
66
|
React.createElement(Label, null,
|
|
64
67
|
locale && (React.createElement("span", { className: `${baseClass}__locale-label` }, locale)),
|
|
65
|
-
field.label),
|
|
68
|
+
getTranslation(field.label, i18n)),
|
|
66
69
|
React.createElement(ReactDiffViewer, { styles: diffStyles, oldValue: typeof comparisonToRender !== 'undefined' ? String(comparisonToRender) : placeholder, newValue: typeof versionToRender !== 'undefined' ? String(versionToRender) : placeholder, splitView: true, hideLineNumbers: true, showDiffOnly: false })));
|
|
67
70
|
return null;
|
|
68
71
|
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ReactDiffViewer, { DiffMethod } from 'react-diff-viewer';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import Label from '../../Label';
|
|
5
|
+
import { diffStyles } from '../styles';
|
|
6
|
+
import { getTranslation } from '../../../../../../../utilities/getTranslation';
|
|
7
|
+
import './index.scss';
|
|
8
|
+
const baseClass = 'select-diff';
|
|
9
|
+
const getOptionsToRender = (value, options, hasMany) => {
|
|
10
|
+
if (hasMany && Array.isArray(value)) {
|
|
11
|
+
return value.map((val) => options.find((option) => (typeof option === 'string' ? option : option.value) === val));
|
|
12
|
+
}
|
|
13
|
+
return options.find((option) => (typeof option === 'string' ? option : option.value) === value);
|
|
14
|
+
};
|
|
15
|
+
const getTranslatedOptions = (options, i18n) => {
|
|
16
|
+
if (Array.isArray(options)) {
|
|
17
|
+
return options.map((option) => (typeof option === 'string' ? option : getTranslation(option.label, i18n))).join(', ');
|
|
18
|
+
}
|
|
19
|
+
return typeof options === 'string' ? options : getTranslation(options.label, i18n);
|
|
20
|
+
};
|
|
21
|
+
const Select = ({ field, locale, version, comparison, diffMethod }) => {
|
|
22
|
+
let placeholder = '';
|
|
23
|
+
const { t, i18n } = useTranslation('general');
|
|
24
|
+
if (version === comparison)
|
|
25
|
+
placeholder = `[${t('noValue')}]`;
|
|
26
|
+
const comparisonToRender = typeof comparison !== 'undefined' ? getTranslatedOptions(getOptionsToRender(comparison, field.options, field.hasMany), i18n) : placeholder;
|
|
27
|
+
const versionToRender = typeof version !== 'undefined' ? getTranslatedOptions(getOptionsToRender(version, field.options, field.hasMany), i18n) : placeholder;
|
|
28
|
+
return (React.createElement("div", { className: baseClass },
|
|
29
|
+
React.createElement(Label, null,
|
|
30
|
+
locale && (React.createElement("span", { className: `${baseClass}__locale-label` }, locale)),
|
|
31
|
+
getTranslation(field.label, i18n)),
|
|
32
|
+
React.createElement(ReactDiffViewer, { styles: diffStyles, compareMethod: DiffMethod[diffMethod], oldValue: comparisonToRender, newValue: typeof versionToRender !== 'undefined' ? versionToRender : placeholder, splitView: true, hideLineNumbers: true, showDiffOnly: false })));
|
|
33
|
+
};
|
|
34
|
+
export default Select;
|
|
@@ -3,11 +3,12 @@ import ReactDiffViewer, { DiffMethod } from 'react-diff-viewer';
|
|
|
3
3
|
import { useTranslation } from 'react-i18next';
|
|
4
4
|
import Label from '../../Label';
|
|
5
5
|
import { diffStyles } from '../styles';
|
|
6
|
+
import { getTranslation } from '../../../../../../../utilities/getTranslation';
|
|
6
7
|
import './index.scss';
|
|
7
8
|
const baseClass = 'text-diff';
|
|
8
9
|
const Text = ({ field, locale, version, comparison, isRichText = false, diffMethod }) => {
|
|
9
10
|
let placeholder = '';
|
|
10
|
-
const { t } = useTranslation('general');
|
|
11
|
+
const { t, i18n } = useTranslation('general');
|
|
11
12
|
if (version === comparison)
|
|
12
13
|
placeholder = `[${t('noValue')}]`;
|
|
13
14
|
let versionToRender = version;
|
|
@@ -21,7 +22,7 @@ const Text = ({ field, locale, version, comparison, isRichText = false, diffMeth
|
|
|
21
22
|
return (React.createElement("div", { className: baseClass },
|
|
22
23
|
React.createElement(Label, null,
|
|
23
24
|
locale && (React.createElement("span", { className: `${baseClass}__locale-label` }, locale)),
|
|
24
|
-
field.label),
|
|
25
|
+
getTranslation(field.label, i18n)),
|
|
25
26
|
React.createElement(ReactDiffViewer, { styles: diffStyles, compareMethod: DiffMethod[diffMethod], oldValue: typeof comparisonToRender !== 'undefined' ? String(comparisonToRender) : placeholder, newValue: typeof versionToRender !== 'undefined' ? String(versionToRender) : placeholder, splitView: true, hideLineNumbers: true, showDiffOnly: false })));
|
|
26
27
|
};
|
|
27
28
|
export default Text;
|
|
@@ -3,6 +3,7 @@ import Nested from './Nested';
|
|
|
3
3
|
import Iterable from './Iterable';
|
|
4
4
|
import Relationship from './Relationship';
|
|
5
5
|
import Tabs from './Tabs';
|
|
6
|
+
import Select from './Select';
|
|
6
7
|
export default {
|
|
7
8
|
text: Text,
|
|
8
9
|
textarea: Text,
|
|
@@ -10,14 +11,14 @@ export default {
|
|
|
10
11
|
email: Text,
|
|
11
12
|
code: Text,
|
|
12
13
|
checkbox: Text,
|
|
13
|
-
radio:
|
|
14
|
+
radio: Select,
|
|
14
15
|
row: Nested,
|
|
15
16
|
collapsible: Nested,
|
|
16
17
|
group: Nested,
|
|
17
18
|
array: Iterable,
|
|
18
19
|
blocks: Iterable,
|
|
19
20
|
date: Text,
|
|
20
|
-
select:
|
|
21
|
+
select: Select,
|
|
21
22
|
richText: Text,
|
|
22
23
|
relationship: Relationship,
|
|
23
24
|
upload: Relationship,
|
|
@@ -148,7 +148,7 @@ const Versions = ({ collection, global }) => {
|
|
|
148
148
|
React.createElement(Eyebrow, null),
|
|
149
149
|
React.createElement(Gutter, { className: `${baseClass}__wrap` },
|
|
150
150
|
React.createElement("header", { className: `${baseClass}__header` },
|
|
151
|
-
React.createElement("div", { className: `${baseClass}__intro` },
|
|
151
|
+
React.createElement("div", { className: `${baseClass}__intro` }, t('showingVersionsFor')),
|
|
152
152
|
useIDLabel && (React.createElement(IDLabel, { id: doc === null || doc === void 0 ? void 0 : doc.id })),
|
|
153
153
|
!useIDLabel && (React.createElement("h1", null, heading))),
|
|
154
154
|
isLoadingVersions && (React.createElement(Loading, null)),
|
|
@@ -12,9 +12,9 @@ const baseClass = 'api-key';
|
|
|
12
12
|
const APIKey = () => {
|
|
13
13
|
const [initialAPIKey, setInitialAPIKey] = useState(null);
|
|
14
14
|
const [highlightedField, setHighlightedField] = useState(false);
|
|
15
|
-
const {
|
|
15
|
+
const { t } = useTranslation();
|
|
16
16
|
const apiKey = useFormFields(([fields]) => fields[path]);
|
|
17
|
-
const validate = (val) => text(val, { minLength: 24, maxLength: 48, data: {}, siblingData: {},
|
|
17
|
+
const validate = (val) => text(val, { minLength: 24, maxLength: 48, data: {}, siblingData: {}, t });
|
|
18
18
|
const apiKeyValue = apiKey === null || apiKey === void 0 ? void 0 : apiKey.value;
|
|
19
19
|
const APIKeyLabel = useMemo(() => (React.createElement("div", { className: `${baseClass}__label` },
|
|
20
20
|
React.createElement("span", null, "API Key"),
|
|
@@ -26,13 +26,15 @@ import SaveDraft from '../../../elements/SaveDraft';
|
|
|
26
26
|
import { useDocumentInfo } from '../../../utilities/DocumentInfo';
|
|
27
27
|
import { OperationContext } from '../../../utilities/OperationProvider';
|
|
28
28
|
import { Gutter } from '../../../elements/Gutter';
|
|
29
|
+
import { getTranslation } from '../../../../../utilities/getTranslation';
|
|
30
|
+
import { SetStepNav } from './SetStepNav';
|
|
29
31
|
import './index.scss';
|
|
30
32
|
const baseClass = 'collection-edit';
|
|
31
33
|
const DefaultEditView = (props) => {
|
|
32
34
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
33
35
|
const { admin: { dateFormat }, routes: { admin } } = useConfig();
|
|
34
36
|
const { publishedDoc } = useDocumentInfo();
|
|
35
|
-
const { t } = useTranslation('general');
|
|
37
|
+
const { t, i18n } = useTranslation('general');
|
|
36
38
|
const { collection, isEditing, data, onSave, permissions, isLoading, initialState, apiURL, action, hasSavePermission, disableEyebrow, disableActions, disableLeaveWithoutSaving, customHeader, id, } = props;
|
|
37
39
|
const { slug, fields, admin: { useAsTitle, disableDuplicate, preview, hideAPIURL, }, versions, timestamps, auth, upload, } = collection;
|
|
38
40
|
const classes = [
|
|
@@ -44,8 +46,9 @@ const DefaultEditView = (props) => {
|
|
|
44
46
|
isLoading && (React.createElement(Loading, null)),
|
|
45
47
|
!isLoading && (React.createElement(OperationContext.Provider, { value: operation },
|
|
46
48
|
React.createElement(Form, { className: `${baseClass}__form`, method: id ? 'patch' : 'post', action: action, onSuccess: onSave, disabled: !hasSavePermission, initialState: initialState },
|
|
49
|
+
React.createElement(SetStepNav, { collection: collection, isEditing: isEditing, id: data.id }),
|
|
47
50
|
React.createElement("div", { className: `${baseClass}__main` },
|
|
48
|
-
React.createElement(Meta, { title: `${isEditing ? t('editing') : t('creating')} - ${collection.labels.singular}`, description: `${isEditing ? t('editing') : t('creating')} - ${collection.labels.singular}`, keywords: `${collection.labels.singular}, Payload, CMS` }),
|
|
51
|
+
React.createElement(Meta, { title: `${isEditing ? t('editing') : t('creating')} - ${getTranslation(collection.labels.singular, i18n)}`, description: `${isEditing ? t('editing') : t('creating')} - ${getTranslation(collection.labels.singular, i18n)}`, keywords: `${getTranslation(collection.labels.singular, i18n)}, Payload, CMS` }),
|
|
49
52
|
!disableEyebrow && (React.createElement(Eyebrow, null)),
|
|
50
53
|
(!(((_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) && ((_c = (_b = collection.versions) === null || _b === void 0 ? void 0 : _b.drafts) === null || _c === void 0 ? void 0 : _c.autosave)) && !disableLeaveWithoutSaving) && (React.createElement(LeaveWithoutSaving, null)),
|
|
51
54
|
React.createElement(Gutter, { className: `${baseClass}__edit` },
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { getTranslation } from '../../../../../utilities/getTranslation';
|
|
4
|
+
import useTitle from '../../../../hooks/useTitle';
|
|
5
|
+
import { useStepNav } from '../../../elements/StepNav';
|
|
6
|
+
import { useConfig } from '../../../utilities/Config';
|
|
7
|
+
export const SetStepNav = ({ collection, isEditing, id }) => {
|
|
8
|
+
const { slug, labels: { plural: pluralLabel, }, admin: { useAsTitle, }, } = collection;
|
|
9
|
+
const { setStepNav } = useStepNav();
|
|
10
|
+
const { t, i18n } = useTranslation('general');
|
|
11
|
+
const { routes: { admin } } = useConfig();
|
|
12
|
+
const title = useTitle(useAsTitle);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const nav = [{
|
|
15
|
+
url: `${admin}/collections/${slug}`,
|
|
16
|
+
label: getTranslation(pluralLabel, i18n),
|
|
17
|
+
}];
|
|
18
|
+
if (isEditing) {
|
|
19
|
+
nav.push({
|
|
20
|
+
label: (useAsTitle && useAsTitle !== 'id') ? title || `[${t('untitled')}]` : id,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
nav.push({
|
|
25
|
+
label: t('createNew'),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
setStepNav(nav);
|
|
29
|
+
}, [setStepNav, isEditing, pluralLabel, id, slug, useAsTitle, admin, t, i18n, title]);
|
|
30
|
+
return null;
|
|
31
|
+
};
|
|
@@ -3,7 +3,6 @@ import { Redirect, useRouteMatch, useHistory, useLocation } from 'react-router-d
|
|
|
3
3
|
import { useTranslation } from 'react-i18next';
|
|
4
4
|
import { useConfig } from '../../../utilities/Config';
|
|
5
5
|
import { useAuth } from '../../../utilities/Auth';
|
|
6
|
-
import { useStepNav } from '../../../elements/StepNav';
|
|
7
6
|
import usePayloadAPI from '../../../../hooks/usePayloadAPI';
|
|
8
7
|
import RenderCustomComponent from '../../../utilities/RenderCustomComponent';
|
|
9
8
|
import DefaultEdit from './Default';
|
|
@@ -13,11 +12,10 @@ import { useLocale } from '../../../utilities/Locale';
|
|
|
13
12
|
import { useDocumentInfo } from '../../../utilities/DocumentInfo';
|
|
14
13
|
import { usePreferences } from '../../../utilities/Preferences';
|
|
15
14
|
import { EditDepthContext } from '../../../utilities/EditDepth';
|
|
16
|
-
import { getTranslation } from '../../../../../utilities/getTranslation';
|
|
17
15
|
const EditView = (props) => {
|
|
18
16
|
var _a, _b, _c;
|
|
19
17
|
const { collection: incomingCollection, isEditing } = props;
|
|
20
|
-
const { slug,
|
|
18
|
+
const { slug, admin: { components: { views: { Edit: CustomEdit, } = {}, } = {}, } = {}, } = incomingCollection;
|
|
21
19
|
const [fields] = useState(() => formatFields(incomingCollection, isEditing));
|
|
22
20
|
const [collection] = useState(() => ({ ...incomingCollection, fields }));
|
|
23
21
|
const [redirect, setRedirect] = useState();
|
|
@@ -26,12 +24,11 @@ const EditView = (props) => {
|
|
|
26
24
|
const { params: { id } = {} } = useRouteMatch();
|
|
27
25
|
const { state: locationState } = useLocation();
|
|
28
26
|
const history = useHistory();
|
|
29
|
-
const { setStepNav } = useStepNav();
|
|
30
27
|
const [initialState, setInitialState] = useState();
|
|
31
28
|
const { permissions, user } = useAuth();
|
|
32
29
|
const { getVersions, preferencesKey } = useDocumentInfo();
|
|
33
30
|
const { getPreference } = usePreferences();
|
|
34
|
-
const { t
|
|
31
|
+
const { t } = useTranslation('general');
|
|
35
32
|
const onSave = useCallback(async (json) => {
|
|
36
33
|
var _a;
|
|
37
34
|
getVersions();
|
|
@@ -39,54 +36,23 @@ const EditView = (props) => {
|
|
|
39
36
|
setRedirect(`${admin}/collections/${collection.slug}/${(_a = json === null || json === void 0 ? void 0 : json.doc) === null || _a === void 0 ? void 0 : _a.id}`);
|
|
40
37
|
}
|
|
41
38
|
else {
|
|
42
|
-
const state = await buildStateFromSchema({ fieldSchema: collection.fields, data: json.doc, user, id, operation: 'update', locale,
|
|
39
|
+
const state = await buildStateFromSchema({ fieldSchema: collection.fields, data: json.doc, user, id, operation: 'update', locale, t });
|
|
43
40
|
setInitialState(state);
|
|
44
41
|
}
|
|
45
|
-
}, [admin, collection, isEditing, getVersions, user, id,
|
|
42
|
+
}, [admin, collection, isEditing, getVersions, user, id, t, locale]);
|
|
46
43
|
const [{ data, isLoading: isLoadingDocument, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
|
|
47
44
|
const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
|
|
48
|
-
useEffect(() => {
|
|
49
|
-
const nav = [{
|
|
50
|
-
url: `${admin}/collections/${slug}`,
|
|
51
|
-
label: getTranslation(pluralLabel, i18n),
|
|
52
|
-
}];
|
|
53
|
-
if (isEditing) {
|
|
54
|
-
let label = '';
|
|
55
|
-
if (dataToRender) {
|
|
56
|
-
if (useAsTitle) {
|
|
57
|
-
if (dataToRender[useAsTitle]) {
|
|
58
|
-
label = dataToRender[useAsTitle];
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
label = `[${t('untitled')}]`;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
label = dataToRender.id;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
nav.push({
|
|
69
|
-
label,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
nav.push({
|
|
74
|
-
label: t('createNew'),
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
setStepNav(nav);
|
|
78
|
-
}, [setStepNav, isEditing, pluralLabel, dataToRender, slug, useAsTitle, admin, t, i18n]);
|
|
79
45
|
useEffect(() => {
|
|
80
46
|
if (isLoadingDocument) {
|
|
81
47
|
return;
|
|
82
48
|
}
|
|
83
49
|
const awaitInitialState = async () => {
|
|
84
|
-
const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: isEditing ? 'update' : 'create', id, locale,
|
|
50
|
+
const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: isEditing ? 'update' : 'create', id, locale, t });
|
|
85
51
|
await getPreference(preferencesKey);
|
|
86
52
|
setInitialState(state);
|
|
87
53
|
};
|
|
88
54
|
awaitInitialState();
|
|
89
|
-
}, [dataToRender, fields, isEditing, id, user, locale, isLoadingDocument, preferencesKey, getPreference,
|
|
55
|
+
}, [dataToRender, fields, isEditing, id, user, locale, isLoadingDocument, preferencesKey, getPreference, t]);
|
|
90
56
|
useEffect(() => {
|
|
91
57
|
if (redirect) {
|
|
92
58
|
history.push(redirect);
|
|
@@ -14,13 +14,15 @@ const usePayloadAPI = (url, options = {}) => {
|
|
|
14
14
|
const search = queryString.stringify({
|
|
15
15
|
locale,
|
|
16
16
|
...(typeof params === 'object' ? params : {}),
|
|
17
|
+
}, {
|
|
18
|
+
addQueryPrefix: true,
|
|
17
19
|
});
|
|
18
20
|
useEffect(() => {
|
|
19
21
|
const fetchData = async () => {
|
|
20
22
|
setIsError(false);
|
|
21
23
|
setIsLoading(true);
|
|
22
24
|
try {
|
|
23
|
-
const response = await requests.get(`${url}
|
|
25
|
+
const response = await requests.get(`${url}${search}`, {
|
|
24
26
|
headers: {
|
|
25
27
|
'Accept-Language': i18n.language,
|
|
26
28
|
},
|
|
@@ -6,7 +6,7 @@ const executeAccess = async (operation, access) => {
|
|
|
6
6
|
const result = await access(operation);
|
|
7
7
|
if (!result) {
|
|
8
8
|
if (!operation.disableErrors)
|
|
9
|
-
throw new errors_1.Forbidden(operation.req.
|
|
9
|
+
throw new errors_1.Forbidden(operation.req.t);
|
|
10
10
|
}
|
|
11
11
|
return result;
|
|
12
12
|
}
|
|
@@ -14,8 +14,8 @@ const executeAccess = async (operation, access) => {
|
|
|
14
14
|
return true;
|
|
15
15
|
}
|
|
16
16
|
if (!operation.disableErrors)
|
|
17
|
-
throw new errors_1.Forbidden(operation.req.
|
|
17
|
+
throw new errors_1.Forbidden(operation.req.t);
|
|
18
18
|
return false;
|
|
19
19
|
};
|
|
20
20
|
exports.default = executeAccess;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZUFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2V4ZWN1dGVBY2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBc0M7QUFHdEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFjLEVBQXlCLEVBQUU7SUFDL0UsSUFBSSxNQUFNLEVBQUU7UUFDVixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO2dCQUFFLE1BQU0sSUFBSSxrQkFBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFFRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtRQUN0QixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1FBQUUsTUFBTSxJQUFJLGtCQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLGtCQUFlLGFBQWEsQ0FBQyJ9
|
|
@@ -42,7 +42,7 @@ const getExecuteStaticAccess = ({ config, Model }) => async (req, res, next) =>
|
|
|
42
42
|
const query = await Model.buildQuery(queryToBuild, req.locale);
|
|
43
43
|
const doc = await Model.findOne(query);
|
|
44
44
|
if (!doc) {
|
|
45
|
-
throw new errors_1.Forbidden(req.
|
|
45
|
+
throw new errors_1.Forbidden(req.t);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -53,4 +53,4 @@ const getExecuteStaticAccess = ({ config, Model }) => async (req, res, next) =>
|
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
exports.default = getExecuteStaticAccess;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0RXhlY3V0ZVN0YXRpY0FjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2dldEV4ZWN1dGVTdGF0aWNBY2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxvRUFBNEM7QUFDNUMsc0NBQXNDO0FBR3RDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQW1CLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQUUsRUFBRTtJQUNySCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM1QjtJQUVELElBQUk7UUFDRixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDWixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUEsdUJBQWEsRUFBQyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWpHLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO2dCQUNwQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBRTdELE1BQU0sWUFBWSxHQUFxQjtvQkFDckMsS0FBSyxFQUFFO3dCQUNMLEdBQUcsRUFBRTs0QkFDSDtnQ0FDRSxFQUFFLEVBQUU7b0NBQ0Y7d0NBQ0UsUUFBUSxFQUFFOzRDQUNSLE1BQU0sRUFBRSxRQUFRO3lDQUNqQjtxQ0FDRjtpQ0FDRjs2QkFDRjs0QkFDRCxZQUFZO3lCQUNiO3FCQUNGO2lCQUNGLENBQUM7Z0JBRUYsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO3dCQUM1QyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzRCQUNoQyxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsRUFBRTtnQ0FDMUIsTUFBTSxFQUFFLFFBQVE7NkJBQ2pCO3lCQUNGLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV2QyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLE1BQU0sSUFBSSxrQkFBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDNUI7YUFDRjtTQUNGO1FBRUQsT0FBTyxJQUFJLEVBQUUsQ0FBQztLQUNmO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwQjtBQUNILENBQUMsQ0FBQztBQUVGLGtCQUFlLHNCQUFzQixDQUFDIn0=
|