@webiny/api-file-manager 5.36.2 → 5.37.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FileManagerContextSetup.d.ts +13 -0
- package/FileManagerContextSetup.js +113 -0
- package/FileManagerContextSetup.js.map +1 -0
- package/cmsFileStorage/CmsFilesStorage.d.ts +27 -0
- package/cmsFileStorage/CmsFilesStorage.js +173 -0
- package/cmsFileStorage/CmsFilesStorage.js.map +1 -0
- package/cmsFileStorage/ListFilesWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js +35 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -0
- package/cmsFileStorage/ListTagsWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js +35 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -0
- package/cmsFileStorage/createFileManagerPlugins.d.ts +5 -0
- package/cmsFileStorage/createFileManagerPlugins.js +34 -0
- package/cmsFileStorage/createFileManagerPlugins.js.map +1 -0
- package/cmsFileStorage/createModelField.d.ts +5 -0
- package/cmsFileStorage/createModelField.js +37 -0
- package/cmsFileStorage/createModelField.js.map +1 -0
- package/cmsFileStorage/file.model.d.ts +4 -0
- package/cmsFileStorage/file.model.js +124 -0
- package/cmsFileStorage/file.model.js.map +1 -0
- package/cmsFileStorage/isInstallationPending.d.ts +4 -0
- package/cmsFileStorage/isInstallationPending.js +21 -0
- package/cmsFileStorage/isInstallationPending.js.map +1 -0
- package/contants.d.ts +1 -0
- package/contants.js +8 -0
- package/contants.js.map +1 -0
- package/createFileManager/files.crud.js +39 -61
- package/createFileManager/files.crud.js.map +1 -1
- package/createFileManager/index.d.ts +4 -2
- package/createFileManager/index.js.map +1 -1
- package/createFileManager/permissions/FilesPermissions.d.ts +4 -0
- package/createFileManager/permissions/FilesPermissions.js +9 -0
- package/createFileManager/permissions/FilesPermissions.js.map +1 -0
- package/createFileManager/settings.crud.js.map +1 -1
- package/createFileManager/system.crud.js.map +1 -1
- package/graphql/baseSchema.d.ts +3 -0
- package/graphql/baseSchema.js +117 -0
- package/graphql/baseSchema.js.map +1 -0
- package/graphql/createFilesTypeDefs.d.ts +7 -0
- package/graphql/createFilesTypeDefs.js +162 -0
- package/graphql/createFilesTypeDefs.js.map +1 -0
- package/graphql/filesSchema.d.ts +4 -0
- package/graphql/filesSchema.js +83 -0
- package/graphql/filesSchema.js.map +1 -0
- package/graphql/index.d.ts +2 -2
- package/graphql/index.js +23 -278
- package/graphql/index.js.map +1 -1
- package/graphql/utils.d.ts +11 -0
- package/graphql/utils.js +22 -0
- package/graphql/utils.js.map +1 -0
- package/handlers/download/byAlias.js +9 -9
- package/handlers/download/byAlias.js.map +1 -1
- package/handlers/download/byExactKey.js +9 -9
- package/handlers/download/byExactKey.js.map +1 -1
- package/handlers/download/extractFileInformation.js.map +1 -1
- package/handlers/download/getS3Object.d.ts +2 -0
- package/handlers/download/getS3Object.js +39 -24
- package/handlers/download/getS3Object.js.map +1 -1
- package/handlers/download/index.js.map +1 -1
- package/handlers/manage/index.js.map +1 -1
- package/handlers/transform/index.js +5 -2
- package/handlers/transform/index.js.map +1 -1
- package/handlers/transform/legacyUtils.js.map +1 -1
- package/handlers/transform/loaders/imageLoader.js.map +1 -1
- package/handlers/transform/loaders/index.js.map +1 -1
- package/handlers/transform/loaders/sanitizeImageTransformations.js.map +1 -1
- package/handlers/transform/managers/imageManager.js.map +1 -1
- package/handlers/transform/managers/index.js.map +1 -1
- package/handlers/transform/optimizeImage.js.map +1 -1
- package/handlers/transform/transformImage.d.ts +5 -2
- package/handlers/transform/transformImage.js +7 -4
- package/handlers/transform/transformImage.js.map +1 -1
- package/handlers/transform/utils.js +2 -2
- package/handlers/transform/utils.js.map +1 -1
- package/handlers/utils/getEnvironment.js.map +1 -1
- package/handlers/utils/getObjectParams.js.map +1 -1
- package/handlers/utils/index.js.map +1 -1
- package/index.d.ts +3 -2
- package/index.js +20 -36
- package/index.js.map +1 -1
- package/modelModifier/CmsModelModifier.d.ts +24 -0
- package/modelModifier/CmsModelModifier.js +59 -0
- package/modelModifier/CmsModelModifier.js.map +1 -0
- package/package.json +26 -25
- package/plugins/FilePhysicalStoragePlugin.js.map +1 -1
- package/plugins/FileStorageTransformPlugin.js.map +1 -1
- package/plugins/index.js.map +1 -1
- package/storage/FileStorage.d.ts +2 -1
- package/storage/FileStorage.js +5 -4
- package/storage/FileStorage.js.map +1 -1
- package/types/file.d.ts +5 -1
- package/types/file.js.map +1 -1
- package/types.d.ts +16 -26
- package/types.js.map +1 -1
- package/createFileManager/checkBasePermissions.d.ts +0 -5
- package/createFileManager/checkBasePermissions.js +0 -24
- package/createFileManager/checkBasePermissions.js.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFileModelDefinition = exports.FILE_MODEL_ID = void 0;
|
|
7
|
+
var _createModelField = require("./createModelField");
|
|
8
|
+
const required = () => {
|
|
9
|
+
return {
|
|
10
|
+
name: "required",
|
|
11
|
+
message: "Value is required."
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
const nameField = () => {
|
|
15
|
+
return (0, _createModelField.createModelField)({
|
|
16
|
+
label: "Name",
|
|
17
|
+
type: "text",
|
|
18
|
+
validation: [required()]
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
const keyField = () => {
|
|
22
|
+
return (0, _createModelField.createModelField)({
|
|
23
|
+
label: "Key",
|
|
24
|
+
type: "text",
|
|
25
|
+
validation: [required()]
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const typeField = () => {
|
|
29
|
+
return (0, _createModelField.createModelField)({
|
|
30
|
+
label: "Type",
|
|
31
|
+
type: "text",
|
|
32
|
+
validation: [required()]
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const sizeField = () => {
|
|
36
|
+
return (0, _createModelField.createModelField)({
|
|
37
|
+
label: "Size",
|
|
38
|
+
type: "number",
|
|
39
|
+
validation: [required()]
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
const metaWidthField = () => {
|
|
43
|
+
return (0, _createModelField.createModelField)({
|
|
44
|
+
label: "Width",
|
|
45
|
+
type: "number"
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const metaHeightField = () => {
|
|
49
|
+
return (0, _createModelField.createModelField)({
|
|
50
|
+
label: "Height",
|
|
51
|
+
type: "number"
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const metaPrivateField = () => {
|
|
55
|
+
return (0, _createModelField.createModelField)({
|
|
56
|
+
label: "Private",
|
|
57
|
+
type: "boolean"
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
const metaOriginalKeyField = () => {
|
|
61
|
+
return (0, _createModelField.createModelField)({
|
|
62
|
+
label: "Original Key",
|
|
63
|
+
type: "text"
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
const metaField = () => {
|
|
67
|
+
return (0, _createModelField.createModelField)({
|
|
68
|
+
label: "Meta",
|
|
69
|
+
type: "object",
|
|
70
|
+
settings: {
|
|
71
|
+
fields: [metaPrivateField(), metaWidthField(), metaHeightField(), metaOriginalKeyField()]
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const tagsField = () => {
|
|
76
|
+
return (0, _createModelField.createModelField)({
|
|
77
|
+
label: "Tags",
|
|
78
|
+
type: "text",
|
|
79
|
+
multipleValues: true,
|
|
80
|
+
validation: [required()]
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
const aliasesField = () => {
|
|
84
|
+
return (0, _createModelField.createModelField)({
|
|
85
|
+
label: "Aliases",
|
|
86
|
+
type: "text",
|
|
87
|
+
multipleValues: true,
|
|
88
|
+
validation: [required()]
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
const FILE_MODEL_ID = "fmFile";
|
|
92
|
+
exports.FILE_MODEL_ID = FILE_MODEL_ID;
|
|
93
|
+
const createFileModelDefinition = group => {
|
|
94
|
+
return {
|
|
95
|
+
name: "FmFile",
|
|
96
|
+
modelId: FILE_MODEL_ID,
|
|
97
|
+
titleFieldId: "name",
|
|
98
|
+
layout: [["location"], ["name"], ["key"], ["type"], ["size"], ["meta"], ["tags"], ["aliases"]],
|
|
99
|
+
fields: [{
|
|
100
|
+
id: "location",
|
|
101
|
+
type: "object",
|
|
102
|
+
storageId: "object@location",
|
|
103
|
+
label: "Location",
|
|
104
|
+
fieldId: "location",
|
|
105
|
+
settings: {
|
|
106
|
+
fields: [{
|
|
107
|
+
id: "folderId",
|
|
108
|
+
type: "text",
|
|
109
|
+
fieldId: "folderId",
|
|
110
|
+
label: "Folder ID",
|
|
111
|
+
storageId: "text@folderId",
|
|
112
|
+
settings: {
|
|
113
|
+
path: "location.folderId"
|
|
114
|
+
}
|
|
115
|
+
}]
|
|
116
|
+
}
|
|
117
|
+
}, nameField(), keyField(), typeField(), sizeField(), metaField(), tagsField(), aliasesField()],
|
|
118
|
+
description: "File Manager - File content model",
|
|
119
|
+
isPrivate: true,
|
|
120
|
+
group,
|
|
121
|
+
noValidate: true
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
exports.createFileModelDefinition = createFileModelDefinition;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_createModelField","require","required","name","message","nameField","createModelField","label","type","validation","keyField","typeField","sizeField","metaWidthField","metaHeightField","metaPrivateField","metaOriginalKeyField","metaField","settings","fields","tagsField","multipleValues","aliasesField","FILE_MODEL_ID","exports","createFileModelDefinition","group","modelId","titleFieldId","layout","id","storageId","fieldId","path","description","isPrivate","noValidate"],"sources":["file.model.ts"],"sourcesContent":["import { CmsPrivateModelFull } from \"@webiny/api-headless-cms\";\nimport { createModelField } from \"./createModelField\";\nimport { CmsModelGroup } from \"@webiny/api-headless-cms/types\";\n\nconst required = () => {\n return {\n name: \"required\",\n message: \"Value is required.\"\n };\n};\n\nconst nameField = () => {\n return createModelField({\n label: \"Name\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst keyField = () => {\n return createModelField({\n label: \"Key\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst typeField = () => {\n return createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [required()]\n });\n};\n\nconst sizeField = () => {\n return createModelField({\n label: \"Size\",\n type: \"number\",\n validation: [required()]\n });\n};\n\nconst metaWidthField = () => {\n return createModelField({\n label: \"Width\",\n type: \"number\"\n });\n};\n\nconst metaHeightField = () => {\n return createModelField({\n label: \"Height\",\n type: \"number\"\n });\n};\n\nconst metaPrivateField = () => {\n return createModelField({\n label: \"Private\",\n type: \"boolean\"\n });\n};\n\nconst metaOriginalKeyField = () => {\n return createModelField({\n label: \"Original Key\",\n type: \"text\"\n });\n};\n\nconst metaField = () => {\n return createModelField({\n label: \"Meta\",\n type: \"object\",\n settings: {\n fields: [\n metaPrivateField(),\n metaWidthField(),\n metaHeightField(),\n metaOriginalKeyField()\n ]\n }\n });\n};\n\nconst tagsField = () => {\n return createModelField({\n label: \"Tags\",\n type: \"text\",\n multipleValues: true,\n validation: [required()]\n });\n};\n\nconst aliasesField = () => {\n return createModelField({\n label: \"Aliases\",\n type: \"text\",\n multipleValues: true,\n validation: [required()]\n });\n};\n\nexport const FILE_MODEL_ID = \"fmFile\";\n\nexport const createFileModelDefinition = (group: CmsModelGroup): CmsPrivateModelFull => {\n return {\n name: \"FmFile\",\n modelId: FILE_MODEL_ID,\n titleFieldId: \"name\",\n layout: [\n [\"location\"],\n [\"name\"],\n [\"key\"],\n [\"type\"],\n [\"size\"],\n [\"meta\"],\n [\"tags\"],\n [\"aliases\"]\n ],\n fields: [\n {\n id: \"location\",\n type: \"object\",\n storageId: \"object@location\",\n label: \"Location\",\n fieldId: \"location\",\n settings: {\n fields: [\n {\n id: \"folderId\",\n type: \"text\",\n fieldId: \"folderId\",\n label: \"Folder ID\",\n storageId: \"text@folderId\",\n settings: {\n path: \"location.folderId\"\n }\n }\n ]\n }\n },\n nameField(),\n keyField(),\n typeField(),\n sizeField(),\n metaField(),\n tagsField(),\n aliasesField()\n ],\n description: \"File Manager - File content model\",\n isPrivate: true,\n group,\n noValidate: true\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isInstallationPending = void 0;
|
|
7
|
+
const isInstallationPending = ({
|
|
8
|
+
tenancy,
|
|
9
|
+
i18n
|
|
10
|
+
}) => {
|
|
11
|
+
/**
|
|
12
|
+
* In case of a fresh webiny project "tenant" and "locale" won't be there until
|
|
13
|
+
* installation is completed. So, we need to skip "storage" creation till then.
|
|
14
|
+
*/
|
|
15
|
+
const tenant = tenancy.getCurrentTenant();
|
|
16
|
+
if (!tenant) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
return !i18n.getContentLocale();
|
|
20
|
+
};
|
|
21
|
+
exports.isInstallationPending = isInstallationPending;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isInstallationPending","tenancy","i18n","tenant","getCurrentTenant","getContentLocale","exports"],"sources":["isInstallationPending.ts"],"sourcesContent":["import { FileManagerContext } from \"~/types\";\n\ntype CheckInstallationParams = Pick<FileManagerContext, \"tenancy\" | \"i18n\">;\nexport const isInstallationPending = ({ tenancy, i18n }: CheckInstallationParams): boolean => {\n /**\n * In case of a fresh webiny project \"tenant\" and \"locale\" won't be there until\n * installation is completed. So, we need to skip \"storage\" creation till then.\n */\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n return true;\n }\n\n return !i18n.getContentLocale();\n};\n"],"mappings":";;;;;;AAGO,MAAMA,qBAAqB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAA8B,CAAC,KAAc;EAC1F;AACJ;AACA;AACA;EACI,MAAMC,MAAM,GAAGF,OAAO,CAACG,gBAAgB,CAAC,CAAC;EACzC,IAAI,CAACD,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EAEA,OAAO,CAACD,IAAI,CAACG,gBAAgB,CAAC,CAAC;AACnC,CAAC;AAACC,OAAA,CAAAN,qBAAA,GAAAA,qBAAA"}
|
package/contants.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ROOT_FOLDER = "root";
|
package/contants.js
ADDED
package/contants.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ROOT_FOLDER","exports"],"sources":["contants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAG,MAAM;AAACC,OAAA,CAAAD,WAAA,GAAAA,WAAA"}
|
|
@@ -7,27 +7,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.createFilesCrud = void 0;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
9
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
10
|
-
var _apiSecurity = require("@webiny/api-security");
|
|
11
10
|
var _pubsub = require("@webiny/pubsub");
|
|
12
11
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
var
|
|
14
|
-
/**
|
|
15
|
-
* If permission is limited to "own" files only, check that current identity owns the file.
|
|
16
|
-
*/
|
|
17
|
-
const checkOwnership = (file, permission, identity) => {
|
|
18
|
-
if ((permission === null || permission === void 0 ? void 0 : permission.own) === true) {
|
|
19
|
-
if (file.createdBy.id !== identity.id) {
|
|
20
|
-
throw new _apiSecurity.NotAuthorizedError();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
};
|
|
12
|
+
var _contants = require("../contants");
|
|
24
13
|
const createFilesCrud = config => {
|
|
25
14
|
const {
|
|
26
15
|
storageOperations,
|
|
16
|
+
filesPermissions,
|
|
27
17
|
getLocaleCode,
|
|
28
18
|
getTenantId,
|
|
29
19
|
getIdentity,
|
|
30
|
-
getPermission,
|
|
31
20
|
WEBINY_VERSION
|
|
32
21
|
} = config;
|
|
33
22
|
return {
|
|
@@ -40,7 +29,7 @@ const createFilesCrud = config => {
|
|
|
40
29
|
onFileBeforeDelete: (0, _pubsub.createTopic)("fileManager.onFileBeforeDelete"),
|
|
41
30
|
onFileAfterDelete: (0, _pubsub.createTopic)("fileManager.onFileAfterDelete"),
|
|
42
31
|
async getFile(id) {
|
|
43
|
-
|
|
32
|
+
await filesPermissions.ensure({
|
|
44
33
|
rwd: "r"
|
|
45
34
|
});
|
|
46
35
|
const file = await storageOperations.files.get({
|
|
@@ -53,11 +42,14 @@ const createFilesCrud = config => {
|
|
|
53
42
|
if (!file) {
|
|
54
43
|
throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
|
|
55
44
|
}
|
|
56
|
-
|
|
45
|
+
await filesPermissions.ensure({
|
|
46
|
+
owns: file.createdBy
|
|
47
|
+
});
|
|
57
48
|
return file;
|
|
58
49
|
},
|
|
59
50
|
async createFile(input, meta) {
|
|
60
|
-
|
|
51
|
+
var _input$location;
|
|
52
|
+
await filesPermissions.ensure({
|
|
61
53
|
rwd: "w"
|
|
62
54
|
});
|
|
63
55
|
const identity = getIdentity();
|
|
@@ -68,11 +60,15 @@ const createFilesCrud = config => {
|
|
|
68
60
|
tags: Array.isArray(input.tags) ? input.tags : [],
|
|
69
61
|
aliases: Array.isArray(input.aliases) ? input.aliases : [],
|
|
70
62
|
id: input.id || id,
|
|
63
|
+
location: {
|
|
64
|
+
folderId: ((_input$location = input.location) === null || _input$location === void 0 ? void 0 : _input$location.folderId) ?? _contants.ROOT_FOLDER
|
|
65
|
+
},
|
|
71
66
|
meta: (0, _objectSpread2.default)({
|
|
72
67
|
private: false
|
|
73
68
|
}, input.meta || {}),
|
|
74
69
|
tenant: getTenantId(),
|
|
75
70
|
createdOn: new Date().toISOString(),
|
|
71
|
+
savedOn: new Date().toISOString(),
|
|
76
72
|
createdBy: {
|
|
77
73
|
id: identity.id,
|
|
78
74
|
displayName: identity.displayName,
|
|
@@ -101,7 +97,7 @@ const createFilesCrud = config => {
|
|
|
101
97
|
}
|
|
102
98
|
},
|
|
103
99
|
async updateFile(id, input) {
|
|
104
|
-
|
|
100
|
+
await filesPermissions.ensure({
|
|
105
101
|
rwd: "w"
|
|
106
102
|
});
|
|
107
103
|
const original = await storageOperations.files.get({
|
|
@@ -114,7 +110,9 @@ const createFilesCrud = config => {
|
|
|
114
110
|
if (!original) {
|
|
115
111
|
throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
|
|
116
112
|
}
|
|
117
|
-
|
|
113
|
+
await filesPermissions.ensure({
|
|
114
|
+
owns: original.createdBy
|
|
115
|
+
});
|
|
118
116
|
const file = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
|
|
119
117
|
tags: Array.isArray(input.tags) ? input.tags : Array.isArray(original.tags) ? original.tags : [],
|
|
120
118
|
aliases: Array.isArray(input.aliases) ? input.aliases : Array.isArray(original.aliases) ? original.aliases : [],
|
|
@@ -145,7 +143,7 @@ const createFilesCrud = config => {
|
|
|
145
143
|
}
|
|
146
144
|
},
|
|
147
145
|
async deleteFile(id) {
|
|
148
|
-
|
|
146
|
+
await filesPermissions.ensure({
|
|
149
147
|
rwd: "d"
|
|
150
148
|
});
|
|
151
149
|
const file = await storageOperations.files.get({
|
|
@@ -158,7 +156,9 @@ const createFilesCrud = config => {
|
|
|
158
156
|
if (!file) {
|
|
159
157
|
throw new _handlerGraphql.NotFoundError(`File with id "${id}" does not exists.`);
|
|
160
158
|
}
|
|
161
|
-
|
|
159
|
+
await filesPermissions.ensure({
|
|
160
|
+
owns: file.createdBy
|
|
161
|
+
});
|
|
162
162
|
try {
|
|
163
163
|
await this.onFileBeforeDelete.publish({
|
|
164
164
|
file
|
|
@@ -178,7 +178,7 @@ const createFilesCrud = config => {
|
|
|
178
178
|
return true;
|
|
179
179
|
},
|
|
180
180
|
async createFilesInBatch(inputs, meta) {
|
|
181
|
-
await
|
|
181
|
+
await filesPermissions.ensure({
|
|
182
182
|
rwd: "w"
|
|
183
183
|
});
|
|
184
184
|
const identity = getIdentity();
|
|
@@ -190,14 +190,19 @@ const createFilesCrud = config => {
|
|
|
190
190
|
type: identity.type
|
|
191
191
|
};
|
|
192
192
|
const files = inputs.map(input => {
|
|
193
|
+
var _input$location2;
|
|
193
194
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
|
|
194
195
|
tags: Array.isArray(input.tags) ? input.tags : [],
|
|
195
196
|
aliases: Array.isArray(input.aliases) ? input.aliases : [],
|
|
196
197
|
meta: (0, _objectSpread2.default)({
|
|
197
198
|
private: false
|
|
198
199
|
}, input.meta || {}),
|
|
200
|
+
location: {
|
|
201
|
+
folderId: ((_input$location2 = input.location) === null || _input$location2 === void 0 ? void 0 : _input$location2.folderId) ?? _contants.ROOT_FOLDER
|
|
202
|
+
},
|
|
199
203
|
tenant,
|
|
200
204
|
createdOn: new Date().toISOString(),
|
|
205
|
+
savedOn: new Date().toISOString(),
|
|
201
206
|
createdBy,
|
|
202
207
|
locale,
|
|
203
208
|
webinyVersion: WEBINY_VERSION
|
|
@@ -223,67 +228,40 @@ const createFilesCrud = config => {
|
|
|
223
228
|
}
|
|
224
229
|
},
|
|
225
230
|
async listFiles(params = {}) {
|
|
226
|
-
|
|
231
|
+
await filesPermissions.ensure({
|
|
227
232
|
rwd: "r"
|
|
228
233
|
});
|
|
229
234
|
const {
|
|
230
235
|
limit = 40,
|
|
231
|
-
search = "",
|
|
232
|
-
types = [],
|
|
233
|
-
tags = [],
|
|
234
|
-
ids = [],
|
|
235
236
|
after = null,
|
|
236
237
|
where: initialWhere,
|
|
237
|
-
sort: initialSort
|
|
238
|
+
sort: initialSort,
|
|
239
|
+
search
|
|
238
240
|
} = params;
|
|
239
|
-
const where = (0, _objectSpread2.default)((0, _objectSpread2.default)({},
|
|
240
|
-
|
|
241
|
+
const where = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _objectSpread2.default)({
|
|
242
|
+
meta: {
|
|
243
|
+
private_not: true
|
|
244
|
+
}
|
|
245
|
+
}, initialWhere)), {}, {
|
|
241
246
|
locale: getLocaleCode(),
|
|
242
247
|
tenant: getTenantId()
|
|
243
248
|
});
|
|
249
|
+
|
|
244
250
|
/**
|
|
245
251
|
* Always override the createdBy received from the user, if any.
|
|
246
252
|
*/
|
|
247
|
-
if (
|
|
253
|
+
if (await filesPermissions.canAccessOnlyOwnRecords()) {
|
|
248
254
|
const identity = getIdentity();
|
|
249
255
|
where.createdBy = identity.id;
|
|
250
256
|
}
|
|
251
|
-
/**
|
|
252
|
-
* We need to map the old GraphQL definition to the new one.
|
|
253
|
-
* That GQL definition is marked as deprecated.
|
|
254
|
-
*/
|
|
255
|
-
/**
|
|
256
|
-
* To have standardized where objects across the applications, we transform the types into type_in.
|
|
257
|
-
*/
|
|
258
|
-
if (Array.isArray(types) && types.length > 0 && !where.type_in) {
|
|
259
|
-
where.type_in = types;
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* We are assigning search to tag and name search.
|
|
263
|
-
* This should be treated as OR condition in the storage operations.
|
|
264
|
-
*/
|
|
265
|
-
if (search && !where.search) {
|
|
266
|
-
where.search = search;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Same as on types/type_in.
|
|
270
|
-
*/
|
|
271
|
-
if (Array.isArray(tags) && tags.length > 0 && !where.tag_in) {
|
|
272
|
-
where.tag_in = tags.map(tag => tag.toLowerCase());
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Same as on types/type_in.
|
|
276
|
-
*/
|
|
277
|
-
if (Array.isArray(ids) && ids.length > 0 && !where.id_in) {
|
|
278
|
-
where.id_in = ids;
|
|
279
|
-
}
|
|
280
257
|
const sort = Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : ["id_DESC"];
|
|
281
258
|
try {
|
|
282
259
|
return await storageOperations.files.list({
|
|
283
260
|
where,
|
|
284
261
|
after,
|
|
285
262
|
limit,
|
|
286
|
-
sort
|
|
263
|
+
sort,
|
|
264
|
+
search
|
|
287
265
|
});
|
|
288
266
|
} catch (ex) {
|
|
289
267
|
throw new _error.default(ex.message || "Could not list files by given parameters.", ex.code || "FILE_TAG_SEARCH_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
|
@@ -299,7 +277,7 @@ const createFilesCrud = config => {
|
|
|
299
277
|
after,
|
|
300
278
|
limit
|
|
301
279
|
}) {
|
|
302
|
-
await
|
|
280
|
+
await filesPermissions.ensure();
|
|
303
281
|
const where = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialWhere), {}, {
|
|
304
282
|
tenant: getTenantId(),
|
|
305
283
|
locale: getLocaleCode()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["checkOwnership","file","permission","identity","own","createdBy","id","NotAuthorizedError","createFilesCrud","config","storageOperations","getLocaleCode","getTenantId","getIdentity","getPermission","WEBINY_VERSION","onFileBeforeCreate","createTopic","onFileAfterCreate","onFileBeforeBatchCreate","onFileAfterBatchCreate","onFileBeforeUpdate","onFileAfterUpdate","onFileBeforeDelete","onFileAfterDelete","getFile","checkBasePermissions","rwd","files","get","where","tenant","locale","NotFoundError","createFile","input","meta","key","split","tags","Array","isArray","aliases","private","createdOn","Date","toISOString","displayName","type","webinyVersion","publish","result","create","ex","WebinyError","message","code","data","updateFile","original","update","deleteFile","delete","createFilesInBatch","inputs","map","results","createBatch","listFiles","params","limit","search","types","ids","after","initialWhere","sort","initialSort","length","type_in","tag_in","tag","toLowerCase","id_in","list","listTags"],"sources":["files.crud.ts"],"sourcesContent":["import { NotFoundError } from \"@webiny/handler-graphql\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport WebinyError from \"@webiny/error\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport {\n CreatedBy,\n File,\n FileManagerFilesStorageOperationsListParamsWhere,\n FileManagerFilesStorageOperationsTagsParamsWhere,\n FilePermission,\n FilesCRUD,\n FilesListOpts\n} from \"~/types\";\nimport { checkBasePermissions } from \"./checkBasePermissions\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\n/**\n * If permission is limited to \"own\" files only, check that current identity owns the file.\n */\nconst checkOwnership = (file: File, permission: FilePermission, identity: SecurityIdentity) => {\n if (permission?.own === true) {\n if (file.createdBy.id !== identity.id) {\n throw new NotAuthorizedError();\n }\n }\n};\n\nexport const createFilesCrud = (config: FileManagerConfig): FilesCRUD => {\n const {\n storageOperations,\n getLocaleCode,\n getTenantId,\n getIdentity,\n getPermission,\n WEBINY_VERSION\n } = config;\n\n return {\n onFileBeforeCreate: createTopic(\"fileManager.onFileBeforeCreate\"),\n onFileAfterCreate: createTopic(\"fileManager.onFileAfterCreate\"),\n onFileBeforeBatchCreate: createTopic(\"fileManager.onFileBeforeBatchCreate\"),\n onFileAfterBatchCreate: createTopic(\"fileManager.onFileAfterBatchCreate\"),\n onFileBeforeUpdate: createTopic(\"fileManager.onFileBeforeUpdate\"),\n onFileAfterUpdate: createTopic(\"fileManager.onFileAfterUpdate\"),\n onFileBeforeDelete: createTopic(\"fileManager.onFileBeforeDelete\"),\n onFileAfterDelete: createTopic(\"fileManager.onFileAfterDelete\"),\n async getFile(id: string) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"r\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(file, permission, getIdentity());\n\n return file;\n },\n async createFile(input, meta) {\n await checkBasePermissions(getPermission, { rwd: \"w\" });\n const identity = getIdentity();\n\n // Extract ID from file key\n const [id] = input.key.split(\"/\");\n\n const file: File = {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n id: input.id || id,\n meta: {\n private: false,\n ...(input.meta || {})\n },\n tenant: getTenantId(),\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n locale: getLocaleCode(),\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeCreate.publish({ file, meta });\n\n const result = await storageOperations.files.create({ file });\n\n await this.onFileAfterCreate.publish({ file, meta });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a file.\",\n ex.code || \"CREATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n file\n }\n );\n }\n },\n async updateFile(id, input) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"w\" });\n\n const original = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!original) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(original, permission, getIdentity());\n\n const file: File = {\n ...original,\n ...input,\n tags: Array.isArray(input.tags)\n ? input.tags\n : Array.isArray(original.tags)\n ? original.tags\n : [],\n aliases: Array.isArray(input.aliases)\n ? input.aliases\n : Array.isArray(original.aliases)\n ? original.aliases\n : [],\n id: original.id,\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeUpdate.publish({\n original,\n file,\n input\n });\n\n const result = await storageOperations.files.update({\n original,\n file\n });\n\n await this.onFileAfterUpdate.publish({\n original,\n file,\n input\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update a file.\",\n ex.code || \"UPDATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n original,\n file\n }\n );\n }\n },\n async deleteFile(id) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"d\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n checkOwnership(file, permission, getIdentity());\n\n try {\n await this.onFileBeforeDelete.publish({ file });\n\n await storageOperations.files.delete({\n file\n });\n\n await this.onFileAfterDelete.publish({ file });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete a file.\",\n ex.code || \"DELETE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n id,\n file\n }\n );\n }\n\n return true;\n },\n async createFilesInBatch(inputs, meta) {\n await checkBasePermissions(getPermission, { rwd: \"w\" });\n\n const identity = getIdentity();\n const tenant = getTenantId();\n const locale = getLocaleCode();\n\n const createdBy: CreatedBy = {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n\n const files: File[] = inputs.map(input => {\n return {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n meta: {\n private: false,\n ...(input.meta || {})\n },\n tenant,\n createdOn: new Date().toISOString(),\n createdBy,\n locale,\n webinyVersion: WEBINY_VERSION\n };\n });\n\n try {\n await this.onFileBeforeBatchCreate.publish({ files, meta });\n const results = await storageOperations.files.createBatch({\n files\n });\n await this.onFileAfterBatchCreate.publish({ files, meta });\n return results;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a batch of files.\",\n ex.code || \"CREATE_FILES_ERROR\",\n {\n ...(ex.data || {}),\n files\n }\n );\n }\n },\n async listFiles(params: FilesListOpts = {}) {\n const permission = await checkBasePermissions(getPermission, { rwd: \"r\" });\n\n const {\n limit = 40,\n search = \"\",\n types = [],\n tags = [],\n ids = [],\n after = null,\n where: initialWhere,\n sort: initialSort\n } = params;\n\n const where: FileManagerFilesStorageOperationsListParamsWhere = {\n ...initialWhere,\n private: false,\n locale: getLocaleCode(),\n tenant: getTenantId()\n };\n /**\n * Always override the createdBy received from the user, if any.\n */\n if (permission.own === true) {\n const identity = getIdentity();\n where.createdBy = identity.id;\n }\n /**\n * We need to map the old GraphQL definition to the new one.\n * That GQL definition is marked as deprecated.\n */\n /**\n * To have standardized where objects across the applications, we transform the types into type_in.\n */\n if (Array.isArray(types) && types.length > 0 && !where.type_in) {\n where.type_in = types;\n }\n /**\n * We are assigning search to tag and name search.\n * This should be treated as OR condition in the storage operations.\n */\n if (search && !where.search) {\n where.search = search;\n }\n /**\n * Same as on types/type_in.\n */\n if (Array.isArray(tags) && tags.length > 0 && !where.tag_in) {\n where.tag_in = tags.map(tag => tag.toLowerCase());\n }\n /**\n * Same as on types/type_in.\n */\n if (Array.isArray(ids) && ids.length > 0 && !where.id_in) {\n where.id_in = ids;\n }\n\n const sort =\n Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : [\"id_DESC\"];\n try {\n return await storageOperations.files.list({\n where,\n after,\n limit,\n sort\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list files by given parameters.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n where,\n after,\n limit,\n sort\n }\n );\n }\n },\n async listTags({ where: initialWhere, after, limit }) {\n await checkBasePermissions(getPermission);\n\n const where: FileManagerFilesStorageOperationsTagsParamsWhere = {\n ...initialWhere,\n tenant: getTenantId(),\n locale: getLocaleCode()\n };\n\n const params = {\n where,\n limit: limit || 1000000,\n after\n };\n\n try {\n return await storageOperations.files.tags(params);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not search for tags.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n params\n }\n );\n }\n }\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","_pubsub","_error","_interopRequireDefault","_contants","createFilesCrud","config","storageOperations","filesPermissions","getLocaleCode","getTenantId","getIdentity","WEBINY_VERSION","onFileBeforeCreate","createTopic","onFileAfterCreate","onFileBeforeBatchCreate","onFileAfterBatchCreate","onFileBeforeUpdate","onFileAfterUpdate","onFileBeforeDelete","onFileAfterDelete","getFile","id","ensure","rwd","file","files","get","where","tenant","locale","NotFoundError","owns","createdBy","createFile","input","meta","_input$location","identity","key","split","_objectSpread2","default","tags","Array","isArray","aliases","location","folderId","ROOT_FOLDER","private","createdOn","Date","toISOString","savedOn","displayName","type","webinyVersion","publish","result","create","ex","WebinyError","message","code","data","updateFile","original","update","deleteFile","delete","createFilesInBatch","inputs","map","_input$location2","results","createBatch","listFiles","params","limit","after","initialWhere","sort","initialSort","search","private_not","canAccessOnlyOwnRecords","length","list","listTags","exports"],"sources":["files.crud.ts"],"sourcesContent":["import { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CreatedBy,\n File,\n FileManagerFilesStorageOperationsListParamsWhere,\n FileManagerFilesStorageOperationsTagsParamsWhere,\n FilesCRUD,\n FilesListOpts\n} from \"~/types\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\nimport { ROOT_FOLDER } from \"~/contants\";\n\nexport const createFilesCrud = (config: FileManagerConfig): FilesCRUD => {\n const {\n storageOperations,\n filesPermissions,\n getLocaleCode,\n getTenantId,\n getIdentity,\n WEBINY_VERSION\n } = config;\n\n return {\n onFileBeforeCreate: createTopic(\"fileManager.onFileBeforeCreate\"),\n onFileAfterCreate: createTopic(\"fileManager.onFileAfterCreate\"),\n onFileBeforeBatchCreate: createTopic(\"fileManager.onFileBeforeBatchCreate\"),\n onFileAfterBatchCreate: createTopic(\"fileManager.onFileAfterBatchCreate\"),\n onFileBeforeUpdate: createTopic(\"fileManager.onFileBeforeUpdate\"),\n onFileAfterUpdate: createTopic(\"fileManager.onFileAfterUpdate\"),\n onFileBeforeDelete: createTopic(\"fileManager.onFileBeforeDelete\"),\n onFileAfterDelete: createTopic(\"fileManager.onFileAfterDelete\"),\n async getFile(id: string) {\n await filesPermissions.ensure({ rwd: \"r\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n await filesPermissions.ensure({ owns: file.createdBy });\n\n return file;\n },\n async createFile(input, meta) {\n await filesPermissions.ensure({ rwd: \"w\" });\n\n const identity = getIdentity();\n\n // Extract ID from file key\n const [id] = input.key.split(\"/\");\n\n const file: File = {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n id: input.id || id,\n location: {\n folderId: input.location?.folderId ?? ROOT_FOLDER\n },\n meta: {\n private: false,\n ...(input.meta || {})\n },\n tenant: getTenantId(),\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n locale: getLocaleCode(),\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeCreate.publish({ file, meta });\n\n const result = await storageOperations.files.create({ file });\n\n await this.onFileAfterCreate.publish({ file, meta });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a file.\",\n ex.code || \"CREATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n file\n }\n );\n }\n },\n async updateFile(id, input) {\n await filesPermissions.ensure({ rwd: \"w\" });\n\n const original = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!original) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n await filesPermissions.ensure({ owns: original.createdBy });\n\n const file: File = {\n ...original,\n ...input,\n tags: Array.isArray(input.tags)\n ? input.tags\n : Array.isArray(original.tags)\n ? original.tags\n : [],\n aliases: Array.isArray(input.aliases)\n ? input.aliases\n : Array.isArray(original.aliases)\n ? original.aliases\n : [],\n id: original.id,\n webinyVersion: WEBINY_VERSION\n };\n\n try {\n await this.onFileBeforeUpdate.publish({\n original,\n file,\n input\n });\n\n const result = await storageOperations.files.update({\n original,\n file\n });\n\n await this.onFileAfterUpdate.publish({\n original,\n file,\n input\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update a file.\",\n ex.code || \"UPDATE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n original,\n file\n }\n );\n }\n },\n async deleteFile(id) {\n await filesPermissions.ensure({ rwd: \"d\" });\n\n const file = await storageOperations.files.get({\n where: {\n id,\n tenant: getTenantId(),\n locale: getLocaleCode()\n }\n });\n\n if (!file) {\n throw new NotFoundError(`File with id \"${id}\" does not exists.`);\n }\n\n await filesPermissions.ensure({ owns: file.createdBy });\n\n try {\n await this.onFileBeforeDelete.publish({ file });\n\n await storageOperations.files.delete({\n file\n });\n\n await this.onFileAfterDelete.publish({ file });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete a file.\",\n ex.code || \"DELETE_FILE_ERROR\",\n {\n ...(ex.data || {}),\n id,\n file\n }\n );\n }\n\n return true;\n },\n async createFilesInBatch(inputs, meta) {\n await filesPermissions.ensure({ rwd: \"w\" });\n\n const identity = getIdentity();\n const tenant = getTenantId();\n const locale = getLocaleCode();\n\n const createdBy: CreatedBy = {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n\n const files: File[] = inputs.map(input => {\n return {\n ...input,\n tags: Array.isArray(input.tags) ? input.tags : [],\n aliases: Array.isArray(input.aliases) ? input.aliases : [],\n meta: {\n private: false,\n ...(input.meta || {})\n },\n location: {\n folderId: input.location?.folderId ?? ROOT_FOLDER\n },\n tenant,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy,\n locale,\n webinyVersion: WEBINY_VERSION\n };\n });\n\n try {\n await this.onFileBeforeBatchCreate.publish({ files, meta });\n const results = await storageOperations.files.createBatch({\n files\n });\n await this.onFileAfterBatchCreate.publish({ files, meta });\n return results;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create a batch of files.\",\n ex.code || \"CREATE_FILES_ERROR\",\n {\n ...(ex.data || {}),\n files\n }\n );\n }\n },\n async listFiles(params: FilesListOpts = {}) {\n await filesPermissions.ensure({ rwd: \"r\" });\n\n const {\n limit = 40,\n after = null,\n where: initialWhere,\n sort: initialSort,\n search\n } = params;\n\n const where: FileManagerFilesStorageOperationsListParamsWhere = {\n ...{ meta: { private_not: true }, ...initialWhere },\n locale: getLocaleCode(),\n tenant: getTenantId()\n };\n\n /**\n * Always override the createdBy received from the user, if any.\n */\n if (await filesPermissions.canAccessOnlyOwnRecords()) {\n const identity = getIdentity();\n where.createdBy = identity.id;\n }\n\n const sort =\n Array.isArray(initialSort) && initialSort.length > 0 ? initialSort : [\"id_DESC\"];\n try {\n return await storageOperations.files.list({\n where,\n after,\n limit,\n sort,\n search\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list files by given parameters.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n where,\n after,\n limit,\n sort\n }\n );\n }\n },\n async listTags({ where: initialWhere, after, limit }) {\n await filesPermissions.ensure();\n\n const where: FileManagerFilesStorageOperationsTagsParamsWhere = {\n ...initialWhere,\n tenant: getTenantId(),\n locale: getLocaleCode()\n };\n\n const params = {\n where,\n limit: limit || 1000000,\n after\n };\n\n try {\n return await storageOperations.files.tags(params);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not search for tags.\",\n ex.code || \"FILE_TAG_SEARCH_ERROR\",\n {\n ...(ex.data || {}),\n params\n }\n );\n }\n }\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { FileManagerContextObject, FileManagerStorageOperations } from "../types";
|
|
2
|
-
import {
|
|
2
|
+
import { GetPermissions, SecurityIdentity } from "@webiny/api-security/types";
|
|
3
3
|
import { FileStorage } from "../storage/FileStorage";
|
|
4
|
+
import { FilesPermissions } from "./permissions/FilesPermissions";
|
|
4
5
|
export interface FileManagerConfig {
|
|
5
6
|
storageOperations: FileManagerStorageOperations;
|
|
7
|
+
filesPermissions: FilesPermissions;
|
|
6
8
|
getTenantId: () => string;
|
|
7
9
|
getLocaleCode: () => string;
|
|
8
10
|
getIdentity: () => SecurityIdentity;
|
|
9
|
-
|
|
11
|
+
getPermissions: GetPermissions;
|
|
10
12
|
storage: FileStorage;
|
|
11
13
|
WEBINY_VERSION: string;
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createFileManager","config","filesCrud","createFilesCrud","settingsCrud","createSettingsCrud","systemCrud","createSystemCrud","storage"],"sources":["index.ts"],"sourcesContent":["import { FileManagerContextObject, FileManagerStorageOperations } from \"~/types\";\nimport {
|
|
1
|
+
{"version":3,"names":["_files","require","_settings","_system","createFileManager","config","filesCrud","createFilesCrud","settingsCrud","createSettingsCrud","systemCrud","createSystemCrud","_objectSpread2","default","storage","exports"],"sources":["index.ts"],"sourcesContent":["import { FileManagerContextObject, FileManagerStorageOperations } from \"~/types\";\nimport { GetPermissions, SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createFilesCrud } from \"~/createFileManager/files.crud\";\nimport { FileStorage } from \"~/storage/FileStorage\";\nimport { createSettingsCrud } from \"~/createFileManager/settings.crud\";\nimport { createSystemCrud } from \"~/createFileManager/system.crud\";\nimport { FilesPermissions } from \"~/createFileManager/permissions/FilesPermissions\";\n\nexport interface FileManagerConfig {\n storageOperations: FileManagerStorageOperations;\n filesPermissions: FilesPermissions;\n getTenantId: () => string;\n getLocaleCode: () => string;\n getIdentity: () => SecurityIdentity;\n getPermissions: GetPermissions;\n storage: FileStorage;\n WEBINY_VERSION: string;\n}\n\nexport const createFileManager = (config: FileManagerConfig): FileManagerContextObject => {\n const filesCrud = createFilesCrud(config);\n const settingsCrud = createSettingsCrud(config);\n const systemCrud = createSystemCrud(config);\n\n return {\n ...filesCrud,\n ...settingsCrud,\n ...systemCrud,\n storage: config.storage\n };\n};\n"],"mappings":";;;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAcO,MAAMG,iBAAiB,GAAIC,MAAyB,IAA+B;EACtF,MAAMC,SAAS,GAAG,IAAAC,sBAAe,EAACF,MAAM,CAAC;EACzC,MAAMG,YAAY,GAAG,IAAAC,4BAAkB,EAACJ,MAAM,CAAC;EAC/C,MAAMK,UAAU,GAAG,IAAAC,wBAAgB,EAACN,MAAM,CAAC;EAE3C,WAAAO,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOP,SAAS,GACTE,YAAY,GACZE,UAAU;IACbI,OAAO,EAAET,MAAM,CAACS;EAAO;AAE/B,CAAC;AAACC,OAAA,CAAAX,iBAAA,GAAAA,iBAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FilesPermissions = void 0;
|
|
7
|
+
var _AppPermissions = require("@webiny/api-security/utils/AppPermissions");
|
|
8
|
+
class FilesPermissions extends _AppPermissions.AppPermissions {}
|
|
9
|
+
exports.FilesPermissions = FilesPermissions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_AppPermissions","require","FilesPermissions","AppPermissions","exports"],"sources":["FilesPermissions.ts"],"sourcesContent":["import { AppPermissions } from \"@webiny/api-security/utils/AppPermissions\";\nimport { FilePermission } from \"~/types\";\n\nexport class FilesPermissions extends AppPermissions<FilePermission> {}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGO,MAAMC,gBAAgB,SAASC,8BAAc,CAAiB;AAAEC,OAAA,CAAAF,gBAAA,GAAAA,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CreateDataModel","withFields","uploadMinFileSize","number","value","validation","create","uploadMaxFileSize","srcPrefix","onSet","endsWith","string","UpdateDataModel","createSettingsCrud","storageOperations","getTenantId","getSettings","settings","get","tenant","createSettings","data","populate","validate","settingsData","toJSON","updateSettings","updatedValue","existingSettings","updatedSettings","onlyDirty","update","original","deleteSettings","delete"],"sources":["settings.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string, number, onSet } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport { FileManagerSettings, SettingsCRUD } from \"~/types\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\nconst CreateDataModel = withFields({\n uploadMinFileSize: number({ value: 0, validation: validation.create(\"gte:0\") }),\n uploadMaxFileSize: number({ value: 10737418240 }),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string({ value: \"/files/\" }))\n})();\n\nconst UpdateDataModel = withFields({\n uploadMinFileSize: number({\n validation: validation.create(\"gte:0\")\n }),\n uploadMaxFileSize: number(),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string())\n})();\n\nexport const createSettingsCrud = ({\n storageOperations,\n getTenantId\n}: FileManagerConfig): SettingsCRUD => {\n return {\n async getSettings() {\n return storageOperations.settings.get({ tenant: getTenantId() });\n },\n async createSettings(data) {\n const settings = new CreateDataModel().populate(data);\n await settings.validate();\n\n const settingsData: FileManagerSettings = await settings.toJSON();\n\n return storageOperations.settings.create({\n data: { ...settingsData, tenant: getTenantId() }\n });\n },\n async updateSettings(data) {\n const updatedValue = new UpdateDataModel().populate(data);\n await updatedValue.validate();\n\n const existingSettings = (await storageOperations.settings.get({\n tenant: getTenantId()\n })) as FileManagerSettings;\n\n const updatedSettings: Partial<FileManagerSettings> = await updatedValue.toJSON({\n onlyDirty: true\n });\n\n return storageOperations.settings.update({\n original: existingSettings,\n data: {\n ...existingSettings,\n ...updatedSettings,\n tenant: getTenantId()\n }\n });\n },\n async deleteSettings() {\n await storageOperations.settings.delete({ tenant: getTenantId() });\n\n return true;\n }\n };\n};\n"],"mappings":";;;;;;;;AAIA;AACA;AALA;AACA;AACA;AACA;;AAMA,
|
|
1
|
+
{"version":3,"names":["_fields","require","_validation","CreateDataModel","withFields","uploadMinFileSize","number","value","validation","create","uploadMaxFileSize","srcPrefix","onSet","endsWith","string","UpdateDataModel","createSettingsCrud","storageOperations","getTenantId","getSettings","settings","get","tenant","createSettings","data","populate","validate","settingsData","toJSON","_objectSpread2","default","updateSettings","updatedValue","existingSettings","updatedSettings","onlyDirty","update","original","deleteSettings","delete","exports"],"sources":["settings.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string, number, onSet } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport { FileManagerSettings, SettingsCRUD } from \"~/types\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\nconst CreateDataModel = withFields({\n uploadMinFileSize: number({ value: 0, validation: validation.create(\"gte:0\") }),\n uploadMaxFileSize: number({ value: 10737418240 }),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string({ value: \"/files/\" }))\n})();\n\nconst UpdateDataModel = withFields({\n uploadMinFileSize: number({\n validation: validation.create(\"gte:0\")\n }),\n uploadMaxFileSize: number(),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string())\n})();\n\nexport const createSettingsCrud = ({\n storageOperations,\n getTenantId\n}: FileManagerConfig): SettingsCRUD => {\n return {\n async getSettings() {\n return storageOperations.settings.get({ tenant: getTenantId() });\n },\n async createSettings(data) {\n const settings = new CreateDataModel().populate(data);\n await settings.validate();\n\n const settingsData: FileManagerSettings = await settings.toJSON();\n\n return storageOperations.settings.create({\n data: { ...settingsData, tenant: getTenantId() }\n });\n },\n async updateSettings(data) {\n const updatedValue = new UpdateDataModel().populate(data);\n await updatedValue.validate();\n\n const existingSettings = (await storageOperations.settings.get({\n tenant: getTenantId()\n })) as FileManagerSettings;\n\n const updatedSettings: Partial<FileManagerSettings> = await updatedValue.toJSON({\n onlyDirty: true\n });\n\n return storageOperations.settings.update({\n original: existingSettings,\n data: {\n ...existingSettings,\n ...updatedSettings,\n tenant: getTenantId()\n }\n });\n },\n async deleteSettings() {\n await storageOperations.settings.delete({ tenant: getTenantId() });\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
|