payload 0.17.2 → 0.17.3
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 +8 -0
- package/dist/admin/components/elements/DeleteDocument/index.js +5 -2
- package/dist/auth/requestHandlers/me.js +3 -2
- package/dist/collections/config/defaults.d.ts +1 -0
- package/dist/collections/config/defaults.js +2 -1
- package/dist/collections/config/schema.js +6 -1
- package/dist/collections/config/types.d.ts +5 -1
- package/dist/collections/init.js +20 -18
- package/dist/collections/operations/local/create.js +5 -5
- package/dist/collections/operations/local/delete.js +4 -4
- package/dist/collections/operations/local/findByID.js +4 -4
- package/dist/collections/operations/local/findVersionByID.js +5 -5
- package/dist/collections/tests/collections.spec.js +10 -1
- package/dist/collections/tests/endpoints.spec.d.ts +1 -0
- package/dist/collections/tests/endpoints.spec.js +71 -0
- package/dist/config/types.d.ts +6 -1
- package/dist/config/validate.js +1 -2
- package/dist/fields/hooks/beforeChange/promise.js +4 -4
- package/dist/globals/config/sanitize.js +3 -1
- package/dist/globals/config/schema.js +6 -1
- package/dist/globals/config/types.d.ts +2 -1
- package/dist/globals/init.js +9 -6
- package/dist/globals/requestHandlers/globals.spec.js +14 -1
- package/dist/init/mountEndpoints.d.ts +4 -0
- package/dist/init/mountEndpoints.js +9 -0
- package/docs/access-control/collections.mdx +80 -8
- package/docs/access-control/overview.mdx +2 -2
- package/docs/configuration/collections.mdx +8 -7
- package/docs/configuration/globals.mdx +1 -0
- package/docs/fields/overview.mdx +1 -30
- package/docs/rest-api/overview.mdx +46 -0
- package/package.json +2 -2
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const load_1 = __importDefault(require("../../config/load"));
|
|
7
|
+
const testCredentials_1 = require("../../mongoose/testCredentials");
|
|
8
|
+
require('isomorphic-fetch');
|
|
9
|
+
const { serverURL: url } = (0, load_1.default)();
|
|
10
|
+
let token = null;
|
|
11
|
+
let headers = null;
|
|
12
|
+
describe('Collections - REST', () => {
|
|
13
|
+
beforeAll(async (done) => {
|
|
14
|
+
const response = await fetch(`${url}/api/admins/login`, {
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
email: testCredentials_1.email,
|
|
17
|
+
password: testCredentials_1.password,
|
|
18
|
+
}),
|
|
19
|
+
headers: {
|
|
20
|
+
'Content-Type': 'application/json',
|
|
21
|
+
},
|
|
22
|
+
method: 'post',
|
|
23
|
+
});
|
|
24
|
+
const data = await response.json();
|
|
25
|
+
({ token } = data);
|
|
26
|
+
headers = {
|
|
27
|
+
Authorization: `JWT ${token}`,
|
|
28
|
+
'Content-Type': 'application/json',
|
|
29
|
+
};
|
|
30
|
+
done();
|
|
31
|
+
});
|
|
32
|
+
describe('Endpoints', () => {
|
|
33
|
+
it('should GET a static endpoint', async () => {
|
|
34
|
+
const response = await fetch(`${url}/api/endpoints/say-hello/joe-bloggs`, {
|
|
35
|
+
headers: {
|
|
36
|
+
...headers,
|
|
37
|
+
},
|
|
38
|
+
method: 'get',
|
|
39
|
+
});
|
|
40
|
+
const data = await response.json();
|
|
41
|
+
expect(response.status).toBe(200);
|
|
42
|
+
expect(data.message).toStrictEqual(`Hey Joey! Welcome to ${url}/api`);
|
|
43
|
+
});
|
|
44
|
+
it('should GET an endpoint with a parameter', async () => {
|
|
45
|
+
const response = await fetch(`${url}/api/endpoints/say-hello/George`, {
|
|
46
|
+
headers: {
|
|
47
|
+
...headers,
|
|
48
|
+
},
|
|
49
|
+
method: 'get',
|
|
50
|
+
});
|
|
51
|
+
const data = await response.json();
|
|
52
|
+
expect(response.status).toBe(200);
|
|
53
|
+
expect(data.message).toStrictEqual('Hello George!');
|
|
54
|
+
});
|
|
55
|
+
it('should POST an endpoint with data', async () => {
|
|
56
|
+
const params = { name: 'George', age: 29 };
|
|
57
|
+
const response = await fetch(`${url}/api/endpoints/whoami`, {
|
|
58
|
+
body: JSON.stringify(params),
|
|
59
|
+
headers: {
|
|
60
|
+
...headers,
|
|
61
|
+
},
|
|
62
|
+
method: 'post',
|
|
63
|
+
});
|
|
64
|
+
const data = await response.json();
|
|
65
|
+
expect(response.status).toBe(200);
|
|
66
|
+
expect(data.name).toStrictEqual(params.name);
|
|
67
|
+
expect(data.age).toStrictEqual(params.age);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnRzLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29sbGVjdGlvbnMvdGVzdHMvZW5kcG9pbnRzLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFBMEM7QUFDMUMsb0VBQWlFO0FBRWpFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTVCLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBQSxjQUFTLEdBQUUsQ0FBQztBQUV2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBRW5CLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7SUFDbEMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEdBQUcsbUJBQW1CLEVBQUU7WUFDdEQsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ25CLEtBQUssRUFBTCx1QkFBSztnQkFDTCxRQUFRLEVBQVIsMEJBQVE7YUFDVCxDQUFDO1lBQ0YsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7WUFDRCxNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRW5DLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuQixPQUFPLEdBQUc7WUFDUixhQUFhLEVBQUUsT0FBTyxLQUFLLEVBQUU7WUFDN0IsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQyxDQUFDO1FBRUYsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEdBQUcscUNBQXFDLEVBQUU7Z0JBQ3hFLE9BQU8sRUFBRTtvQkFDUCxHQUFHLE9BQU87aUJBQ1g7Z0JBQ0QsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEdBQUcsaUNBQWlDLEVBQUU7Z0JBQ3BFLE9BQU8sRUFBRTtvQkFDUCxHQUFHLE9BQU87aUJBQ1g7Z0JBQ0QsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNqRCxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyx1QkFBdUIsRUFBRTtnQkFDMUQsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM1QixPQUFPLEVBQUU7b0JBQ1AsR0FBRyxPQUFPO2lCQUNYO2dCQUNELE1BQU0sRUFBRSxNQUFNO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
|
package/dist/config/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Express } from 'express';
|
|
1
|
+
import { Express, Handler } from 'express';
|
|
2
2
|
import { DeepRequired } from 'ts-essentials';
|
|
3
3
|
import { Transporter } from 'nodemailer';
|
|
4
4
|
import { Options } from 'express-fileupload';
|
|
@@ -60,6 +60,11 @@ export declare type AccessResult = boolean | Where;
|
|
|
60
60
|
* Access function
|
|
61
61
|
*/
|
|
62
62
|
export declare type Access = (args?: any) => AccessResult | Promise<AccessResult>;
|
|
63
|
+
export declare type Endpoint = {
|
|
64
|
+
path: string;
|
|
65
|
+
method: 'get' | 'head' | 'post' | 'put' | 'patch' | 'delete' | 'connect' | 'options' | string;
|
|
66
|
+
handler: Handler | Handler[];
|
|
67
|
+
};
|
|
63
68
|
export declare type AdminView = React.ComponentType<{
|
|
64
69
|
user: User;
|
|
65
70
|
canAccessAdmin: boolean;
|
package/dist/config/validate.js
CHANGED
|
@@ -45,7 +45,6 @@ const validateFields = (context, entity) => {
|
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
if (result.error) {
|
|
48
|
-
console.log(result.error);
|
|
49
48
|
result.error.details.forEach(({ message }) => {
|
|
50
49
|
errors.push(`${context} "${entity.slug}" > Field${(0, types_1.fieldAffectsData)(field) ? ` "${field.name}" >` : ''} ${message}`);
|
|
51
50
|
});
|
|
@@ -106,4 +105,4 @@ const validateSchema = (config, logger) => {
|
|
|
106
105
|
return result.value;
|
|
107
106
|
};
|
|
108
107
|
exports.default = validateSchema;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxzREFBOEI7QUFDOUIsMEVBQTREO0FBRzVELGtFQUErRDtBQUUvRCxzRUFBb0Q7QUFDcEQsa0RBQTBEO0FBRTFELE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBZSxFQUFFLE1BQXlELEVBQVksRUFBRTtJQUM5RyxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUM5QixJQUFJLFFBQVEsR0FBOEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDMUQsSUFBSSxJQUFBLHdCQUFnQixFQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ2xELFFBQVEsR0FBRyxnQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMzRDtRQUVELE1BQU0sTUFBTSxHQUFHLGdCQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNsQixRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7Z0JBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLEtBQUssTUFBTSxDQUFDLElBQUksWUFBWSxJQUFBLHdCQUFnQixFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFB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
|
|
@@ -71,8 +71,8 @@ const promise = async ({ data, doc, docWithLocales, errors, field, id, mergeLoca
|
|
|
71
71
|
}
|
|
72
72
|
const validationResult = await field.validate(valueToValidate, {
|
|
73
73
|
...field,
|
|
74
|
-
data: (0, deepmerge_1.default)(doc, data),
|
|
75
|
-
siblingData: (0, deepmerge_1.default)(siblingDoc, siblingData),
|
|
74
|
+
data: (0, deepmerge_1.default)(doc, data, { arrayMerge: (_, source) => source }),
|
|
75
|
+
siblingData: (0, deepmerge_1.default)(siblingDoc, siblingData, { arrayMerge: (_, source) => source }),
|
|
76
76
|
id,
|
|
77
77
|
operation,
|
|
78
78
|
user: req.user,
|
|
@@ -86,7 +86,7 @@ const promise = async ({ data, doc, docWithLocales, errors, field, id, mergeLoca
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
// Push merge locale action if applicable
|
|
89
|
-
if (field.localized) {
|
|
89
|
+
if (field.localized && req.payload.config.localization) {
|
|
90
90
|
mergeLocaleActions.push(() => {
|
|
91
91
|
const localeData = req.payload.config.localization.locales.reduce((locales, localeID) => {
|
|
92
92
|
var _a;
|
|
@@ -233,4 +233,4 @@ const promise = async ({ data, doc, docWithLocales, errors, field, id, mergeLoca
|
|
|
233
233
|
}
|
|
234
234
|
};
|
|
235
235
|
exports.promise = promise;
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlL3Byb21pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsc0NBQXNDO0FBQ3RDLDBEQUE4QjtBQUM5Qiw4Q0FBNkQ7QUFHN0QsNEVBQXdEO0FBQ3hELHFEQUFrRDtBQW9CbEQsb0VBQW9FO0FBQ3BFLGtCQUFrQjtBQUNsQixvREFBb0Q7QUFDcEQsZ0RBQWdEO0FBQ2hELHdCQUF3QjtBQUN4QixrQkFBa0I7QUFDbEIsK0JBQStCO0FBQy9CLHNCQUFzQjtBQUVmLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxFQUM1QixJQUFJLEVBQ0osR0FBRyxFQUNILGNBQWMsRUFDZCxNQUFNLEVBQ04sS0FBSyxFQUNMLEVBQUUsRUFDRixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULElBQUksRUFDSixRQUFRLEVBQ1IsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YscUJBQXFCLEVBQ3JCLGNBQWMsR0FDVCxFQUFpQixFQUFFOztJQUN4QixNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25HLE1BQU0sc0JBQXNCLEdBQUcsY0FBYyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBRWxFLElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsRUFBRTtRQUMzQixJQUFJLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDbEQsd0VBQXdFO1lBQ3hFLElBQUksT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFdBQVcsRUFBRTtnQkFD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
|
|
@@ -19,6 +19,8 @@ const sanitizeGlobals = (collections, globals) => {
|
|
|
19
19
|
// /////////////////////////////////
|
|
20
20
|
if (!sanitizedGlobal.hooks)
|
|
21
21
|
sanitizedGlobal.hooks = {};
|
|
22
|
+
if (!sanitizedGlobal.endpoints)
|
|
23
|
+
sanitizedGlobal.endpoints = [];
|
|
22
24
|
if (!sanitizedGlobal.access)
|
|
23
25
|
sanitizedGlobal.access = {};
|
|
24
26
|
if (!sanitizedGlobal.admin)
|
|
@@ -66,4 +68,4 @@ const sanitizeGlobals = (collections, globals) => {
|
|
|
66
68
|
return sanitizedGlobals;
|
|
67
69
|
};
|
|
68
70
|
exports.default = sanitizeGlobals;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmFscy9jb25maWcvc2FuaXRpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwREFBOEI7QUFDOUIsK0RBQXVEO0FBRXZELDRFQUEwRDtBQUUxRCw2RUFBcUQ7QUFDckQsMkVBQTBEO0FBQzFELG1GQUEyRDtBQUMzRCxzREFBZ0U7QUFFaEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxXQUErQixFQUFFLE9BQXVCLEVBQTJCLEVBQUU7SUFDNUcsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDOUMsTUFBTSxlQUFlLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRXRDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssSUFBSSxJQUFBLHNCQUFPLEVBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9FLG9DQUFvQztRQUNwQyx1REFBdUQ7UUFDdkQsb0NBQW9DO1FBRXBDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSztZQUFFLGVBQWUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUztZQUFFLGVBQWUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTTtZQUFFLGVBQWUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSztZQUFFLGVBQWUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRXZELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUk7WUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyx1QkFBYSxDQUFDO1FBQzlFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyx1QkFBYSxDQUFDO1FBRWxGLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWM7WUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDckYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsWUFBWTtZQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNqRixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxXQUFXO1lBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUztZQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUUzRSxJQUFJLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxlQUFlLENBQUMsUUFBUSxLQUFLLElBQUk7Z0JBQUUsZUFBZSxDQUFDLFFBQVEsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUVwRixJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTtvQkFDNUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUc7d0JBQ2hDLFFBQVEsRUFBRSxLQUFLO3FCQUNoQixDQUFDO2lCQUNIO2dCQUVELElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUk7b0JBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFFckcsTUFBTSxhQUFhLEdBQUcsSUFBQSx5QkFBZSxFQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsb0JBQWlCLENBQUMsQ0FBQztnQkFFakYsZUFBZSxDQUFDLE1BQU0sR0FBRztvQkFDdkIsR0FBRyxhQUFhO29CQUNoQixHQUFHLGVBQWUsQ0FBQyxNQUFNO2lCQUMxQixDQUFDO2FBQ0g7WUFFRCxlQUFlLENBQUMsUUFBUSxHQUFHLElBQUEsbUJBQUssRUFBQyxnQ0FBcUIsRUFBRSxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkY7UUFFRCxvQ0FBb0M7UUFDcEMsa0JBQWtCO1FBQ2xCLG9DQUFvQztRQUVwQyxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUEsa0JBQWMsRUFBQyxlQUFlLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFcEYsT0FBTyxlQUF3QyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRixrQkFBZSxlQUFlLENBQUMifQ==
|
|
@@ -19,6 +19,11 @@ const globalSchema = joi_1.default.object().keys({
|
|
|
19
19
|
beforeRead: joi_1.default.array().items(joi_1.default.func()),
|
|
20
20
|
afterRead: joi_1.default.array().items(joi_1.default.func()),
|
|
21
21
|
}),
|
|
22
|
+
endpoints: joi_1.default.array().items(joi_1.default.object({
|
|
23
|
+
path: joi_1.default.string(),
|
|
24
|
+
method: joi_1.default.string().valid('get', 'head', 'post', 'put', 'patch', 'delete', 'connect', 'options'),
|
|
25
|
+
handler: joi_1.default.alternatives().try(joi_1.default.array().items(joi_1.default.func()), joi_1.default.func()),
|
|
26
|
+
})),
|
|
22
27
|
access: joi_1.default.object({
|
|
23
28
|
read: joi_1.default.func(),
|
|
24
29
|
readVersions: joi_1.default.func(),
|
|
@@ -35,4 +40,4 @@ const globalSchema = joi_1.default.object().keys({
|
|
|
35
40
|
}), joi_1.default.boolean()),
|
|
36
41
|
}).unknown();
|
|
37
42
|
exports.default = globalSchema;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JhbHMvY29uZmlnL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUFzQjtBQUN0QixxRUFBa0U7QUFFbEUsTUFBTSxZQUFZLEdBQUcsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztJQUNyQyxJQUFJLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixLQUFLLEVBQUUsYUFBRyxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsYUFBRyxDQUFDLE1BQU0sQ0FBQztRQUNoQixVQUFVLEVBQUUsYUFBRyxDQUFDLE9BQU8sRUFBRTtRQUN6QixXQUFXLEVBQUUsYUFBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FDakMsYUFBRyxDQUFDLE1BQU0sRUFBRSxFQUNaLGlDQUFlLENBQ2hCO0tBQ0YsQ0FBQztJQUNGLEtBQUssRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2hCLGNBQWMsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxZQUFZLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsV0FBVyxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLFVBQVUsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxTQUFTLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDekMsQ0FBQztJQUNGLFNBQVMsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDdEMsSUFBSSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDbEIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNqRyxPQUFPLEVBQUUsYUFBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FDN0IsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDN0IsYUFBRyxDQUFDLElBQUksRUFBRSxDQUNYO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDakIsSUFBSSxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDaEIsWUFBWSxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDeEIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUU7S0FDbkIsQ0FBQztJQUNGLE1BQU0sRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFO0lBQ25CLFFBQVEsRUFBRSxhQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUM5QixhQUFHLENBQUMsTUFBTSxDQUFDO1FBQ1QsR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDakIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQzVCLGFBQUcsQ0FBQyxNQUFNLENBQUM7WUFDVCxRQUFRLEVBQUUsYUFBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FDOUIsYUFBRyxDQUFDLE9BQU8sRUFBRSxFQUNiLGFBQUcsQ0FBQyxNQUFNLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7YUFDdkIsQ0FBQyxDQUNIO1NBQ0YsQ0FBQyxFQUNGLGFBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FDZDtLQUNGLENBQUMsRUFDRixhQUFHLENBQUMsT0FBTyxFQUFFLENBQ2Q7Q0FDRixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFYixrQkFBZSxZQUFZLENBQUMifQ==
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { Model, Document } from 'mongoose';
|
|
3
3
|
import { DeepRequired } from 'ts-essentials';
|
|
4
4
|
import { PayloadRequest } from '../../express/types';
|
|
5
|
-
import { Access, GeneratePreviewURL } from '../../config/types';
|
|
5
|
+
import { Access, Endpoint, GeneratePreviewURL } from '../../config/types';
|
|
6
6
|
import { Field } from '../../fields/config/types';
|
|
7
7
|
import { IncomingGlobalVersions, SanitizedGlobalVersions } from '../../versions/types';
|
|
8
8
|
export declare type TypeWithID = {
|
|
@@ -52,6 +52,7 @@ export declare type GlobalConfig = {
|
|
|
52
52
|
beforeRead?: BeforeReadHook[];
|
|
53
53
|
afterRead?: AfterReadHook[];
|
|
54
54
|
};
|
|
55
|
+
endpoints?: Endpoint[];
|
|
55
56
|
access?: {
|
|
56
57
|
read?: Access;
|
|
57
58
|
readDrafts?: Access;
|
package/dist/globals/init.js
CHANGED
|
@@ -11,6 +11,7 @@ const buildModel_1 = __importDefault(require("./buildModel"));
|
|
|
11
11
|
const getVersionsModelName_1 = require("../versions/getVersionsModelName");
|
|
12
12
|
const buildGlobalFields_1 = require("../versions/buildGlobalFields");
|
|
13
13
|
const buildSchema_1 = __importDefault(require("../mongoose/buildSchema"));
|
|
14
|
+
const mountEndpoints_1 = __importDefault(require("../init/mountEndpoints"));
|
|
14
15
|
function initGlobals(ctx) {
|
|
15
16
|
if (ctx.config.globals) {
|
|
16
17
|
ctx.globals = {
|
|
@@ -33,23 +34,25 @@ function initGlobals(ctx) {
|
|
|
33
34
|
});
|
|
34
35
|
// If not local, open routes
|
|
35
36
|
if (!ctx.local) {
|
|
36
|
-
const router = express_1.default.Router();
|
|
37
37
|
ctx.config.globals.forEach((global) => {
|
|
38
|
+
const router = express_1.default.Router();
|
|
39
|
+
const { slug, endpoints } = global;
|
|
40
|
+
(0, mountEndpoints_1.default)(router, endpoints);
|
|
38
41
|
router
|
|
39
|
-
.route(
|
|
42
|
+
.route('/')
|
|
40
43
|
.get(ctx.requestHandlers.globals.findOne(global))
|
|
41
44
|
.post(ctx.requestHandlers.globals.update(global));
|
|
42
45
|
if (global.versions) {
|
|
43
|
-
router.route(
|
|
46
|
+
router.route('/versions')
|
|
44
47
|
.get(ctx.requestHandlers.globals.findVersions(global));
|
|
45
|
-
router.route(
|
|
48
|
+
router.route('/versions/:id')
|
|
46
49
|
.get(ctx.requestHandlers.globals.findVersionByID(global))
|
|
47
50
|
.post(ctx.requestHandlers.globals.restoreVersion(global));
|
|
48
51
|
}
|
|
52
|
+
ctx.router.use(`/globals/${slug}`, router);
|
|
49
53
|
});
|
|
50
|
-
ctx.router.use(router);
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
57
|
exports.default = initGlobals;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iYWxzL2luaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBOEI7QUFDOUIsd0RBQWdDO0FBQ2hDLGdGQUE0QztBQUM1Qyx3RUFBc0Q7QUFDdEQsOERBQXNDO0FBRXRDLDJFQUF3RTtBQUN4RSxxRUFBeUU7QUFDekUsMEVBQWtEO0FBRWxELDRFQUFvRDtBQUVwRCxTQUF3QixXQUFXLENBQUMsR0FBWTtJQUM5QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3RCLEdBQUcsQ0FBQyxPQUFPLEdBQUc7WUFDWixLQUFLLEVBQUUsSUFBQSxvQkFBVSxFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDN0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTztTQUMzQixDQUFDO1FBRUYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUNuQixNQUFNLGdCQUFnQixHQUFHLElBQUEsMkNBQW9CLEVBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXRELE1BQU0sYUFBYSxHQUFHLElBQUEscUJBQVcsRUFDL0IsR0FBRyxDQUFDLE1BQU0sRUFDVixJQUFBLDRDQUF3QixFQUFDLE1BQU0sQ0FBQyxFQUNoQztvQkFDRSxhQUFhLEVBQUUsSUFBSTtvQkFDbkIsT0FBTyxFQUFFO3dCQUNQLFVBQVUsRUFBRSxJQUFJO3FCQUNqQjtpQkFDRixDQUNGLENBQUM7Z0JBRUYsYUFBYSxDQUFDLE1BQU0sQ0FBQyw4QkFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQ3hELE1BQU0sQ0FBQyxvQkFBZ0IsQ0FBQyxDQUFDO2dCQUU1QixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBUSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQW9CLENBQUM7YUFDaEc7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDRCQUE0QjtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQyxNQUFNLE1BQU0sR0FBRyxpQkFBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztnQkFFbkMsSUFBQSx3QkFBYyxFQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFbEMsTUFBTTtxQkFDSCxLQUFLLENBQUMsR0FBRyxDQUFDO3FCQUNWLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFFcEQsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzt5QkFDdEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUV6RCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQzt5QkFDMUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUM3RDtnQkFFRCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7S0FDRjtBQUNILENBQUM7QUF2REQsOEJBdURDIn0=
|
|
@@ -157,5 +157,18 @@ describe('Globals - REST', () => {
|
|
|
157
157
|
expect(textarea).toStrictEqual(navData.es.nav1.textarea);
|
|
158
158
|
});
|
|
159
159
|
});
|
|
160
|
+
describe('Endpoints', () => {
|
|
161
|
+
it('should respond with number of navigation items', async () => {
|
|
162
|
+
const response = await fetch(`${url}/api/globals/navigation-array/count`, {
|
|
163
|
+
headers: {
|
|
164
|
+
Authorization: `JWT ${token}`,
|
|
165
|
+
'Content-Type': 'application/json',
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
expect(response.status).toBe(200);
|
|
169
|
+
const data = await response.json();
|
|
170
|
+
expect(data.count).toStrictEqual(2);
|
|
171
|
+
});
|
|
172
|
+
});
|
|
160
173
|
});
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFscy5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JhbHMvcmVxdWVzdEhhbmRsZXJzL2dsb2JhbHMuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7O0FBRUgsNkRBQTBDO0FBQzFDLG9FQUFpRTtBQUVqRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUU1QixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUEsY0FBUyxHQUFFLENBQUM7QUFFdkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBRWpCLE1BQU0sT0FBTyxHQUFHO0lBQ2QsRUFBRSxFQUFFO1FBQ0YsSUFBSSxFQUFFO1lBQ0osSUFBSSxFQUFFLGNBQWM7WUFDcEIsUUFBUSxFQUFFLHNCQUFzQjtTQUNqQztRQUNELElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSwyQkFBMkI7U0FDdEM7S0FDRjtJQUNELEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSwyQkFBMkI7U0FDdEM7UUFDRCxJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsY0FBYztZQUNwQixRQUFRLEVBQUUsb0NBQW9DO1NBQy9DO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRTtZQUN0RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsS0FBSyxFQUFMLHVCQUFLO2dCQUNMLFFBQVEsRUFBUiwwQkFBUTthQUNULENBQUM7WUFDRixPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLGtCQUFr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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function mountEndpoints(router, endpoints) {
|
|
4
|
+
endpoints.forEach((endpoint) => {
|
|
5
|
+
router[endpoint.method](endpoint.path, endpoint.handler);
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
exports.default = mountEndpoints;
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW91bnRFbmRwb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5pdC9tb3VudEVuZHBvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLFNBQVMsY0FBYyxDQUFDLE1BQWMsRUFBRSxTQUFxQjtJQUMzRCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDN0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxrQkFBZSxjQUFjLENBQUMifQ==
|
|
@@ -46,52 +46,124 @@ export default {
|
|
|
46
46
|
|
|
47
47
|
Returns a boolean which allows/denies access to the `create` request.
|
|
48
48
|
|
|
49
|
-
**Available argument properties
|
|
49
|
+
**Available argument properties:**
|
|
50
50
|
|
|
51
51
|
| Option | Description |
|
|
52
52
|
| ---------- | ----------- |
|
|
53
53
|
| **`req`** | The Express `request` object containing the currently authenticated `user` |
|
|
54
54
|
| **`data`** | The data passed to create the document with. |
|
|
55
55
|
|
|
56
|
+
**Example:**
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
const PublicUsers = {
|
|
60
|
+
slug: 'public-users',
|
|
61
|
+
access: {
|
|
62
|
+
// highlight-start
|
|
63
|
+
// allow guest users to self-registration
|
|
64
|
+
create: () => true,
|
|
65
|
+
// highlight-end
|
|
66
|
+
...
|
|
67
|
+
},
|
|
68
|
+
fields: [ ... ],
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
56
72
|
### Read
|
|
57
73
|
|
|
58
74
|
Read access functions can return a boolean result or optionally return a [query constraint](/docs/queries/overview) which limits the documents that are returned to only those that match the constraint you provide. This can be helpful to restrict users' access to only certain documents however you specify.
|
|
59
75
|
|
|
60
|
-
**Available argument properties
|
|
76
|
+
**Available argument properties:**
|
|
61
77
|
|
|
62
78
|
| Option | Description |
|
|
63
79
|
| --------- | ----------- |
|
|
64
80
|
| **`req`** | The Express `request` object containing the currently authenticated `user` |
|
|
65
|
-
| **`id`** | `id` of document requested, if within `findByID
|
|
81
|
+
| **`id`** | `id` of document requested, if within `findByID` |
|
|
82
|
+
|
|
83
|
+
**Example:**
|
|
84
|
+
|
|
85
|
+
```js
|
|
86
|
+
const canReadPage = ({ req: { user } }) => {
|
|
87
|
+
// allow authenticated users
|
|
88
|
+
if (user) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
// using a query constraint, guest users can access when a field named 'isPublic' is set to true
|
|
92
|
+
return {
|
|
93
|
+
where: {
|
|
94
|
+
// assumes we have a checkbox field named 'isPublic'
|
|
95
|
+
isPublic: {
|
|
96
|
+
equals: true
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
```
|
|
66
102
|
|
|
67
103
|
### Update
|
|
68
104
|
|
|
69
105
|
Update access functions can return a boolean result or optionally return a [query constraint](/docs/queries/overview) to limit the document(s) that can be updated by the currently authenticated user. For example, returning a `query` from the `update` Access Control is helpful in cases where you would like to restrict a user to only being able to update the documents containing a `createdBy` relationship field equal to the user's ID.
|
|
70
106
|
|
|
71
|
-
**Available argument properties
|
|
107
|
+
**Available argument properties:**
|
|
72
108
|
|
|
73
109
|
| Option | Description |
|
|
74
110
|
| ---------- | ----------- |
|
|
75
111
|
| **`req`** | The Express `request` object containing the currently authenticated `user` |
|
|
76
112
|
| **`id`** | `id` of document requested to update |
|
|
77
|
-
| **`data`** | The data passed to update the document with
|
|
113
|
+
| **`data`** | The data passed to update the document with |
|
|
114
|
+
|
|
115
|
+
**Example:**
|
|
116
|
+
|
|
117
|
+
```js
|
|
118
|
+
|
|
119
|
+
const canUpdateUser = ({ req: { user }, id }) => {
|
|
120
|
+
// allow users with a role of 'admin'
|
|
121
|
+
if (user.roles && user.roles.some((role) => role === 'admin')) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
// allow any other users to update only oneself
|
|
125
|
+
return user.id === id;
|
|
126
|
+
};
|
|
127
|
+
```
|
|
78
128
|
|
|
79
129
|
### Delete
|
|
80
130
|
|
|
81
131
|
Similarly to the Update function, returns a boolean or a [query constraint](/docs/queries/overview) to limit which documents can be deleted by which users.
|
|
82
132
|
|
|
83
|
-
**Available argument properties
|
|
133
|
+
**Available argument properties:**
|
|
84
134
|
|
|
85
135
|
| Option | Description |
|
|
86
136
|
| --------- | ----------- |
|
|
87
137
|
| **`req`** | The Express `request` object with additional `user` property, which is the currently logged in user |
|
|
88
138
|
| **`id`** | `id` of document requested to delete |
|
|
89
139
|
|
|
140
|
+
**Example:**
|
|
141
|
+
|
|
142
|
+
```js
|
|
143
|
+
const canDeleteCustomer = async ({ req, id }) => {
|
|
144
|
+
if (!id) {
|
|
145
|
+
// allow the admin UI to show controls to delete since it is indeterminate without the id
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
// query another collection using the id
|
|
149
|
+
const result = await req.payload.find({
|
|
150
|
+
collection: 'contracts',
|
|
151
|
+
limit: 0,
|
|
152
|
+
depth: 0,
|
|
153
|
+
where: {
|
|
154
|
+
customer: { equals: id },
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
return result.totalDocs === 0;
|
|
159
|
+
};
|
|
160
|
+
```
|
|
161
|
+
|
|
90
162
|
### Admin
|
|
91
163
|
|
|
92
164
|
If the Collection is [used to access the Payload Admin panel](/docs/admin/overview#the-admin-user-collection), the `Admin` Access Control function determines whether or not the currently logged in user can access the admin UI.
|
|
93
165
|
|
|
94
|
-
**Available argument properties
|
|
166
|
+
**Available argument properties:**
|
|
95
167
|
|
|
96
168
|
| Option | Description |
|
|
97
169
|
| --------- | ----------- |
|
|
@@ -101,7 +173,7 @@ If the Collection is [used to access the Payload Admin panel](/docs/admin/overvi
|
|
|
101
173
|
|
|
102
174
|
Determines which users can [unlock](/docs/authentication/operations#unlock) other users who may be blocked from authenticating successfully due to [failing too many login attempts](/docs/authentication/config#options).
|
|
103
175
|
|
|
104
|
-
**Available argument properties
|
|
176
|
+
**Available argument properties:**
|
|
105
177
|
|
|
106
178
|
| Option | Description |
|
|
107
179
|
| --------- | ----------- |
|
|
@@ -50,7 +50,7 @@ You can manage access within Payload on three different levels:
|
|
|
50
50
|
<Banner type="success">
|
|
51
51
|
<strong>Note:</strong><br/>
|
|
52
52
|
Access control functions are utilized in two places. It's important to understand how and when your access control is executed.
|
|
53
|
-
|
|
53
|
+
</Banner>
|
|
54
54
|
|
|
55
55
|
#### As you execute operations
|
|
56
56
|
|
|
@@ -67,6 +67,6 @@ To accomplish this, Payload ships with an `Access` operation, which is executed
|
|
|
67
67
|
<Banner type="warning">
|
|
68
68
|
<strong>Important:</strong><br/>
|
|
69
69
|
When your access control functions are executed via the <strong>access</strong> operation, the <strong>id</strong> and <strong>data</strong> arguments will be <strong>undefined</strong>, because Payload is executing your functions without referencing a specific document.
|
|
70
|
-
|
|
70
|
+
</Banner>
|
|
71
71
|
|
|
72
72
|
If you use `id` or `data` within your access control functions, make sure to check that they are defined first. If they are not, then you can assume that your access control is being executed via the `access` operation, to determine solely what the user can do within the Admin UI.
|
|
@@ -25,6 +25,7 @@ It's often best practice to write your Collections in separate files and then im
|
|
|
25
25
|
| **`upload`** | Specify options if you would like this Collection to support file uploads. For more, consult the [Uploads](/docs/upload/overview) documentation. |
|
|
26
26
|
| **`timestamps`** | Set to false to disable documents' automatically generated `createdAt` and `updatedAt` timestamps. |
|
|
27
27
|
| **`versions`** | Set to true to enable default options, or configure with object properties. [More](/docs/versions/overview#collection-config)|
|
|
28
|
+
| **`endpoints`** | Add custom routes to the REST API. [More](/docs/rest-api#custom-endpoints) |
|
|
28
29
|
|
|
29
30
|
*\* An asterisk denotes that a property is required.*
|
|
30
31
|
|
|
@@ -80,25 +81,25 @@ If the function is specified, a Preview button will automatically appear in the
|
|
|
80
81
|
**Example collection with preview function:**
|
|
81
82
|
|
|
82
83
|
```js
|
|
83
|
-
{
|
|
84
|
+
const Posts = {
|
|
84
85
|
slug: 'posts',
|
|
85
86
|
fields: [
|
|
86
87
|
{
|
|
87
88
|
name: 'slug',
|
|
88
89
|
type: 'text',
|
|
89
90
|
required: true,
|
|
90
|
-
}
|
|
91
|
-
]
|
|
91
|
+
},
|
|
92
|
+
],
|
|
92
93
|
admin: {
|
|
93
94
|
preview: (doc, { locale }) => {
|
|
94
95
|
if (doc?.slug) {
|
|
95
|
-
return `https://bigbird.com/preview/posts/${doc.slug}?locale=${locale}
|
|
96
|
+
return `https://bigbird.com/preview/posts/${doc.slug}?locale=${locale}`;
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
return null;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
};
|
|
102
103
|
```
|
|
103
104
|
|
|
104
105
|
### Access control
|
|
@@ -22,6 +22,7 @@ As with Collection configs, it's often best practice to write your Globals in se
|
|
|
22
22
|
| **`hooks`** | Entry points to "tie in" to collection actions at specific points. [More](/docs/hooks/overview#global-hooks) |
|
|
23
23
|
| **`access`** | Provide access control functions to define exactly who should be able to do what with this Global. [More](/docs/access-control/overview/#globals) |
|
|
24
24
|
| **`versions`** | Set to true to enable default options, or configure with object properties. [More](/docs/versions/overview#globals-config)|
|
|
25
|
+
| **`endpoints`** | Add custom routes to the REST API. [More](/docs/rest-api#custom-endpoints)|
|
|
25
26
|
|
|
26
27
|
*\* An asterisk denotes that a property is required.*
|
|
27
28
|
|