@webiny/api-headless-cms 5.39.1 → 5.39.2-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.
Files changed (50) hide show
  1. package/context.js +14 -26
  2. package/context.js.map +1 -1
  3. package/crud/AccessControl/AccessControl.d.ts +98 -0
  4. package/crud/AccessControl/AccessControl.js +542 -0
  5. package/crud/AccessControl/AccessControl.js.map +1 -0
  6. package/crud/AccessControl/README.md +47 -0
  7. package/crud/AccessControl/groups-own.png +0 -0
  8. package/crud/AccessControl/models-own.png +0 -0
  9. package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +3 -3
  10. package/crud/contentEntry/entryDataFactories/createEntryData.js +21 -3
  11. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  12. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +3 -1
  13. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +54 -11
  14. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
  15. package/crud/contentEntry.crud.d.ts +2 -4
  16. package/crud/contentEntry.crud.js +106 -113
  17. package/crud/contentEntry.crud.js.map +1 -1
  18. package/crud/contentModel.crud.d.ts +2 -2
  19. package/crud/contentModel.crud.js +45 -31
  20. package/crud/contentModel.crud.js.map +1 -1
  21. package/crud/contentModelGroup.crud.d.ts +2 -2
  22. package/crud/contentModelGroup.crud.js +17 -28
  23. package/crud/contentModelGroup.crud.js.map +1 -1
  24. package/index.d.ts +2 -1
  25. package/index.js +24 -12
  26. package/index.js.map +1 -1
  27. package/package.json +19 -19
  28. package/plugins/CmsModelPlugin.d.ts +1 -1
  29. package/plugins/CmsModelPlugin.js +4 -3
  30. package/plugins/CmsModelPlugin.js.map +1 -1
  31. package/types.d.ts +12 -10
  32. package/types.js.map +1 -1
  33. package/utils/createModelField.d.ts +5 -0
  34. package/utils/createModelField.js +41 -0
  35. package/utils/createModelField.js.map +1 -0
  36. package/utils/isHeadlessCmsReady.d.ts +2 -0
  37. package/utils/isHeadlessCmsReady.js +23 -0
  38. package/utils/isHeadlessCmsReady.js.map +1 -0
  39. package/utils/access.d.ts +0 -9
  40. package/utils/access.js +0 -26
  41. package/utils/access.js.map +0 -1
  42. package/utils/permissions/EntriesPermissions.d.ts +0 -4
  43. package/utils/permissions/EntriesPermissions.js +0 -11
  44. package/utils/permissions/EntriesPermissions.js.map +0 -1
  45. package/utils/permissions/ModelGroupsPermissions.d.ts +0 -9
  46. package/utils/permissions/ModelGroupsPermissions.js +0 -50
  47. package/utils/permissions/ModelGroupsPermissions.js.map +0 -1
  48. package/utils/permissions/ModelsPermissions.d.ts +0 -22
  49. package/utils/permissions/ModelsPermissions.js +0 -90
  50. package/utils/permissions/ModelsPermissions.js.map +0 -1
package/context.js CHANGED
@@ -8,15 +8,13 @@ exports.createContextPlugin = void 0;
8
8
  var _error = _interopRequireDefault(require("@webiny/error"));
9
9
  var _api = require("@webiny/api");
10
10
  var _CmsParametersPlugin = require("./plugins/CmsParametersPlugin");
11
+ var _AccessControl = require("./crud/AccessControl/AccessControl");
11
12
  var _system = require("./crud/system.crud");
12
13
  var _contentModelGroup = require("./crud/contentModelGroup.crud");
13
14
  var _contentModel = require("./crud/contentModel.crud");
14
15
  var _contentEntry = require("./crud/contentEntry.crud");
15
16
  var _plugins = require("./plugins");
16
17
  var _valueKeyStorageConverter = require("./utils/converters/valueKeyStorageConverter");
17
- var _ModelsPermissions = require("./utils/permissions/ModelsPermissions");
18
- var _ModelGroupsPermissions = require("./utils/permissions/ModelGroupsPermissions");
19
- var _EntriesPermissions = require("./utils/permissions/EntriesPermissions");
20
18
  var _export = require("./export");
21
19
  var _importing = require("./export/crud/importing");
