@webiny/api-aco 5.38.4-beta.0 → 5.38.5-beta.0
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/index.d.ts +1 -1
- package/index.js +1 -2
- package/index.js.map +1 -1
- package/package.json +25 -25
- package/utils/decorators/CmsEntriesCrudDecorators.js +19 -62
- package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
- package/utils/decorators/createFolderType.d.ts +2 -0
- package/utils/decorators/createFolderType.js +18 -0
- package/utils/decorators/createFolderType.js.map +1 -0
- package/utils/decorators/filterEntriesByFolderFactory.d.ts +6 -0
- package/utils/decorators/filterEntriesByFolderFactory.js +38 -0
- package/utils/decorators/filterEntriesByFolderFactory.js.map +1 -0
- package/utils/decorators/isPageModel.d.ts +5 -0
- package/utils/decorators/isPageModel.js +20 -0
- package/utils/decorators/isPageModel.js.map +1 -0
- package/utils/decorators/where.d.ts +2 -1
- package/utils/decorators/where.js +14 -6
- package/utils/decorators/where.js.map +1 -1
- package/fields/index.d.ts +0 -2
- package/fields/index.js +0 -14
- package/fields/index.js.map +0 -1
- package/fields/location.d.ts +0 -2
- package/fields/location.js +0 -46
- package/fields/location.js.map +0 -1
package/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export * from "./plugins";
|
|
|
6
6
|
export interface CreateAcoParams {
|
|
7
7
|
useFolderLevelPermissions?: boolean;
|
|
8
8
|
}
|
|
9
|
-
export declare const createAco: (params?: CreateAcoParams) => (import("@webiny/api
|
|
9
|
+
export declare const createAco: (params?: CreateAcoParams) => (import("@webiny/api").ContextPlugin<import("./types").AcoContext> | import("@webiny/handler-graphql").GraphQLSchemaPlugin<import("./types").AcoContext>)[];
|
package/index.js
CHANGED
|
@@ -30,7 +30,6 @@ Object.defineProperty(exports, "SEARCH_RECORD_MODEL_ID", {
|
|
|
30
30
|
exports.createAco = void 0;
|
|
31
31
|
var _createAcoContext = require("./createAcoContext");
|
|
32
32
|
var _createAcoGraphQL = require("./createAcoGraphQL");
|
|
33
|
-
var _fields = require("./fields");
|
|
34
33
|
var _record = require("./record/record.model");
|
|
35
34
|
var _folder = require("./folder/folder.model");
|
|
36
35
|
var _filter = require("./filter/filter.model");
|
|
@@ -59,7 +58,7 @@ Object.keys(_plugins).forEach(function (key) {
|
|
|
59
58
|
});
|
|
60
59
|
});
|
|
61
60
|
const createAco = (params = {}) => {
|
|
62
|
-
return [
|
|
61
|
+
return [(0, _createAcoContext.createAcoContext)(params), ...(0, _createAcoGraphQL.createAcoGraphQL)()];
|
|
63
62
|
};
|
|
64
63
|
exports.createAco = createAco;
|
|
65
64
|
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_createAcoContext","require","_createAcoGraphQL","
|
|
1
|
+
{"version":3,"names":["_createAcoContext","require","_createAcoGraphQL","_record","_folder","_filter","_apps","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_plugins","createAco","params","createAcoContext","createAcoGraphQL"],"sources":["index.ts"],"sourcesContent":["import { createAcoContext } from \"~/createAcoContext\";\nimport { createAcoGraphQL } from \"~/createAcoGraphQL\";\n\nexport { SEARCH_RECORD_MODEL_ID } from \"./record/record.model\";\nexport { FOLDER_MODEL_ID } from \"./folder/folder.model\";\nexport { FILTER_MODEL_ID } from \"./filter/filter.model\";\nexport * from \"./apps\";\nexport * from \"./plugins\";\n\nexport interface CreateAcoParams {\n useFolderLevelPermissions?: boolean;\n}\n\nexport const createAco = (params: CreateAcoParams = {}) => {\n return [createAcoContext(params), ...createAcoGraphQL()];\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAAAM,MAAA,CAAAC,IAAA,CAAAF,KAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,QAAA,GAAAlB,OAAA;AAAAM,MAAA,CAAAC,IAAA,CAAAW,QAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,QAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,QAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAMO,MAAMU,SAAS,GAAGA,CAACC,MAAuB,GAAG,CAAC,CAAC,KAAK;EACvD,OAAO,CAAC,IAAAC,kCAAgB,EAACD,MAAM,CAAC,EAAE,GAAG,IAAAE,kCAAgB,EAAC,CAAC,CAAC;AAC5D,CAAC;AAACR,OAAA,CAAAK,SAAA,GAAAA,SAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-aco",
|
|
3
|
-
"version": "5.38.
|
|
3
|
+
"version": "5.38.5-beta.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aco:base"
|
|
@@ -23,18 +23,18 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@ungap/structured-clone": "1.2.0",
|
|
26
|
-
"@webiny/api": "5.38.
|
|
27
|
-
"@webiny/api-authentication": "5.38.
|
|
28
|
-
"@webiny/api-headless-cms": "5.38.
|
|
29
|
-
"@webiny/api-i18n": "5.38.
|
|
30
|
-
"@webiny/api-security": "5.38.
|
|
31
|
-
"@webiny/api-tenancy": "5.38.
|
|
32
|
-
"@webiny/error": "5.38.
|
|
33
|
-
"@webiny/handler": "5.38.
|
|
34
|
-
"@webiny/handler-graphql": "5.38.
|
|
35
|
-
"@webiny/pubsub": "5.38.
|
|
36
|
-
"@webiny/utils": "5.38.
|
|
37
|
-
"@webiny/validation": "5.38.
|
|
26
|
+
"@webiny/api": "5.38.5-beta.0",
|
|
27
|
+
"@webiny/api-authentication": "5.38.5-beta.0",
|
|
28
|
+
"@webiny/api-headless-cms": "5.38.5-beta.0",
|
|
29
|
+
"@webiny/api-i18n": "5.38.5-beta.0",
|
|
30
|
+
"@webiny/api-security": "5.38.5-beta.0",
|
|
31
|
+
"@webiny/api-tenancy": "5.38.5-beta.0",
|
|
32
|
+
"@webiny/error": "5.38.5-beta.0",
|
|
33
|
+
"@webiny/handler": "5.38.5-beta.0",
|
|
34
|
+
"@webiny/handler-graphql": "5.38.5-beta.0",
|
|
35
|
+
"@webiny/pubsub": "5.38.5-beta.0",
|
|
36
|
+
"@webiny/utils": "5.38.5-beta.0",
|
|
37
|
+
"@webiny/validation": "5.38.5-beta.0",
|
|
38
38
|
"lodash": "4.17.21"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
@@ -44,22 +44,22 @@
|
|
|
44
44
|
"@babel/preset-typescript": "7.22.5",
|
|
45
45
|
"@babel/runtime": "7.22.6",
|
|
46
46
|
"@types/ungap__structured-clone": "0.3.0",
|
|
47
|
-
"@webiny/api-admin-users": "5.38.
|
|
48
|
-
"@webiny/api-file-manager": "5.38.
|
|
49
|
-
"@webiny/api-i18n-ddb": "5.38.
|
|
50
|
-
"@webiny/api-security-so-ddb": "5.38.
|
|
51
|
-
"@webiny/api-tenancy-so-ddb": "5.38.
|
|
52
|
-
"@webiny/api-wcp": "5.38.
|
|
53
|
-
"@webiny/cli": "5.38.
|
|
54
|
-
"@webiny/handler-aws": "5.38.
|
|
55
|
-
"@webiny/plugins": "5.38.
|
|
56
|
-
"@webiny/project-utils": "5.38.
|
|
57
|
-
"@webiny/wcp": "5.38.
|
|
47
|
+
"@webiny/api-admin-users": "5.38.5-beta.0",
|
|
48
|
+
"@webiny/api-file-manager": "5.38.5-beta.0",
|
|
49
|
+
"@webiny/api-i18n-ddb": "5.38.5-beta.0",
|
|
50
|
+
"@webiny/api-security-so-ddb": "5.38.5-beta.0",
|
|
51
|
+
"@webiny/api-tenancy-so-ddb": "5.38.5-beta.0",
|
|
52
|
+
"@webiny/api-wcp": "5.38.5-beta.0",
|
|
53
|
+
"@webiny/cli": "5.38.5-beta.0",
|
|
54
|
+
"@webiny/handler-aws": "5.38.5-beta.0",
|
|
55
|
+
"@webiny/plugins": "5.38.5-beta.0",
|
|
56
|
+
"@webiny/project-utils": "5.38.5-beta.0",
|
|
57
|
+
"@webiny/wcp": "5.38.5-beta.0",
|
|
58
58
|
"graphql": "15.8.0",
|
|
59
59
|
"prettier": "2.8.8",
|
|
60
60
|
"rimraf": "3.0.2",
|
|
61
61
|
"ttypescript": "1.5.15",
|
|
62
62
|
"typescript": "4.7.4"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "79aa2d7ceea9c64f474d88251a100d0c89eb3cad"
|
|
65
65
|
}
|
|
@@ -7,54 +7,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.CmsEntriesCrudDecorators = void 0;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
-
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
11
10
|
var _where = require("./where");
|
|
12
11
|
var _constants = require("./constants");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*/
|
|
16
|
-
const isPageModel = model => {
|
|
17
|
-
if (model.modelId === "pbPage") {
|
|
18
|
-
return true;
|
|
19
|
-
} else if (model.modelId === "acoSearchRecord-pbpage") {
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
return false;
|
|
23
|
-
};
|
|
24
|
-
const createFolderType = model => {
|
|
25
|
-
if (model.modelId === "fmFile") {
|
|
26
|
-
return "FmFile";
|
|
27
|
-
} else if (isPageModel(model)) {
|
|
28
|
-
return "PbPage";
|
|
29
|
-
}
|
|
30
|
-
return `cms:${model.modelId}`;
|
|
31
|
-
};
|
|
32
|
-
const filterEntriesByFolderFactory = (context, permissions) => {
|
|
33
|
-
return async (model, entries) => {
|
|
34
|
-
const [folders] = await context.aco.folder.listAll({
|
|
35
|
-
where: {
|
|
36
|
-
type: createFolderType(model)
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
const results = await Promise.all(entries.map(async entry => {
|
|
40
|
-
var _entry$location;
|
|
41
|
-
const folderId = (_entry$location = entry.location) === null || _entry$location === void 0 ? void 0 : _entry$location.folderId;
|
|
42
|
-
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
43
|
-
return entry;
|
|
44
|
-
}
|
|
45
|
-
const folder = folders.find(folder => folder.id === folderId);
|
|
46
|
-
if (!folder) {
|
|
47
|
-
throw new _handlerGraphql.NotFoundError(`Folder "${folderId}" not found.`);
|
|
48
|
-
}
|
|
49
|
-
const result = await permissions.canAccessFolderContent({
|
|
50
|
-
folder,
|
|
51
|
-
rwd: "r"
|
|
52
|
-
});
|
|
53
|
-
return result ? entry : null;
|
|
54
|
-
}));
|
|
55
|
-
return results.filter(entry => !!entry);
|
|
56
|
-
};
|
|
57
|
-
};
|
|
12
|
+
var _filterEntriesByFolderFactory = require("./filterEntriesByFolderFactory");
|
|
13
|
+
var _createFolderType = require("./createFolderType");
|
|
58
14
|
class CmsEntriesCrudDecorators {
|
|
59
15
|
constructor({
|
|
60
16
|
context
|
|
@@ -65,12 +21,13 @@ class CmsEntriesCrudDecorators {
|
|
|
65
21
|
decorate() {
|
|
66
22
|
const context = this.context;
|
|
67
23
|
const folderLevelPermissions = context.aco.folderLevelPermissions;
|
|
68
|
-
const filterEntriesByFolder = filterEntriesByFolderFactory(context, folderLevelPermissions);
|
|
24
|
+
const filterEntriesByFolder = (0, _filterEntriesByFolderFactory.filterEntriesByFolderFactory)(context, folderLevelPermissions);
|
|
69
25
|
const originalCmsListEntries = context.cms.listEntries.bind(context.cms);
|
|
70
26
|
context.cms.listEntries = async (model, params) => {
|
|
71
|
-
const folderType = createFolderType(model);
|
|
27
|
+
const folderType = (0, _createFolderType.createFolderType)(model);
|
|
72
28
|
const folders = await folderLevelPermissions.listAllFoldersWithPermissions(folderType);
|
|
73
29
|
const where = (0, _where.createWhere)({
|
|
30
|
+
model,
|
|
74
31
|
where: params.where,
|
|
75
32
|
folders
|
|
76
33
|
});
|
|
@@ -80,9 +37,9 @@ class CmsEntriesCrudDecorators {
|
|
|
80
37
|
};
|
|
81
38
|
const originalCmsGetEntry = context.cms.getEntry.bind(context.cms);
|
|
82
39
|
context.cms.getEntry = async (model, params) => {
|
|
83
|
-
var _entry$
|
|
40
|
+
var _entry$location;
|
|
84
41
|
const entry = await originalCmsGetEntry(model, params);
|
|
85
|
-
const folderId = entry === null || entry === void 0 || (_entry$
|
|
42
|
+
const folderId = entry === null || entry === void 0 || (_entry$location = entry.location) === null || _entry$location === void 0 ? void 0 : _entry$location.folderId;
|
|
86
43
|
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
87
44
|
return entry;
|
|
88
45
|
}
|
|
@@ -95,9 +52,9 @@ class CmsEntriesCrudDecorators {
|
|
|
95
52
|
};
|
|
96
53
|
const originalCmsGetEntryById = context.cms.getEntryById.bind(context.cms);
|
|
97
54
|
context.cms.getEntryById = async (model, params) => {
|
|
98
|
-
var _entry$
|
|
55
|
+
var _entry$location2;
|
|
99
56
|
const entry = await originalCmsGetEntryById(model, params);
|
|
100
|
-
const folderId = entry === null || entry === void 0 || (_entry$
|
|
57
|
+
const folderId = entry === null || entry === void 0 || (_entry$location2 = entry.location) === null || _entry$location2 === void 0 ? void 0 : _entry$location2.folderId;
|
|
101
58
|
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
102
59
|
return entry;
|
|
103
60
|
}
|
|
@@ -134,11 +91,11 @@ class CmsEntriesCrudDecorators {
|
|
|
134
91
|
};
|
|
135
92
|
const originalCmsCreateFromEntry = context.cms.createEntryRevisionFrom.bind(context.cms);
|
|
136
93
|
context.cms.createEntryRevisionFrom = async (model, id, input, options) => {
|
|
137
|
-
var _entry$
|
|
94
|
+
var _entry$location3;
|
|
138
95
|
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
139
96
|
id
|
|
140
97
|
});
|
|
141
|
-
const folderId = entry === null || entry === void 0 || (_entry$
|
|
98
|
+
const folderId = entry === null || entry === void 0 || (_entry$location3 = entry.location) === null || _entry$location3 === void 0 ? void 0 : _entry$location3.folderId;
|
|
142
99
|
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
143
100
|
return originalCmsCreateFromEntry(model, id, input, options);
|
|
144
101
|
}
|
|
@@ -151,11 +108,11 @@ class CmsEntriesCrudDecorators {
|
|
|
151
108
|
};
|
|
152
109
|
const originalCmsUpdateEntry = context.cms.updateEntry.bind(context.cms);
|
|
153
110
|
context.cms.updateEntry = async (model, id, input, meta, options) => {
|
|
154
|
-
var _entry$
|
|
111
|
+
var _entry$location4;
|
|
155
112
|
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
156
113
|
id
|
|
157
114
|
});
|
|
158
|
-
const folderId = entry === null || entry === void 0 || (_entry$
|
|
115
|
+
const folderId = entry === null || entry === void 0 || (_entry$location4 = entry.location) === null || _entry$location4 === void 0 ? void 0 : _entry$location4.folderId;
|
|
159
116
|
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
160
117
|
return originalCmsUpdateEntry(model, id, input, meta, options);
|
|
161
118
|
}
|
|
@@ -168,11 +125,11 @@ class CmsEntriesCrudDecorators {
|
|
|
168
125
|
};
|
|
169
126
|
const originalCmsDeleteEntry = context.cms.deleteEntry.bind(context.cms);
|
|
170
127
|
context.cms.deleteEntry = async (model, id, options) => {
|
|
171
|
-
var _entry$
|
|
128
|
+
var _entry$location5;
|
|
172
129
|
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
173
130
|
id
|
|
174
131
|
});
|
|
175
|
-
const folderId = entry === null || entry === void 0 || (_entry$
|
|
132
|
+
const folderId = entry === null || entry === void 0 || (_entry$location5 = entry.location) === null || _entry$location5 === void 0 ? void 0 : _entry$location5.folderId;
|
|
176
133
|
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
177
134
|
return originalCmsDeleteEntry(model, id, options);
|
|
178
135
|
}
|
|
@@ -185,11 +142,11 @@ class CmsEntriesCrudDecorators {
|
|
|
185
142
|
};
|
|
186
143
|
const originalCmsDeleteEntryRevision = context.cms.deleteEntryRevision.bind(context.cms);
|
|
187
144
|
context.cms.deleteEntryRevision = async (model, id) => {
|
|
188
|
-
var _entry$
|
|
145
|
+
var _entry$location6;
|
|
189
146
|
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
190
147
|
id
|
|
191
148
|
});
|
|
192
|
-
const folderId = entry === null || entry === void 0 || (_entry$
|
|
149
|
+
const folderId = entry === null || entry === void 0 || (_entry$location6 = entry.location) === null || _entry$location6 === void 0 ? void 0 : _entry$location6.folderId;
|
|
193
150
|
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
194
151
|
return originalCmsDeleteEntryRevision(model, id);
|
|
195
152
|
}
|
|
@@ -202,14 +159,14 @@ class CmsEntriesCrudDecorators {
|
|
|
202
159
|
};
|
|
203
160
|
const originalCmsMoveEntry = context.cms.moveEntry.bind(context.cms);
|
|
204
161
|
context.cms.moveEntry = async (model, id, targetFolderId) => {
|
|
205
|
-
var _entry$
|
|
162
|
+
var _entry$location7;
|
|
206
163
|
/**
|
|
207
164
|
* First we need to check if user has access to the entries existing folder.
|
|
208
165
|
*/
|
|
209
166
|
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
210
167
|
id
|
|
211
168
|
});
|
|
212
|
-
const folderId = (entry === null || entry === void 0 || (_entry$
|
|
169
|
+
const folderId = (entry === null || entry === void 0 || (_entry$location7 = entry.location) === null || _entry$location7 === void 0 ? void 0 : _entry$location7.folderId) || _constants.ROOT_FOLDER;
|
|
213
170
|
/**
|
|
214
171
|
* If the entry is in the same folder we are trying to move it to, just continue.
|
|
215
172
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_handlerGraphql","require","_where","_constants","isPageModel","model","modelId","createFolderType","filterEntriesByFolderFactory","context","permissions","entries","folders","aco","folder","listAll","where","type","results","Promise","all","map","entry","_entry$location","folderId","location","ROOT_FOLDER","find","id","NotFoundError","result","canAccessFolderContent","rwd","filter","CmsEntriesCrudDecorators","constructor","_defineProperty2","default","decorate","folderLevelPermissions","filterEntriesByFolder","originalCmsListEntries","cms","listEntries","bind","params","folderType","listAllFoldersWithPermissions","createWhere","_objectSpread2","originalCmsGetEntry","getEntry","_entry$location2","get","ensureCanAccessFolderContent","originalCmsGetEntryById","getEntryById","_entry$location3","originalGetLatestEntriesByIds","getLatestEntriesByIds","ids","originalGetPublishedEntriesByIds","getPublishedEntriesByIds","originalCmsCreateEntry","createEntry","options","_params$wbyAco_locati","_params$location","wbyAco_location","originalCmsCreateFromEntry","createEntryRevisionFrom","input","_entry$location4","storageOperations","getRevisionById","originalCmsUpdateEntry","updateEntry","meta","_entry$location5","originalCmsDeleteEntry","deleteEntry","_entry$location6","originalCmsDeleteEntryRevision","deleteEntryRevision","_entry$location7","originalCmsMoveEntry","moveEntry","targetFolderId","_entry$location8","exports"],"sources":["CmsEntriesCrudDecorators.ts"],"sourcesContent":["import { AcoContext } from \"~/types\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { FolderLevelPermissions } from \"~/utils/FolderLevelPermissions\";\nimport { createWhere } from \"./where\";\nimport { ROOT_FOLDER } from \"./constants\";\n\ntype Context = Pick<AcoContext, \"aco\" | \"cms\">;\n/**\n * Keep this until we figure out how to fetch the folders.\n */\nconst isPageModel = (model: CmsModel): boolean => {\n if (model.modelId === \"pbPage\") {\n return true;\n } else if (model.modelId === \"acoSearchRecord-pbpage\") {\n return true;\n }\n return false;\n};\n\nconst createFolderType = (model: CmsModel): \"FmFile\" | \"PbPage\" | `cms:${string}` => {\n if (model.modelId === \"fmFile\") {\n return \"FmFile\";\n } else if (isPageModel(model)) {\n return \"PbPage\";\n }\n return `cms:${model.modelId}`;\n};\n\nconst filterEntriesByFolderFactory = (context: Context, permissions: FolderLevelPermissions) => {\n return async (model: CmsModel, entries: CmsEntry[]) => {\n const [folders] = await context.aco.folder.listAll({\n where: {\n type: createFolderType(model)\n }\n });\n\n const results = await Promise.all(\n entries.map(async entry => {\n const folderId = entry.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const folder = folders.find(folder => folder.id === folderId);\n if (!folder) {\n throw new NotFoundError(`Folder \"${folderId}\" not found.`);\n }\n const result = await permissions.canAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n return result ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry => !!entry);\n };\n};\n\ninterface EntryManagerCrudDecoratorsParams {\n context: Context;\n}\n\nexport class CmsEntriesCrudDecorators {\n private readonly context: Context;\n\n public constructor({ context }: EntryManagerCrudDecoratorsParams) {\n this.context = context;\n }\n\n public decorate() {\n const context = this.context;\n const folderLevelPermissions = context.aco.folderLevelPermissions;\n\n const filterEntriesByFolder = filterEntriesByFolderFactory(context, folderLevelPermissions);\n\n const originalCmsListEntries = context.cms.listEntries.bind(context.cms);\n context.cms.listEntries = async (model, params) => {\n const folderType = createFolderType(model);\n const folders = await folderLevelPermissions.listAllFoldersWithPermissions(folderType);\n\n const where = createWhere({\n where: params.where,\n folders\n });\n return originalCmsListEntries(model, {\n ...params,\n where\n });\n };\n\n const originalCmsGetEntry = context.cms.getEntry.bind(context.cms);\n context.cms.getEntry = async (model, params) => {\n const entry = await originalCmsGetEntry(model, params);\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n\n return entry;\n };\n\n const originalCmsGetEntryById = context.cms.getEntryById.bind(context.cms);\n context.cms.getEntryById = async (model, params) => {\n const entry = await originalCmsGetEntryById(model, params);\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n return entry;\n };\n\n const originalGetLatestEntriesByIds = context.cms.getLatestEntriesByIds.bind(context.cms);\n context.cms.getLatestEntriesByIds = async (model, ids) => {\n const entries = await originalGetLatestEntriesByIds(model, ids);\n\n return filterEntriesByFolder(model, entries);\n };\n\n const originalGetPublishedEntriesByIds = context.cms.getPublishedEntriesByIds.bind(\n context.cms\n );\n context.cms.getPublishedEntriesByIds = async (model, ids) => {\n const entries = await originalGetPublishedEntriesByIds(model, ids);\n return filterEntriesByFolder(model, entries);\n };\n\n const originalCmsCreateEntry = context.cms.createEntry.bind(context.cms);\n context.cms.createEntry = async (model, params, options) => {\n const folderId = params.wbyAco_location?.folderId || params.location?.folderId;\n\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsCreateEntry(model, params, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsCreateEntry(model, params, options);\n };\n\n const originalCmsCreateFromEntry = context.cms.createEntryRevisionFrom.bind(context.cms);\n context.cms.createEntryRevisionFrom = async (model, id, input, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsCreateFromEntry(model, id, input, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsCreateFromEntry(model, id, input, options);\n };\n\n const originalCmsUpdateEntry = context.cms.updateEntry.bind(context.cms);\n context.cms.updateEntry = async (model, id, input, meta, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsUpdateEntry(model, id, input, meta, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsUpdateEntry(model, id, input, meta, options);\n };\n\n const originalCmsDeleteEntry = context.cms.deleteEntry.bind(context.cms);\n context.cms.deleteEntry = async (model, id, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsDeleteEntry(model, id, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"d\"\n });\n\n return originalCmsDeleteEntry(model, id, options);\n };\n\n const originalCmsDeleteEntryRevision = context.cms.deleteEntryRevision.bind(context.cms);\n context.cms.deleteEntryRevision = async (model, id) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsDeleteEntryRevision(model, id);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"d\"\n });\n\n return originalCmsDeleteEntryRevision(model, id);\n };\n\n const originalCmsMoveEntry = context.cms.moveEntry.bind(context.cms);\n context.cms.moveEntry = async (model, id, targetFolderId) => {\n /**\n * First we need to check if user has access to the entries existing folder.\n */\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n const folderId = entry?.location?.folderId || ROOT_FOLDER;\n /**\n * If the entry is in the same folder we are trying to move it to, just continue.\n */\n if (folderId === targetFolderId) {\n return originalCmsMoveEntry(model, id, targetFolderId);\n } else if (folderId !== ROOT_FOLDER) {\n /**\n * If entry current folder is not a root, check for access\n */\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n }\n /**\n * If target folder is not a ROOT_FOLDER, check for access.\n */\n if (targetFolderId !== ROOT_FOLDER) {\n const folder = await context.aco.folder.get(targetFolderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n }\n\n return originalCmsMoveEntry(model, id, targetFolderId);\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_where","require","_constants","_filterEntriesByFolderFactory","_createFolderType","CmsEntriesCrudDecorators","constructor","context","_defineProperty2","default","decorate","folderLevelPermissions","aco","filterEntriesByFolder","filterEntriesByFolderFactory","originalCmsListEntries","cms","listEntries","bind","model","params","folderType","createFolderType","folders","listAllFoldersWithPermissions","where","createWhere","_objectSpread2","originalCmsGetEntry","getEntry","_entry$location","entry","folderId","location","ROOT_FOLDER","folder","get","ensureCanAccessFolderContent","rwd","originalCmsGetEntryById","getEntryById","_entry$location2","originalGetLatestEntriesByIds","getLatestEntriesByIds","ids","entries","originalGetPublishedEntriesByIds","getPublishedEntriesByIds","originalCmsCreateEntry","createEntry","options","_params$wbyAco_locati","_params$location","wbyAco_location","originalCmsCreateFromEntry","createEntryRevisionFrom","id","input","_entry$location3","storageOperations","getRevisionById","originalCmsUpdateEntry","updateEntry","meta","_entry$location4","originalCmsDeleteEntry","deleteEntry","_entry$location5","originalCmsDeleteEntryRevision","deleteEntryRevision","_entry$location6","originalCmsMoveEntry","moveEntry","targetFolderId","_entry$location7","exports"],"sources":["CmsEntriesCrudDecorators.ts"],"sourcesContent":["import { AcoContext } from \"~/types\";\nimport { createWhere } from \"./where\";\nimport { ROOT_FOLDER } from \"./constants\";\nimport { filterEntriesByFolderFactory } from \"./filterEntriesByFolderFactory\";\nimport { createFolderType } from \"./createFolderType\";\n\ntype Context = Pick<AcoContext, \"aco\" | \"cms\">;\n\ninterface EntryManagerCrudDecoratorsParams {\n context: Context;\n}\n\nexport class CmsEntriesCrudDecorators {\n private readonly context: Context;\n\n public constructor({ context }: EntryManagerCrudDecoratorsParams) {\n this.context = context;\n }\n\n public decorate() {\n const context = this.context;\n const folderLevelPermissions = context.aco.folderLevelPermissions;\n\n const filterEntriesByFolder = filterEntriesByFolderFactory(context, folderLevelPermissions);\n\n const originalCmsListEntries = context.cms.listEntries.bind(context.cms);\n context.cms.listEntries = async (model, params) => {\n const folderType = createFolderType(model);\n const folders = await folderLevelPermissions.listAllFoldersWithPermissions(folderType);\n\n const where = createWhere({\n model,\n where: params.where,\n folders\n });\n return originalCmsListEntries(model, {\n ...params,\n where\n });\n };\n\n const originalCmsGetEntry = context.cms.getEntry.bind(context.cms);\n context.cms.getEntry = async (model, params) => {\n const entry = await originalCmsGetEntry(model, params);\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n\n return entry;\n };\n\n const originalCmsGetEntryById = context.cms.getEntryById.bind(context.cms);\n context.cms.getEntryById = async (model, params) => {\n const entry = await originalCmsGetEntryById(model, params);\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n return entry;\n };\n\n const originalGetLatestEntriesByIds = context.cms.getLatestEntriesByIds.bind(context.cms);\n context.cms.getLatestEntriesByIds = async (model, ids) => {\n const entries = await originalGetLatestEntriesByIds(model, ids);\n\n return filterEntriesByFolder(model, entries);\n };\n\n const originalGetPublishedEntriesByIds = context.cms.getPublishedEntriesByIds.bind(\n context.cms\n );\n context.cms.getPublishedEntriesByIds = async (model, ids) => {\n const entries = await originalGetPublishedEntriesByIds(model, ids);\n return filterEntriesByFolder(model, entries);\n };\n\n const originalCmsCreateEntry = context.cms.createEntry.bind(context.cms);\n context.cms.createEntry = async (model, params, options) => {\n const folderId = params.wbyAco_location?.folderId || params.location?.folderId;\n\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsCreateEntry(model, params, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsCreateEntry(model, params, options);\n };\n\n const originalCmsCreateFromEntry = context.cms.createEntryRevisionFrom.bind(context.cms);\n context.cms.createEntryRevisionFrom = async (model, id, input, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsCreateFromEntry(model, id, input, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsCreateFromEntry(model, id, input, options);\n };\n\n const originalCmsUpdateEntry = context.cms.updateEntry.bind(context.cms);\n context.cms.updateEntry = async (model, id, input, meta, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsUpdateEntry(model, id, input, meta, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsUpdateEntry(model, id, input, meta, options);\n };\n\n const originalCmsDeleteEntry = context.cms.deleteEntry.bind(context.cms);\n context.cms.deleteEntry = async (model, id, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsDeleteEntry(model, id, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"d\"\n });\n\n return originalCmsDeleteEntry(model, id, options);\n };\n\n const originalCmsDeleteEntryRevision = context.cms.deleteEntryRevision.bind(context.cms);\n context.cms.deleteEntryRevision = async (model, id) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsDeleteEntryRevision(model, id);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"d\"\n });\n\n return originalCmsDeleteEntryRevision(model, id);\n };\n\n const originalCmsMoveEntry = context.cms.moveEntry.bind(context.cms);\n context.cms.moveEntry = async (model, id, targetFolderId) => {\n /**\n * First we need to check if user has access to the entries existing folder.\n */\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId || ROOT_FOLDER;\n /**\n * If the entry is in the same folder we are trying to move it to, just continue.\n */\n if (folderId === targetFolderId) {\n return originalCmsMoveEntry(model, id, targetFolderId);\n } else if (folderId !== ROOT_FOLDER) {\n /**\n * If entry current folder is not a root, check for access\n */\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n }\n /**\n * If target folder is not a ROOT_FOLDER, check for access.\n */\n if (targetFolderId !== ROOT_FOLDER) {\n const folder = await context.aco.folder.get(targetFolderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n }\n\n return originalCmsMoveEntry(model, id, targetFolderId);\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFolderType = void 0;
|
|
7
|
+
var _isPageModel = require("./isPageModel");
|
|
8
|
+
const createFolderType = model => {
|
|
9
|
+
if (model.modelId === "fmFile") {
|
|
10
|
+
return "FmFile";
|
|
11
|
+
} else if ((0, _isPageModel.isPageModel)(model)) {
|
|
12
|
+
return "PbPage";
|
|
13
|
+
}
|
|
14
|
+
return `cms:${model.modelId}`;
|
|
15
|
+
};
|
|
16
|
+
exports.createFolderType = createFolderType;
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=createFolderType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_isPageModel","require","createFolderType","model","modelId","isPageModel","exports"],"sources":["createFolderType.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { isPageModel } from \"./isPageModel\";\n\nexport const createFolderType = (model: CmsModel): \"FmFile\" | \"PbPage\" | `cms:${string}` => {\n if (model.modelId === \"fmFile\") {\n return \"FmFile\";\n } else if (isPageModel(model)) {\n return \"PbPage\";\n }\n return `cms:${model.modelId}`;\n};\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAIC,KAAe,IAA4C;EACxF,IAAIA,KAAK,CAACC,OAAO,KAAK,QAAQ,EAAE;IAC5B,OAAO,QAAQ;EACnB,CAAC,MAAM,IAAI,IAAAC,wBAAW,EAACF,KAAK,CAAC,EAAE;IAC3B,OAAO,QAAQ;EACnB;EACA,OAAQ,OAAMA,KAAK,CAACC,OAAQ,EAAC;AACjC,CAAC;AAACE,OAAA,CAAAJ,gBAAA,GAAAA,gBAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AcoContext } from "../../types";
|
|
2
|
+
import { CmsEntry, CmsModel } from "@webiny/api-headless-cms/types";
|
|
3
|
+
import { FolderLevelPermissions } from "../FolderLevelPermissions";
|
|
4
|
+
declare type Context = Pick<AcoContext, "aco" | "cms">;
|
|
5
|
+
export declare const filterEntriesByFolderFactory: (context: Context, permissions: FolderLevelPermissions) => (model: CmsModel, entries: CmsEntry[]) => Promise<CmsEntry<import("@webiny/api-headless-cms/types").CmsEntryValues>[]>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.filterEntriesByFolderFactory = void 0;
|
|
7
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
+
var _constants = require("./constants");
|
|
9
|
+
var _createFolderType = require("./createFolderType");
|
|
10
|
+
const filterEntriesByFolderFactory = (context, permissions) => {
|
|
11
|
+
return async (model, entries) => {
|
|
12
|
+
const [folders] = await context.aco.folder.listAll({
|
|
13
|
+
where: {
|
|
14
|
+
type: (0, _createFolderType.createFolderType)(model)
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const results = await Promise.all(entries.map(async entry => {
|
|
18
|
+
var _entry$location;
|
|
19
|
+
const folderId = (_entry$location = entry.location) === null || _entry$location === void 0 ? void 0 : _entry$location.folderId;
|
|
20
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
21
|
+
return entry;
|
|
22
|
+
}
|
|
23
|
+
const folder = folders.find(folder => folder.id === folderId);
|
|
24
|
+
if (!folder) {
|
|
25
|
+
throw new _handlerGraphql.NotFoundError(`Folder "${folderId}" not found.`);
|
|
26
|
+
}
|
|
27
|
+
const result = await permissions.canAccessFolderContent({
|
|
28
|
+
folder,
|
|
29
|
+
rwd: "r"
|
|
30
|
+
});
|
|
31
|
+
return result ? entry : null;
|
|
32
|
+
}));
|
|
33
|
+
return results.filter(entry => !!entry);
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
exports.filterEntriesByFolderFactory = filterEntriesByFolderFactory;
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=filterEntriesByFolderFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","_constants","_createFolderType","filterEntriesByFolderFactory","context","permissions","model","entries","folders","aco","folder","listAll","where","type","createFolderType","results","Promise","all","map","entry","_entry$location","folderId","location","ROOT_FOLDER","find","id","NotFoundError","result","canAccessFolderContent","rwd","filter","exports"],"sources":["filterEntriesByFolderFactory.ts"],"sourcesContent":["import { AcoContext } from \"~/types\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { FolderLevelPermissions } from \"~/utils/FolderLevelPermissions\";\nimport { ROOT_FOLDER } from \"./constants\";\n\ntype Context = Pick<AcoContext, \"aco\" | \"cms\">;\n\nimport { createFolderType } from \"./createFolderType\";\n\nexport const filterEntriesByFolderFactory = (\n context: Context,\n permissions: FolderLevelPermissions\n) => {\n return async (model: CmsModel, entries: CmsEntry[]) => {\n const [folders] = await context.aco.folder.listAll({\n where: {\n type: createFolderType(model)\n }\n });\n\n const results = await Promise.all(\n entries.map(async entry => {\n const folderId = entry.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const folder = folders.find(folder => folder.id === folderId);\n if (!folder) {\n throw new NotFoundError(`Folder \"${folderId}\" not found.`);\n }\n const result = await permissions.canAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n return result ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry => !!entry);\n };\n};\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAIA,IAAAE,iBAAA,GAAAF,OAAA;AAEO,MAAMG,4BAA4B,GAAGA,CACxCC,OAAgB,EAChBC,WAAmC,KAClC;EACD,OAAO,OAAOC,KAAe,EAAEC,OAAmB,KAAK;IACnD,MAAM,CAACC,OAAO,CAAC,GAAG,MAAMJ,OAAO,CAACK,GAAG,CAACC,MAAM,CAACC,OAAO,CAAC;MAC/CC,KAAK,EAAE;QACHC,IAAI,EAAE,IAAAC,kCAAgB,EAACR,KAAK;MAChC;IACJ,CAAC,CAAC;IAEF,MAAMS,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC7BV,OAAO,CAACW,GAAG,CAAC,MAAMC,KAAK,IAAI;MAAA,IAAAC,eAAA;MACvB,MAAMC,QAAQ,IAAAD,eAAA,GAAGD,KAAK,CAACG,QAAQ,cAAAF,eAAA,uBAAdA,eAAA,CAAgBC,QAAQ;MACzC,IAAI,CAACA,QAAQ,IAAIA,QAAQ,KAAKE,sBAAW,EAAE;QACvC,OAAOJ,KAAK;MAChB;MAEA,MAAMT,MAAM,GAAGF,OAAO,CAACgB,IAAI,CAACd,MAAM,IAAIA,MAAM,CAACe,EAAE,KAAKJ,QAAQ,CAAC;MAC7D,IAAI,CAACX,MAAM,EAAE;QACT,MAAM,IAAIgB,6BAAa,CAAE,WAAUL,QAAS,cAAa,CAAC;MAC9D;MACA,MAAMM,MAAM,GAAG,MAAMtB,WAAW,CAACuB,sBAAsB,CAAC;QACpDlB,MAAM;QACNmB,GAAG,EAAE;MACT,CAAC,CAAC;MACF,OAAOF,MAAM,GAAGR,KAAK,GAAG,IAAI;IAChC,CAAC,CACL,CAAC;IAED,OAAOJ,OAAO,CAACe,MAAM,CAAEX,KAAK,IAAwB,CAAC,CAACA,KAAK,CAAC;EAChE,CAAC;AACL,CAAC;AAACY,OAAA,CAAA5B,4BAAA,GAAAA,4BAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isPageModel = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Keep this until we figure out how to fetch the folders.
|
|
9
|
+
*/
|
|
10
|
+
const isPageModel = model => {
|
|
11
|
+
if (model.modelId === "pbPage") {
|
|
12
|
+
return true;
|
|
13
|
+
} else if (model.modelId === "acoSearchRecord-pbpage") {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
};
|
|
18
|
+
exports.isPageModel = isPageModel;
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=isPageModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isPageModel","model","modelId","exports"],"sources":["isPageModel.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\n\n/**\n * Keep this until we figure out how to fetch the folders.\n */\nexport const isPageModel = (model: CmsModel): boolean => {\n if (model.modelId === \"pbPage\") {\n return true;\n } else if (model.modelId === \"acoSearchRecord-pbpage\") {\n return true;\n }\n return false;\n};\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACO,MAAMA,WAAW,GAAIC,KAAe,IAAc;EACrD,IAAIA,KAAK,CAACC,OAAO,KAAK,QAAQ,EAAE;IAC5B,OAAO,IAAI;EACf,CAAC,MAAM,IAAID,KAAK,CAACC,OAAO,KAAK,wBAAwB,EAAE;IACnD,OAAO,IAAI;EACf;EACA,OAAO,KAAK;AAChB,CAAC;AAACC,OAAA,CAAAH,WAAA,GAAAA,WAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { CmsEntryListWhere } from "@webiny/api-headless-cms/types";
|
|
1
|
+
import { CmsEntryListWhere, CmsModel } from "@webiny/api-headless-cms/types";
|
|
2
2
|
import { Folder } from "../../folder/folder.types";
|
|
3
3
|
interface Params {
|
|
4
|
+
model: CmsModel;
|
|
4
5
|
where: CmsEntryListWhere | undefined;
|
|
5
6
|
folders: Folder[];
|
|
6
7
|
}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.createWhere = void 0;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
9
|
var _constants = require("./constants");
|
|
10
|
+
var _isPageModel = require("./isPageModel");
|
|
10
11
|
/**
|
|
11
12
|
* There are multiple cases that we need to handle:
|
|
12
13
|
* * existing location with no AND conditional
|
|
@@ -15,25 +16,32 @@ var _constants = require("./constants");
|
|
|
15
16
|
*/
|
|
16
17
|
const createWhere = params => {
|
|
17
18
|
const {
|
|
19
|
+
model,
|
|
18
20
|
where,
|
|
19
21
|
folders
|
|
20
22
|
} = params;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
|
|
24
|
+
// Once we migrate PB to HCMS, we can remove this check and always use `wbAco_location`.
|
|
25
|
+
const locationFieldName = (0, _isPageModel.isPageModel)(model) ? "location" : "wbyAco_location";
|
|
24
26
|
const whereLocation = {
|
|
25
|
-
|
|
27
|
+
[locationFieldName]: {
|
|
26
28
|
// At the moment, all users can access entries in the root folder.
|
|
27
29
|
// Root folder level permissions cannot be set yet.
|
|
28
30
|
folderId_in: [_constants.ROOT_FOLDER, ...folders.map(folder => folder.id)]
|
|
29
31
|
}
|
|
30
32
|
};
|
|
33
|
+
if (!where) {
|
|
34
|
+
// If no `where` condition is present, that means we're performing a query
|
|
35
|
+
// across all folders. Still, with FLP enabled, we need to filter out
|
|
36
|
+
// folders to which the user does not have access.
|
|
37
|
+
return whereLocation;
|
|
38
|
+
}
|
|
31
39
|
const whereAnd = where.AND;
|
|
32
|
-
if (where
|
|
40
|
+
if (where[locationFieldName] && !whereAnd) {
|
|
33
41
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
|
|
34
42
|
AND: [(0, _objectSpread2.default)({}, whereLocation)]
|
|
35
43
|
});
|
|
36
|
-
} else if (where
|
|
44
|
+
} else if (where[locationFieldName] && whereAnd) {
|
|
37
45
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
|
|
38
46
|
AND: [(0, _objectSpread2.default)({}, whereLocation), ...whereAnd]
|
|
39
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","createWhere","params","where","folders","
|
|
1
|
+
{"version":3,"names":["_constants","require","_isPageModel","createWhere","params","model","where","folders","locationFieldName","isPageModel","whereLocation","folderId_in","ROOT_FOLDER","map","folder","id","whereAnd","AND","_objectSpread2","default","exports"],"sources":["where.ts"],"sourcesContent":["import { CmsEntryListWhere, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { Folder } from \"~/folder/folder.types\";\nimport { ROOT_FOLDER } from \"./constants\";\nimport { isPageModel } from \"~/utils/decorators/isPageModel\";\n\ninterface Params {\n model: CmsModel;\n where: CmsEntryListWhere | undefined;\n folders: Folder[];\n}\n\n/**\n * There are multiple cases that we need to handle:\n * * existing location with no AND conditional\n * * existing location with AND conditional\n * * no existing location with no AND conditional + with AND conditional\n */\nexport const createWhere = (params: Params): CmsEntryListWhere | undefined => {\n const { model, where, folders } = params;\n\n // Once we migrate PB to HCMS, we can remove this check and always use `wbAco_location`.\n const locationFieldName = isPageModel(model) ? \"location\" : \"wbyAco_location\";\n\n const whereLocation = {\n [locationFieldName]: {\n // At the moment, all users can access entries in the root folder.\n // Root folder level permissions cannot be set yet.\n folderId_in: [ROOT_FOLDER, ...folders.map(folder => folder.id)]\n }\n };\n\n if (!where) {\n // If no `where` condition is present, that means we're performing a query\n // across all folders. Still, with FLP enabled, we need to filter out\n // folders to which the user does not have access.\n return whereLocation;\n }\n\n const whereAnd = where.AND;\n if (where[locationFieldName] && !whereAnd) {\n return {\n ...where,\n AND: [\n {\n ...whereLocation\n }\n ]\n };\n } else if (where[locationFieldName] && whereAnd) {\n return {\n ...where,\n AND: [\n {\n ...whereLocation\n },\n ...whereAnd\n ]\n };\n }\n\n return {\n ...where,\n ...whereLocation\n };\n};\n"],"mappings":";;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,WAAW,GAAIC,MAAc,IAAoC;EAC1E,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAGH,MAAM;;EAExC;EACA,MAAMI,iBAAiB,GAAG,IAAAC,wBAAW,EAACJ,KAAK,CAAC,GAAG,UAAU,GAAG,iBAAiB;EAE7E,MAAMK,aAAa,GAAG;IAClB,CAACF,iBAAiB,GAAG;MACjB;MACA;MACAG,WAAW,EAAE,CAACC,sBAAW,EAAE,GAAGL,OAAO,CAACM,GAAG,CAACC,MAAM,IAAIA,MAAM,CAACC,EAAE,CAAC;IAClE;EACJ,CAAC;EAED,IAAI,CAACT,KAAK,EAAE;IACR;IACA;IACA;IACA,OAAOI,aAAa;EACxB;EAEA,MAAMM,QAAQ,GAAGV,KAAK,CAACW,GAAG;EAC1B,IAAIX,KAAK,CAACE,iBAAiB,CAAC,IAAI,CAACQ,QAAQ,EAAE;IACvC,WAAAE,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOb,KAAK;MACRW,GAAG,EAAE,KAAAC,cAAA,CAAAC,OAAA,MAEMT,aAAa;IAEvB;EAET,CAAC,MAAM,IAAIJ,KAAK,CAACE,iBAAiB,CAAC,IAAIQ,QAAQ,EAAE;IAC7C,WAAAE,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOb,KAAK;MACRW,GAAG,EAAE,KAAAC,cAAA,CAAAC,OAAA,MAEMT,aAAa,GAEpB,GAAGM,QAAQ;IACd;EAET;EAEA,WAAAE,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOb,KAAK,GACLI,aAAa;AAExB,CAAC;AAACU,OAAA,CAAAjB,WAAA,GAAAA,WAAA"}
|
package/fields/index.d.ts
DELETED
package/fields/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createFields = void 0;
|
|
7
|
-
const createFields = () => {
|
|
8
|
-
return [
|
|
9
|
-
// createLocationField()
|
|
10
|
-
];
|
|
11
|
-
};
|
|
12
|
-
exports.createFields = createFields;
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/fields/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createFields","exports"],"sources":["index.ts"],"sourcesContent":["import { CmsModelFieldToGraphQLPlugin } from \"@webiny/api-headless-cms/types\";\n\nexport const createFields = (): CmsModelFieldToGraphQLPlugin[] => {\n return [\n // createLocationField()\n ];\n};\n"],"mappings":";;;;;;AAEO,MAAMA,YAAY,GAAGA,CAAA,KAAsC;EAC9D,OAAO;IACH;EAAA,CACH;AACL,CAAC;AAACC,OAAA,CAAAD,YAAA,GAAAA,YAAA"}
|
package/fields/location.d.ts
DELETED
package/fields/location.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createLocationField = void 0;
|
|
7
|
-
const createFilters = field => {
|
|
8
|
-
return [`${field.fieldId}: AcoLocationInput`, `${field.fieldId}_in: [AcoLocationInput!]`, `${field.fieldId}_not_in: [AcoLocationInput!]`].join("\n");
|
|
9
|
-
};
|
|
10
|
-
const createLocationField = () => {
|
|
11
|
-
return {
|
|
12
|
-
type: "cms-model-field-to-graphql",
|
|
13
|
-
name: "cms-model-field-to-graphql-location",
|
|
14
|
-
fieldType: "location",
|
|
15
|
-
isSortable: false,
|
|
16
|
-
isSearchable: true,
|
|
17
|
-
read: {
|
|
18
|
-
createGetFilters({
|
|
19
|
-
field
|
|
20
|
-
}) {
|
|
21
|
-
return createFilters(field);
|
|
22
|
-
},
|
|
23
|
-
createListFilters({
|
|
24
|
-
field
|
|
25
|
-
}) {
|
|
26
|
-
return createFilters(field);
|
|
27
|
-
},
|
|
28
|
-
createTypeField() {
|
|
29
|
-
return ``;
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
manage: {
|
|
33
|
-
createTypeField() {
|
|
34
|
-
return ``;
|
|
35
|
-
},
|
|
36
|
-
createInputField({
|
|
37
|
-
field
|
|
38
|
-
}) {
|
|
39
|
-
return `${field.fieldId}: AcoLocationInput`;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
exports.createLocationField = createLocationField;
|
|
45
|
-
|
|
46
|
-
//# sourceMappingURL=location.js.map
|
package/fields/location.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createFilters","field","fieldId","join","createLocationField","type","name","fieldType","isSortable","isSearchable","read","createGetFilters","createListFilters","createTypeField","manage","createInputField","exports"],"sources":["location.ts"],"sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"@webiny/api-headless-cms/types\";\n\nconst createFilters = (field: CmsModelField) => {\n return [\n `${field.fieldId}: AcoLocationInput`,\n `${field.fieldId}_in: [AcoLocationInput!]`,\n `${field.fieldId}_not_in: [AcoLocationInput!]`\n ].join(\"\\n\");\n};\nexport const createLocationField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n type: \"cms-model-field-to-graphql\",\n name: \"cms-model-field-to-graphql-location\",\n fieldType: \"location\",\n isSortable: false,\n isSearchable: true,\n read: {\n createGetFilters({ field }): string {\n return createFilters(field);\n },\n createListFilters({ field }): string {\n return createFilters(field);\n },\n createTypeField(): string {\n return ``;\n }\n },\n manage: {\n createTypeField(): string {\n return ``;\n },\n createInputField({ field }): string {\n return `${field.fieldId}: AcoLocationInput`;\n }\n }\n };\n};\n"],"mappings":";;;;;;AAEA,MAAMA,aAAa,GAAIC,KAAoB,IAAK;EAC5C,OAAO,CACF,GAAEA,KAAK,CAACC,OAAQ,oBAAmB,EACnC,GAAED,KAAK,CAACC,OAAQ,0BAAyB,EACzC,GAAED,KAAK,CAACC,OAAQ,8BAA6B,CACjD,CAACC,IAAI,CAAC,IAAI,CAAC;AAChB,CAAC;AACM,MAAMC,mBAAmB,GAAGA,CAAA,KAAoC;EACnE,OAAO;IACHC,IAAI,EAAE,4BAA4B;IAClCC,IAAI,EAAE,qCAAqC;IAC3CC,SAAS,EAAE,UAAU;IACrBC,UAAU,EAAE,KAAK;IACjBC,YAAY,EAAE,IAAI;IAClBC,IAAI,EAAE;MACFC,gBAAgBA,CAAC;QAAEV;MAAM,CAAC,EAAU;QAChC,OAAOD,aAAa,CAACC,KAAK,CAAC;MAC/B,CAAC;MACDW,iBAAiBA,CAAC;QAAEX;MAAM,CAAC,EAAU;QACjC,OAAOD,aAAa,CAACC,KAAK,CAAC;MAC/B,CAAC;MACDY,eAAeA,CAAA,EAAW;QACtB,OAAQ,EAAC;MACb;IACJ,CAAC;IACDC,MAAM,EAAE;MACJD,eAAeA,CAAA,EAAW;QACtB,OAAQ,EAAC;MACb,CAAC;MACDE,gBAAgBA,CAAC;QAAEd;MAAM,CAAC,EAAU;QAChC,OAAQ,GAAEA,KAAK,CAACC,OAAQ,oBAAmB;MAC/C;IACJ;EACJ,CAAC;AACL,CAAC;AAACc,OAAA,CAAAZ,mBAAA,GAAAA,mBAAA"}
|