@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.
- package/context.js +14 -26
- package/context.js.map +1 -1
- package/crud/AccessControl/AccessControl.d.ts +98 -0
- package/crud/AccessControl/AccessControl.js +542 -0
- package/crud/AccessControl/AccessControl.js.map +1 -0
- package/crud/AccessControl/README.md +47 -0
- package/crud/AccessControl/groups-own.png +0 -0
- package/crud/AccessControl/models-own.png +0 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +3 -3
- package/crud/contentEntry/entryDataFactories/createEntryData.js +21 -3
- package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +3 -1
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +54 -11
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
- package/crud/contentEntry.crud.d.ts +2 -4
- package/crud/contentEntry.crud.js +106 -113
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel.crud.d.ts +2 -2
- package/crud/contentModel.crud.js +45 -31
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup.crud.d.ts +2 -2
- package/crud/contentModelGroup.crud.js +17 -28
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/index.d.ts +2 -1
- package/index.js +24 -12
- package/index.js.map +1 -1
- package/package.json +19 -19
- package/plugins/CmsModelPlugin.d.ts +1 -1
- package/plugins/CmsModelPlugin.js +4 -3
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/types.d.ts +12 -10
- package/types.js.map +1 -1
- package/utils/createModelField.d.ts +5 -0
- package/utils/createModelField.js +41 -0
- package/utils/createModelField.js.map +1 -0
- package/utils/isHeadlessCmsReady.d.ts +2 -0
- package/utils/isHeadlessCmsReady.js +23 -0
- package/utils/isHeadlessCmsReady.js.map +1 -0
- package/utils/access.d.ts +0 -9
- package/utils/access.js +0 -26
- package/utils/access.js.map +0 -1
- package/utils/permissions/EntriesPermissions.d.ts +0 -4
- package/utils/permissions/EntriesPermissions.js +0 -11
- package/utils/permissions/EntriesPermissions.js.map +0 -1
- package/utils/permissions/ModelGroupsPermissions.d.ts +0 -9
- package/utils/permissions/ModelGroupsPermissions.js +0 -50
- package/utils/permissions/ModelGroupsPermissions.js.map +0 -1
- package/utils/permissions/ModelsPermissions.d.ts +0 -22
- package/utils/permissions/ModelsPermissions.js +0 -90
- 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
|
|
54
|
+
const accessControl = new _AccessControl.AccessControl({
|
|
57
55
|
getIdentity: context.security.getIdentity,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {};
|