22
20
  const getParameters = async context => {
@@ -53,21 +51,16 @@ const createContextPlugin = ({
53
51
  context.plugins.register(new _plugins.StorageOperationsCmsModelPlugin((0, _valueKeyStorageConverter.createCmsModelFieldConvertersAttachFactory)(context.plugins)));
54
52
  await context.benchmark.measure("headlessCms.createContext", async () => {
55
53
  await storageOperations.beforeInit(context);
56
- const modelGroupsPermissions = new _ModelGroupsPermissions.ModelGroupsPermissions({
54
+ const accessControl = new _AccessControl.AccessControl({
57
55
  getIdentity: context.security.getIdentity,
58
- getPermissions: () => context.security.getPermissions("cms.contentModelGroup"),
59
- fullAccessPermissionName: "cms.*"
60
- });
61
- const modelsPermissions = new _ModelsPermissions.ModelsPermissions({
62
- getIdentity: context.security.getIdentity,
63
- getPermissions: () => context.security.getPermissions("cms.contentModel"),
64
- fullAccessPermissionName: "cms.*",
65
- modelGroupsPermissions
66
- });
67
- const entriesPermissions = new _EntriesPermissions.EntriesPermissions({
68
- getIdentity: context.security.getIdentity,
69
- getPermissions: () => context.security.getPermissions("cms.contentEntry"),
70
- fullAccessPermissionName: "cms.*"
56
+ getGroupsPermissions: () => context.security.getPermissions("cms.contentModelGroup"),
57
+ getModelsPermissions: () => context.security.getPermissions("cms.contentModel"),
58
+ getEntriesPermissions: () => context.security.getPermissions("cms.contentEntry"),
59
+ listAllGroups: () => {
60
+ return context.security.withoutAuthorization(() => {
61
+ return context.cms.listGroups();
62
+ });
63
+ }
71
64
  });
72
65
  context.cms = {
73
66
  type,
@@ -77,11 +70,7 @@ const createContextPlugin = ({
77
70
  PREVIEW: type === "preview",
78
71
  MANAGE: type === "manage",
79
72
  storageOperations,
80
- permissions: {
81
- groups: modelGroupsPermissions,
82
- models: modelsPermissions,
83
- entries: entriesPermissions
84
- },
73
+ accessControl,
85
74
  ...(0, _system.createSystemCrud)({
86
75
  context,
87
76
  getTenant,
@@ -95,7 +84,7 @@ const createContextPlugin = ({
95
84
  getLocale,
96
85
  getIdentity,
97
86
  storageOperations,
98
- modelGroupsPermissions
87
+ accessControl
99
88
  }),
100
89
  ...(0, _contentModel.createModelsCrud)({
101
90
  context,
@@ -103,7 +92,7 @@ const createContextPlugin = ({
103
92
  getTenant,
104
93
  getIdentity,
105
94
  storageOperations,
106
- modelsPermissions
95
+ accessControl
107
96
  }),
108
97
  ...(0, _contentEntry.createContentEntryCrud)({
109
98
  context,
@@ -111,8 +100,7 @@ const createContextPlugin = ({
111
100
  getTenant,
112
101
  getLocale,
113
102
  storageOperations,
114
- entriesPermissions,
115
- modelsPermissions
103
+ accessControl
116
104
  }),
117
105
  export: {
118
106
  ...(0, _export.createExportCrud)(context)
package/context.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_api","_CmsParametersPlugin","_system","_contentModelGroup","_contentModel","_contentEntry","_plugins","_valueKeyStorageConverter","_ModelsPermissions","_ModelGroupsPermissions","_EntriesPermissions","_export","_importing","getParameters","context","plugins","byType","CmsParametersPlugin","type","plugin","result","WebinyError","createContextPlugin","storageOperations","ContextPlugin","locale","getLocale","systemLocale","i18n","getIdentity","security","getTenant","tenancy","getCurrentTenant","register","StorageOperationsCmsModelPlugin","createCmsModelFieldConvertersAttachFactory","benchmark","measure","beforeInit","modelGroupsPermissions","ModelGroupsPermissions","getPermissions","fullAccessPermissionName","modelsPermissions","ModelsPermissions","entriesPermissions","EntriesPermissions","cms","READ","PREVIEW","MANAGE","permissions","groups","models","entries","createSystemCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","export","createExportCrud","importing","createImportCrud","init","name","exports"],"sources":["context.ts"],"sourcesContent":["import { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { CmsParametersPlugin, CmsParametersPluginResponse } from \"~/plugins/CmsParametersPlugin\";\nimport { createSystemCrud } from \"~/crud/system.crud\";\nimport { createModelGroupsCrud } from \"~/crud/contentModelGroup.crud\";\nimport { createModelsCrud } from \"~/crud/contentModel.crud\";\nimport { createContentEntryCrud } from \"~/crud/contentEntry.crud\";\nimport { StorageOperationsCmsModelPlugin } from \"~/plugins\";\nimport { createCmsModelFieldConvertersAttachFactory } from \"~/utils/converters/valueKeyStorageConverter\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\nimport { ModelGroupsPermissions } from \"./utils/permissions/ModelGroupsPermissions\";\nimport { EntriesPermissions } from \"./utils/permissions/EntriesPermissions\";\nimport { createExportCrud } from \"~/export\";\nimport { createImportCrud } from \"~/export/crud/importing\";\n\nconst getParameters = async (context: CmsContext): Promise<CmsParametersPluginResponse> => {\n const plugins = context.plugins.byType<CmsParametersPlugin>(CmsParametersPlugin.type);\n\n for (const plugin of plugins) {\n const result = await plugin.getParameters(context);\n if (result !== null) {\n return result;\n }\n }\n throw new WebinyError(\n \"Could not determine locale and/or type of the CMS.\",\n \"CMS_LOCALE_AND_TYPE_ERROR\"\n );\n};\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createContextPlugin = ({ storageOperations }: CrudParams) => {\n const plugin = new ContextPlugin<CmsContext>(async context => {\n const { type, locale } = await getParameters(context);\n\n const getLocale = () => {\n const systemLocale = context.i18n.getLocale(locale);\n if (!systemLocale) {\n throw new WebinyError(`There is no locale \"${locale}\" in the system.`);\n }\n return systemLocale;\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n context.plugins.register(\n new StorageOperationsCmsModelPlugin(\n createCmsModelFieldConvertersAttachFactory(context.plugins)\n )\n );\n\n await context.benchmark.measure(\"headlessCms.createContext\", async () => {\n await storageOperations.beforeInit(context);\n\n const modelGroupsPermissions = new ModelGroupsPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentModelGroup\"),\n fullAccessPermissionName: \"cms.*\"\n });\n\n const modelsPermissions = new ModelsPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentModel\"),\n fullAccessPermissionName: \"cms.*\",\n modelGroupsPermissions\n });\n\n const entriesPermissions = new EntriesPermissions({\n getIdentity: context.security.getIdentity,\n getPermissions: () => context.security.getPermissions(\"cms.contentEntry\"),\n fullAccessPermissionName: \"cms.*\"\n });\n\n context.cms = {\n type,\n locale,\n getLocale,\n READ: type === \"read\",\n PREVIEW: type === \"preview\",\n MANAGE: type === \"manage\",\n storageOperations,\n permissions: {\n groups: modelGroupsPermissions,\n models: modelsPermissions,\n entries: entriesPermissions\n },\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations,\n modelGroupsPermissions\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations,\n modelsPermissions\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n getLocale,\n storageOperations,\n entriesPermissions,\n modelsPermissions\n }),\n export: {\n ...createExportCrud(context)\n },\n importing: {\n ...createImportCrud(context)\n }\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n });\n\n plugin.name = \"cms.createContext\";\n\n return plugin;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_api","_CmsParametersPlugin","_AccessControl","_system","_contentModelGroup","_contentModel","_contentEntry","_plugins","_valueKeyStorageConverter","_export","_importing","getParameters","context","plugins","byType","CmsParametersPlugin","type","plugin","result","WebinyError","createContextPlugin","storageOperations","ContextPlugin","locale","getLocale","systemLocale","i18n","getIdentity","security","getTenant","tenancy","getCurrentTenant","register","StorageOperationsCmsModelPlugin","createCmsModelFieldConvertersAttachFactory","benchmark","measure","beforeInit","accessControl","AccessControl","getGroupsPermissions","getPermissions","getModelsPermissions","getEntriesPermissions","listAllGroups","withoutAuthorization","cms","listGroups","READ","PREVIEW","MANAGE","createSystemCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","export","createExportCrud","importing","createImportCrud","init","name","exports"],"sources":["context.ts"],"sourcesContent":["import { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { CmsParametersPlugin, CmsParametersPluginResponse } from \"~/plugins/CmsParametersPlugin\";\nimport { AccessControl } from \"~/crud/AccessControl/AccessControl\";\nimport { createSystemCrud } from \"~/crud/system.crud\";\nimport { createModelGroupsCrud } from \"~/crud/contentModelGroup.crud\";\nimport { createModelsCrud } from \"~/crud/contentModel.crud\";\nimport { createContentEntryCrud } from \"~/crud/contentEntry.crud\";\nimport { StorageOperationsCmsModelPlugin } from \"~/plugins\";\nimport { createCmsModelFieldConvertersAttachFactory } from \"~/utils/converters/valueKeyStorageConverter\";\nimport { createExportCrud } from \"~/export\";\nimport { createImportCrud } from \"~/export/crud/importing\";\n\nconst getParameters = async (context: CmsContext): Promise<CmsParametersPluginResponse> => {\n const plugins = context.plugins.byType<CmsParametersPlugin>(CmsParametersPlugin.type);\n\n for (const plugin of plugins) {\n const result = await plugin.getParameters(context);\n if (result !== null) {\n return result;\n }\n }\n throw new WebinyError(\n \"Could not determine locale and/or type of the CMS.\",\n \"CMS_LOCALE_AND_TYPE_ERROR\"\n );\n};\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createContextPlugin = ({ storageOperations }: CrudParams) => {\n const plugin = new ContextPlugin<CmsContext>(async context => {\n const { type, locale } = await getParameters(context);\n\n const getLocale = () => {\n const systemLocale = context.i18n.getLocale(locale);\n if (!systemLocale) {\n throw new WebinyError(`There is no locale \"${locale}\" in the system.`);\n }\n return systemLocale;\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n context.plugins.register(\n new StorageOperationsCmsModelPlugin(\n createCmsModelFieldConvertersAttachFactory(context.plugins)\n )\n );\n\n await context.benchmark.measure(\"headlessCms.createContext\", async () => {\n await storageOperations.beforeInit(context);\n\n const accessControl = new AccessControl({\n getIdentity: context.security.getIdentity,\n getGroupsPermissions: () =>\n context.security.getPermissions(\"cms.contentModelGroup\"),\n getModelsPermissions: () => context.security.getPermissions(\"cms.contentModel\"),\n getEntriesPermissions: () => context.security.getPermissions(\"cms.contentEntry\"),\n listAllGroups: () => {\n return context.security.withoutAuthorization(() => {\n return context.cms.listGroups();\n });\n }\n });\n\n context.cms = {\n type,\n locale,\n getLocale,\n READ: type === \"read\",\n PREVIEW: type === \"preview\",\n MANAGE: type === \"manage\",\n storageOperations,\n accessControl,\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations,\n accessControl\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations,\n accessControl\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n getLocale,\n storageOperations,\n accessControl\n }),\n export: {\n ...createExportCrud(context)\n },\n importing: {\n ...createImportCrud(context)\n }\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n });\n\n plugin.name = \"cms.createContext\";\n\n return plugin;\n};\n"],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { SecurityIdentity } from "@webiny/api-security/types";
2
+ import { CmsEntry, CmsEntryPermission, CmsGroup, CmsGroupPermission, CmsModel, CmsModelPermission } from "../../types";
3
+ export interface AccessControlParams {
4
+ getIdentity: () => SecurityIdentity | Promise<SecurityIdentity>;
5
+ getGroupsPermissions: () => CmsGroupPermission[] | Promise<CmsGroupPermission[]>;
6
+ getModelsPermissions: () => CmsModelPermission[] | Promise<CmsModelPermission[]>;
7
+ getEntriesPermissions: () => CmsEntryPermission[] | Promise<CmsEntryPermission[]>;
8
+ listAllGroups: () => Promise<CmsGroup[]>;
9
+ }
10
+ interface GetGroupsAccessControlListParams {
11
+ group?: CmsGroup;
12
+ }
13
+ interface CanAccessGroupParams extends GetGroupsAccessControlListParams {
14
+ rwd?: string;
15
+ }
16
+ interface GetModelsAccessControlListParams {
17
+ model?: CmsModel;
18
+ }
19
+ interface CanAccessModelParams extends GetModelsAccessControlListParams {
20
+ rwd?: string;
21
+ }
22
+ interface GetEntriesAccessControlListParams {
23
+ model: CmsModel;
24
+ entry?: CmsEntry;
25
+ }
26
+ interface CanAccessEntryParams extends GetEntriesAccessControlListParams {
27
+ rwd?: string;
28
+ pw?: string;
29
+ }
30
+ interface AccessControlEntry {
31
+ rwd: string;
32
+ canAccessNonOwned: boolean;
33
+ canAccessOnlyOwned: boolean;
34
+ }
35
+ declare type AccessControlList = AccessControlEntry[];
36
+ interface EntriesAccessControlEntry extends AccessControlEntry {
37
+ pw?: string;
38
+ }
39
+ declare type EntriesAccessControlList = EntriesAccessControlEntry[];
40
+ export declare class AccessControl {
41
+ getIdentity: AccessControlParams["getIdentity"];
42
+ getGroupsPermissions: AccessControlParams["getGroupsPermissions"];
43
+ getModelsPermissions: AccessControlParams["getModelsPermissions"];
44
+ getEntriesPermissions: AccessControlParams["getEntriesPermissions"];
45
+ listAllGroupsCallback: AccessControlParams["listAllGroups"];
46
+ private fullAccessPermissions;
47
+ private allGroups;
48
+ constructor({ getIdentity, getGroupsPermissions, getModelsPermissions, getEntriesPermissions, listAllGroups }: AccessControlParams);
49
+ /**
50
+ * Groups-related methods below. 👇
51
+ * - canAccessGroup
52
+ * - ensureCanAccessGroup
53
+ * - canAccessNonOwnedGroups
54
+ * - canAccessOnlyOwnedGroups
55
+ * - getGroupsAccessControlList
56
+ * - hasFullAccessToGroups
57
+ */
58
+ canAccessGroup(params?: CanAccessGroupParams): Promise<boolean>;
59
+ ensureCanAccessGroup(params?: CanAccessGroupParams): Promise<void>;
60
+ canAccessNonOwnedGroups(params: GetGroupsAccessControlListParams): Promise<boolean>;
61
+ canAccessOnlyOwnedGroups(params: GetGroupsAccessControlListParams): Promise<boolean>;
62
+ getGroupsAccessControlList(params: GetGroupsAccessControlListParams): Promise<AccessControlList>;
63
+ hasFullAccessToGroups(): Promise<boolean>;
64
+ /**
65
+ * Models-related methods below. 👇
66
+ * - canAccessModel
67
+ * - ensureCanAccessModel
68
+ * - canAccessNonOwnedModels
69
+ * - canAccessOnlyOwnedModels
70
+ * - getModelsAccessControlList
71
+ * - hasFullAccessToModels
72
+ */
73
+ canAccessModel(params: CanAccessModelParams): Promise<boolean>;
74
+ ensureCanAccessModel(params?: CanAccessModelParams): Promise<void>;
75
+ canAccessNonOwnedModels(params: GetModelsAccessControlListParams): Promise<boolean>;
76
+ canAccessOnlyOwnedModels(params: GetModelsAccessControlListParams): Promise<boolean>;
77
+ getModelsAccessControlList(params: GetModelsAccessControlListParams): Promise<AccessControlList>;
78
+ hasFullAccessToModels(params: GetModelsAccessControlListParams): Promise<boolean>;
79
+ /**
80
+ * Entries-related methods below. 👇
81
+ * - canAccessEntry
82
+ * - ensureCanAccessEntry
83
+ * - canAccessNonOwnedEntries
84
+ * - canAccessOnlyOwnedEntries
85
+ * - getEntriesAccessControlList
86
+ * - hasFullAccessToEntries
87
+ */
88
+ canAccessEntry(params: CanAccessEntryParams): Promise<boolean>;
89
+ ensureCanAccessEntry(params: CanAccessEntryParams): Promise<void>;
90
+ canAccessNonOwnedEntries(params: GetEntriesAccessControlListParams): Promise<boolean>;
91
+ canAccessOnlyOwnedEntries(params: GetEntriesAccessControlListParams): Promise<boolean>;
92
+ getEntriesAccessControlList(params: GetEntriesAccessControlListParams): Promise<EntriesAccessControlList>;
93
+ hasFullAccessToEntries(params: GetEntriesAccessControlListParams): Promise<boolean>;
94
+ private modelAuthorizationDisabled;
95
+ listAllGroups(): Promise<CmsGroup[]>;
96
+ getGroup(id: string): Promise<CmsGroup | undefined>;
97
+ }
98
+ export {};