@umbraco/playwright-testhelpers 18.0.1 → 18.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/helpers/ConstantHelper.d.ts +12 -1
- package/dist/lib/helpers/ConstantHelper.js +12 -1
- package/dist/lib/helpers/ConstantHelper.js.map +1 -1
- package/dist/lib/helpers/ContentUiHelper.js +3 -3
- package/dist/lib/helpers/ContentUiHelper.js.map +1 -1
- package/dist/lib/helpers/LibraryUiHelper.d.ts +3 -0
- package/dist/lib/helpers/LibraryUiHelper.js +12 -0
- package/dist/lib/helpers/LibraryUiHelper.js.map +1 -1
- package/dist/lib/helpers/UserGroupApiHelper.d.ts +11 -1
- package/dist/lib/helpers/UserGroupApiHelper.js +184 -4
- package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
- package/dist/lib/helpers/UserGroupUiHelper.d.ts +10 -5
- package/dist/lib/helpers/UserGroupUiHelper.js +32 -10
- package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -45,7 +45,7 @@ export declare class UserGroupApiHelper {
|
|
|
45
45
|
doesUserGroupContainMediaStartNodeId(userGroupName: string, mediaStartNodeId: string): Promise<any>;
|
|
46
46
|
doesUserGroupContainGranularPermissionsForDocument(userGroupName: string, documentId: string, granularPermissions: string[]): Promise<boolean>;
|
|
47
47
|
doesUserGroupHaveFallbackPermissions(userGroupName: string, permissions: string[]): Promise<boolean>;
|
|
48
|
-
|
|
48
|
+
convertApiDocumentPermissionsToUiDocumentPermissions(apiPermissions: string[]): Promise<any[]>;
|
|
49
49
|
convertApiSectionsToUiSections(apiSections: string[]): Promise<any[]>;
|
|
50
50
|
doesUserGroupHaveSections(userGroupName: string, sections: string[]): Promise<boolean>;
|
|
51
51
|
createUserGroupWithReadDocumentPermissionAndReadPropertyValueDocumentPermission(name: string, readEnabled?: boolean, readPropertyValueEnabled?: boolean): Promise<string | undefined>;
|
|
@@ -81,5 +81,15 @@ export declare class UserGroupApiHelper {
|
|
|
81
81
|
doesUserGroupContainElementStartNodeId(userGroupName: string, elementStartNodeId: string): Promise<any>;
|
|
82
82
|
doesUserGroupContainElementRootAccess(userGroupName: string): Promise<any>;
|
|
83
83
|
createUserGroupWithElementStartNode(name: string, startNodeId: string): Promise<string | undefined>;
|
|
84
|
+
createUserGroupWithReadPermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
85
|
+
createUserGroupWithDeletePermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
86
|
+
createUserGroupWithPublishPermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
87
|
+
createUserGroupWithUnpublishPermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
88
|
+
createUserGroupWithUpdatePermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
89
|
+
createUserGroupWithDuplicatePermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
90
|
+
createUserGroupWithMovePermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
91
|
+
createUserGroupWithRollbackPermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
92
|
+
createUserGroupWithCreatePermissionForSpecificElement(name: string, elementId: string, enabled?: boolean): Promise<string | undefined>;
|
|
84
93
|
createSimpleUserGroupWithLibrarySection(name: string): Promise<string | undefined>;
|
|
94
|
+
convertApiElementPermissionsToUiElementPermissions(apiPermissions: string[]): Promise<any[]>;
|
|
85
95
|
}
|
|
@@ -448,11 +448,11 @@ class UserGroupApiHelper {
|
|
|
448
448
|
}
|
|
449
449
|
return permissions.every(item => fallbackPermissions.includes(item));
|
|
450
450
|
}
|
|
451
|
-
async
|
|
451
|
+
async convertApiDocumentPermissionsToUiDocumentPermissions(apiPermissions) {
|
|
452
452
|
return apiPermissions.map(permission => {
|
|
453
|
-
for (const key in ConstantHelper_1.ConstantHelper.
|
|
454
|
-
if (ConstantHelper_1.ConstantHelper.
|
|
455
|
-
return ConstantHelper_1.ConstantHelper.
|
|
453
|
+
for (const key in ConstantHelper_1.ConstantHelper.userGroupDocumentPermissionsSettings) {
|
|
454
|
+
if (ConstantHelper_1.ConstantHelper.userGroupDocumentPermissionsSettings[key][2].toLowerCase() === permission.toLowerCase()) {
|
|
455
|
+
return ConstantHelper_1.ConstantHelper.userGroupDocumentPermissionsSettings[key][0];
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
return null;
|
|
@@ -1008,6 +1008,176 @@ class UserGroupApiHelper {
|
|
|
1008
1008
|
.build();
|
|
1009
1009
|
return await this.create(userGroup);
|
|
1010
1010
|
}
|
|
1011
|
+
async createUserGroupWithReadPermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1012
|
+
await this.ensureNameNotExists(name);
|
|
1013
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1014
|
+
.withName(name)
|
|
1015
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1016
|
+
.withElementRootAccess(true)
|
|
1017
|
+
.addPermissions()
|
|
1018
|
+
.addElementPermission()
|
|
1019
|
+
.withElementId(elementId)
|
|
1020
|
+
.addVerbs()
|
|
1021
|
+
.withReadElementPermission(enabled)
|
|
1022
|
+
.done()
|
|
1023
|
+
.done()
|
|
1024
|
+
.done()
|
|
1025
|
+
.build();
|
|
1026
|
+
return await this.create(userGroup);
|
|
1027
|
+
}
|
|
1028
|
+
async createUserGroupWithDeletePermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1029
|
+
await this.ensureNameNotExists(name);
|
|
1030
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1031
|
+
.withName(name)
|
|
1032
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1033
|
+
.withElementRootAccess(true)
|
|
1034
|
+
.addPermissions()
|
|
1035
|
+
.addElementPermission()
|
|
1036
|
+
.withElementId(elementId)
|
|
1037
|
+
.addVerbs()
|
|
1038
|
+
.withDeleteElementPermission(enabled)
|
|
1039
|
+
.withReadElementPermission(true)
|
|
1040
|
+
.done()
|
|
1041
|
+
.done()
|
|
1042
|
+
.done()
|
|
1043
|
+
.build();
|
|
1044
|
+
return await this.create(userGroup);
|
|
1045
|
+
}
|
|
1046
|
+
async createUserGroupWithPublishPermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1047
|
+
await this.ensureNameNotExists(name);
|
|
1048
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1049
|
+
.withName(name)
|
|
1050
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1051
|
+
.withElementRootAccess(true)
|
|
1052
|
+
.addPermissions()
|
|
1053
|
+
.addElementPermission()
|
|
1054
|
+
.withElementId(elementId)
|
|
1055
|
+
.addVerbs()
|
|
1056
|
+
.withPublishElementPermission(enabled)
|
|
1057
|
+
.withReadElementPermission(true)
|
|
1058
|
+
.done()
|
|
1059
|
+
.done()
|
|
1060
|
+
.done()
|
|
1061
|
+
.build();
|
|
1062
|
+
return await this.create(userGroup);
|
|
1063
|
+
}
|
|
1064
|
+
async createUserGroupWithUnpublishPermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1065
|
+
await this.ensureNameNotExists(name);
|
|
1066
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1067
|
+
.withName(name)
|
|
1068
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1069
|
+
.withElementRootAccess(true)
|
|
1070
|
+
.addPermissions()
|
|
1071
|
+
.addElementPermission()
|
|
1072
|
+
.withElementId(elementId)
|
|
1073
|
+
.addVerbs()
|
|
1074
|
+
.withUnpublishElementPermission(enabled)
|
|
1075
|
+
.withReadElementPermission(true)
|
|
1076
|
+
.done()
|
|
1077
|
+
.done()
|
|
1078
|
+
.done()
|
|
1079
|
+
.build();
|
|
1080
|
+
return await this.create(userGroup);
|
|
1081
|
+
}
|
|
1082
|
+
async createUserGroupWithUpdatePermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1083
|
+
await this.ensureNameNotExists(name);
|
|
1084
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1085
|
+
.withName(name)
|
|
1086
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1087
|
+
.withElementRootAccess(true)
|
|
1088
|
+
.addFallbackPermission()
|
|
1089
|
+
.withReadElementPermission(true)
|
|
1090
|
+
.done()
|
|
1091
|
+
.addPermissions()
|
|
1092
|
+
.addElementPermission()
|
|
1093
|
+
.withElementId(elementId)
|
|
1094
|
+
.addVerbs()
|
|
1095
|
+
.withUpdateElementPermission(enabled)
|
|
1096
|
+
.withReadElementPermission(true)
|
|
1097
|
+
.done()
|
|
1098
|
+
.done()
|
|
1099
|
+
.done()
|
|
1100
|
+
.build();
|
|
1101
|
+
return await this.create(userGroup);
|
|
1102
|
+
}
|
|
1103
|
+
async createUserGroupWithDuplicatePermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1104
|
+
await this.ensureNameNotExists(name);
|
|
1105
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1106
|
+
.withName(name)
|
|
1107
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1108
|
+
.withElementRootAccess(true)
|
|
1109
|
+
.addFallbackPermission()
|
|
1110
|
+
.withCreateElementPermission(true)
|
|
1111
|
+
.done()
|
|
1112
|
+
.addPermissions()
|
|
1113
|
+
.addElementPermission()
|
|
1114
|
+
.withElementId(elementId)
|
|
1115
|
+
.addVerbs()
|
|
1116
|
+
.withDuplicateElementPermission(enabled)
|
|
1117
|
+
.withReadElementPermission(true)
|
|
1118
|
+
.done()
|
|
1119
|
+
.done()
|
|
1120
|
+
.done()
|
|
1121
|
+
.build();
|
|
1122
|
+
return await this.create(userGroup);
|
|
1123
|
+
}
|
|
1124
|
+
async createUserGroupWithMovePermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1125
|
+
await this.ensureNameNotExists(name);
|
|
1126
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1127
|
+
.withName(name)
|
|
1128
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1129
|
+
.withElementRootAccess(true)
|
|
1130
|
+
.addFallbackPermission()
|
|
1131
|
+
.withCreateElementPermission(true)
|
|
1132
|
+
.done()
|
|
1133
|
+
.addPermissions()
|
|
1134
|
+
.addElementPermission()
|
|
1135
|
+
.withElementId(elementId)
|
|
1136
|
+
.addVerbs()
|
|
1137
|
+
.withMoveElementPermission(enabled)
|
|
1138
|
+
.withReadElementPermission(true)
|
|
1139
|
+
.done()
|
|
1140
|
+
.done()
|
|
1141
|
+
.done()
|
|
1142
|
+
.build();
|
|
1143
|
+
return await this.create(userGroup);
|
|
1144
|
+
}
|
|
1145
|
+
async createUserGroupWithRollbackPermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1146
|
+
await this.ensureNameNotExists(name);
|
|
1147
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1148
|
+
.withName(name)
|
|
1149
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1150
|
+
.withElementRootAccess(true)
|
|
1151
|
+
.addPermissions()
|
|
1152
|
+
.addElementPermission()
|
|
1153
|
+
.withElementId(elementId)
|
|
1154
|
+
.addVerbs()
|
|
1155
|
+
.withRollbackElementPermission(enabled)
|
|
1156
|
+
.withReadElementPermission(true)
|
|
1157
|
+
.done()
|
|
1158
|
+
.done()
|
|
1159
|
+
.done()
|
|
1160
|
+
.build();
|
|
1161
|
+
return await this.create(userGroup);
|
|
1162
|
+
}
|
|
1163
|
+
async createUserGroupWithCreatePermissionForSpecificElement(name, elementId, enabled = true) {
|
|
1164
|
+
await this.ensureNameNotExists(name);
|
|
1165
|
+
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
1166
|
+
.withName(name)
|
|
1167
|
+
.addSection(ConstantHelper_1.ConstantHelper.sectionAliases.library)
|
|
1168
|
+
.withElementRootAccess(true)
|
|
1169
|
+
.addPermissions()
|
|
1170
|
+
.addElementPermission()
|
|
1171
|
+
.withElementId(elementId)
|
|
1172
|
+
.addVerbs()
|
|
1173
|
+
.withCreateElementPermission(enabled)
|
|
1174
|
+
.withReadElementPermission(true)
|
|
1175
|
+
.done()
|
|
1176
|
+
.done()
|
|
1177
|
+
.done()
|
|
1178
|
+
.build();
|
|
1179
|
+
return await this.create(userGroup);
|
|
1180
|
+
}
|
|
1011
1181
|
async createSimpleUserGroupWithLibrarySection(name) {
|
|
1012
1182
|
await this.ensureNameNotExists(name);
|
|
1013
1183
|
const userGroup = new json_models_builders_1.UserGroupBuilder()
|
|
@@ -1019,6 +1189,16 @@ class UserGroupApiHelper {
|
|
|
1019
1189
|
.build();
|
|
1020
1190
|
return await this.create(userGroup);
|
|
1021
1191
|
}
|
|
1192
|
+
async convertApiElementPermissionsToUiElementPermissions(apiPermissions) {
|
|
1193
|
+
return apiPermissions.map(permission => {
|
|
1194
|
+
for (const key in ConstantHelper_1.ConstantHelper.userGroupElementPermissionsSettings) {
|
|
1195
|
+
if (ConstantHelper_1.ConstantHelper.userGroupElementPermissionsSettings[key][2].toLowerCase() === permission.toLowerCase()) {
|
|
1196
|
+
return ConstantHelper_1.ConstantHelper.userGroupElementPermissionsSettings[key][0];
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
return null;
|
|
1200
|
+
});
|
|
1201
|
+
}
|
|
1022
1202
|
}
|
|
1023
1203
|
exports.UserGroupApiHelper = UserGroupApiHelper;
|
|
1024
1204
|
//# sourceMappingURL=UserGroupApiHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserGroupApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/UserGroupApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {UserGroupBuilder} from \"@umbraco/json-models-builders\";\nimport {ConstantHelper} from \"./ConstantHelper\";\n\nexport class UserGroupApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExists(name: string) {\n const json = await this.getAll();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + sb.id);\n }\n }\n }\n return null;\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id);\n return response.status() === 200;\n }\n\n async create(userGroupData) {\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/user-group', userGroupData);\n // Returns the id of the userGroup\n return response.headers().location.split(\"/\").pop();\n }\n\n async getByName(name: string) {\n const json = await this.getAll();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + sb.id);\n return await response.json();\n }\n }\n }\n return null;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async getAll() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group?skip=0&take=10000');\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async update(id: string, userGroup) {\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id, userGroup);\n return response.text();\n }\n\n async doesNameExist(name: string) {\n const json = await this.getAll();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n return true;\n }\n }\n return false;\n }\n \n async doesUserGroupContainLanguage(userGroupName: string, languageName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.languages.includes(languageName);\n }\n\n async doesUserGroupContainAccessToAllLanguages(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.hasAccessToAllLanguages;\n }\n\n async doesUserGroupContainDocumentRootAccess(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.documentRootAccess;\n }\n\n async doesUserGroupContainMediaRootAccess(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.mediaRootAccess;\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id);\n }\n\n async createEmptyUserGroup(name: string, description: string = '') {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .withDescription(description)\n .build();\n\n return await this.create(userGroup);\n }\n\n async createSimpleUserGroupWithContentSection(name: string, description: string = '') {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .withDescription(description)\n .addSection(ConstantHelper.sectionAliases.content)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createSimpleUserGroupWithMediaSection(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.media)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDocumentAccess(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .withDocumentRootAccess(true)\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDocumentStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(false)\n .withDocumentStartNodeId(startNodeId)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithMediaStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.media)\n .withMediaRootAccess(false)\n .withMediaStartNodeId(startNodeId)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithLanguage(name: string, languageName: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addLanguage(languageName)\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithLanguageAndContentSection(name: string, languageName: string) {\n await this.ensureNameNotExists(name);\n \n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .addLanguage(languageName)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .withUpdateDocumentPermission(true)\n .withReadPropertyValueDocumentPermission(true)\n .withWritePropertyValueDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithMemberSection(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.members)\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPermissionsForSpecificDocumentWithRead(name: string, documentId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithReadDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(enabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCreateDocumentBlueprintPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentBlueprintPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDeleteDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withDeleteDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCreateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithNotificationsDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withNotificationsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublishDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withPublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSetPermissionsDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withSetPermissionsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUnpublishDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withUnpublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUpdateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withUpdateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDuplicateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withDuplicateDocumentPermission(enabled)\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithMoveToDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withMoveToDocumentPermission(enabled)\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSortChildrenDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withSortChildrenDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCultureAndHostnamesDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCultureAndHostnamesDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublicAccessDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .addSection(ConstantHelper.sectionAliases.members)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withPublicAccessDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithRollbackDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withRollbackDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .withReadPropertyValueDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDeleteDocumentPermissionAndCreateDocumentPermission(name: string, deleteEnabled: boolean = true, createEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withDeleteDocumentPermission(deleteEnabled)\n .withCreateDocumentPermission(createEnabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async doesUserGroupContainContentStartNodeId(userGroupName: string, documentStartNodeId: string) {\n const userGroup = await this.getByName(userGroupName);\n if (userGroup.documentStartNode === null) {\n return false;\n }\n return userGroup.documentStartNode.id.includes(documentStartNodeId);\n }\n\n async doesUserGroupContainMediaStartNodeId(userGroupName: string, mediaStartNodeId: string) {\n const userGroup = await this.getByName(userGroupName);\n if (userGroup.mediaStartNode === null) {\n return false;\n }\n return userGroup.mediaStartNode.id.includes(mediaStartNodeId);\n }\n\n async doesUserGroupContainGranularPermissionsForDocument(userGroupName: string, documentId: string, granularPermissions : string[]) {\n const userGroup = await this.getByName(userGroupName);\n for (const permission of userGroup.permissions) {\n if (permission.document.id === documentId) {\n for (const verb of permission.verbs) {\n if (!granularPermissions.includes(verb)) {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n }\n\n async doesUserGroupHaveFallbackPermissions(userGroupName: string, permissions: string[]) {\n const userGroup = await this.getByName(userGroupName);\n const fallbackPermissions = userGroup.fallbackPermissions;\n if (permissions.length !== fallbackPermissions.length) {\n return false;\n }\n return permissions.every(item => fallbackPermissions.includes(item));\n }\n\n async convertApiPermissionsToUiPermissions(apiPermissions: string[]) {\n return apiPermissions.map(permission => {\n for (const key in ConstantHelper.userGroupPermissionsSettings) {\n if (ConstantHelper.userGroupPermissionsSettings[key][2].toLowerCase() === permission.toLowerCase()) {\n return ConstantHelper.userGroupPermissionsSettings[key][0];\n }\n }\n return null;\n });\n }\n\n async convertApiSectionsToUiSections(apiSections: string[]) {\n return apiSections.map(permission => {\n for (const key in ConstantHelper.userGroupSectionsSettings) {\n if (ConstantHelper.userGroupSectionsSettings[key][1].toLowerCase() === permission.toLowerCase()) {\n return ConstantHelper.userGroupSectionsSettings[key][0];\n }\n }\n return null;\n });\n }\n\n async doesUserGroupHaveSections(userGroupName: string, sections: string[]) {\n const userGroup = await this.getByName(userGroupName);\n const sectionsData = userGroup.sections;\n if (sectionsData.length !== sections.length) {\n return false;\n }\n return sections.every(item => sectionsData.includes(item));\n }\n\n async createUserGroupWithReadDocumentPermissionAndReadPropertyValueDocumentPermission(name: string, readEnabled: boolean = true, readPropertyValueEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(readEnabled)\n .withReadPropertyValueDocumentPermission(readPropertyValueEnabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUpdateDocumentPermissionAndWritePropertyValueDocumentPermission(name: string, updateEnabled: boolean = true, writePropertyValueEnabled: boolean = true, readPropertyValueEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withUpdateDocumentPermission(updateEnabled)\n .withReadDocumentPermission(true)\n .withWritePropertyValueDocumentPermission(writePropertyValueEnabled)\n .withReadPropertyValueDocumentPermission(readPropertyValueEnabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithPermissionsForSpecificDocumentAndTwoPropertyValues(name: string, documentId: string, documentTypeId: string, firstPropertyValueName: string, readFirstPropertyValueEnabled: boolean = true, writeFirstPropertyValueEnabled: boolean = true, secondPropertyValueName: string, readSecondPropertyValueEnabled: boolean = true, writeSecondPropertyValueEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n const firstPropertyValueId = await this.api.documentType.getPropertyIdWithName(documentTypeId, firstPropertyValueName);\n const secondPropertyValueId = await this.api.documentType.getPropertyIdWithName(documentTypeId, secondPropertyValueName);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withReadDocumentPermission(true)\n .withUpdateDocumentPermission(true)\n .done()\n .done()\n .addPropertyValuePermission()\n .withDocumentTypeId(documentTypeId)\n .withPropertyTypeId(firstPropertyValueId)\n .addVerbs()\n .withReadPropertyValueDocumentPermission(readFirstPropertyValueEnabled)\n .withWritePropertyValueDocumentPermission(writeFirstPropertyValueEnabled)\n .done()\n .done()\n .addPropertyValuePermission()\n .withDocumentTypeId(documentTypeId)\n .withPropertyTypeId(secondPropertyValueId)\n .addVerbs()\n .withReadPropertyValueDocumentPermission(readSecondPropertyValueEnabled)\n .withWritePropertyValueDocumentPermission(writeSecondPropertyValueEnabled)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithReadPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withReadDocumentPermission(enabled)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateDocumentBlueprintPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withCreateDocumentBlueprintPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDeletePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withDeleteDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreatePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithNotificationsPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withNotificationsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublishPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withPublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSetPermissionsPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withSetPermissionsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUnpublishPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withUnpublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUpdatePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withUpdateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDuplicatePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(true) // need to have the 'create' permission - refer this PR: https://github.com/umbraco/Umbraco-CMS/pull/19303\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withDuplicateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithMoveToPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(true) // need to have the 'create' permission - refer this PR: https://github.com/umbraco/Umbraco-CMS/pull/19303\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withMoveToDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSortChildrenPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withSortChildrenDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCultureAndHostnamesPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withCultureAndHostnamesDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublicAccessPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .addSection(ConstantHelper.sectionAliases.members)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withPublicAccessDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithRollbackPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadPropertyValueDocumentPermission(true)\n .withWritePropertyValueDocumentPermission(true)\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withRollbackDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateAndUpdateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(enabled)\n .withUpdateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n // Element permission methods\n async createUserGroupWithReadElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withReadElementPermission(enabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withCreateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDeleteElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withDeleteElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithPublishElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withPublishElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUnpublishElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withUnpublishElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUpdateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withUpdateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDuplicateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withDuplicateElementPermission(enabled)\n .withCreateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithMoveElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withMoveElementPermission(enabled)\n .withCreateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithRollbackElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withRollbackElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDeleteElementPermissionAndCreateElementPermission(name: string, deleteEnabled: boolean = true, createEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withDeleteElementPermission(deleteEnabled)\n .withCreateElementPermission(createEnabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateAndUpdateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withCreateElementPermission(enabled)\n .withUpdateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async doesUserGroupContainElementStartNodeId(userGroupName: string, elementStartNodeId: string) {\n const userGroup = await this.getByName(userGroupName);\n if (userGroup.elementStartNode === null) {\n return false;\n }\n return userGroup.elementStartNode.id.includes(elementStartNodeId);\n }\n\n async doesUserGroupContainElementRootAccess(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.elementRootAccess;\n }\n\n async createUserGroupWithElementStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(false)\n .withElementStartNodeId(startNodeId)\n .addFallbackPermission()\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createSimpleUserGroupWithLibrarySection(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .addFallbackPermission()\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"UserGroupApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/UserGroupApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\nimport {UserGroupBuilder} from \"@umbraco/json-models-builders\";\nimport {ConstantHelper} from \"./ConstantHelper\";\n\nexport class UserGroupApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExists(name: string) {\n const json = await this.getAll();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + sb.id);\n }\n }\n }\n return null;\n }\n\n async doesExist(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id);\n return response.status() === 200;\n }\n\n async create(userGroupData) {\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/user-group', userGroupData);\n // Returns the id of the userGroup\n return response.headers().location.split(\"/\").pop();\n }\n\n async getByName(name: string) {\n const json = await this.getAll();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.id !== null) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + sb.id);\n return await response.json();\n }\n }\n }\n return null;\n }\n\n async get(id: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async getAll() {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/user-group?skip=0&take=10000');\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async update(id: string, userGroup) {\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id, userGroup);\n return response.text();\n }\n\n async doesNameExist(name: string) {\n const json = await this.getAll();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n return true;\n }\n }\n return false;\n }\n \n async doesUserGroupContainLanguage(userGroupName: string, languageName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.languages.includes(languageName);\n }\n\n async doesUserGroupContainAccessToAllLanguages(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.hasAccessToAllLanguages;\n }\n\n async doesUserGroupContainDocumentRootAccess(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.documentRootAccess;\n }\n\n async doesUserGroupContainMediaRootAccess(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.mediaRootAccess;\n }\n\n async delete(id: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/user-group/' + id);\n }\n\n async createEmptyUserGroup(name: string, description: string = '') {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .withDescription(description)\n .build();\n\n return await this.create(userGroup);\n }\n\n async createSimpleUserGroupWithContentSection(name: string, description: string = '') {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .withDescription(description)\n .addSection(ConstantHelper.sectionAliases.content)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createSimpleUserGroupWithMediaSection(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.media)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDocumentAccess(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .withDocumentRootAccess(true)\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDocumentStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(false)\n .withDocumentStartNodeId(startNodeId)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithMediaStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.media)\n .withMediaRootAccess(false)\n .withMediaStartNodeId(startNodeId)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithLanguage(name: string, languageName: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addLanguage(languageName)\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithLanguageAndContentSection(name: string, languageName: string) {\n await this.ensureNameNotExists(name);\n \n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .addLanguage(languageName)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .withUpdateDocumentPermission(true)\n .withReadPropertyValueDocumentPermission(true)\n .withWritePropertyValueDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithMemberSection(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.members)\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPermissionsForSpecificDocumentWithRead(name: string, documentId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithReadDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(enabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCreateDocumentBlueprintPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentBlueprintPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDeleteDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withDeleteDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCreateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithNotificationsDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withNotificationsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublishDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withPublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSetPermissionsDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withSetPermissionsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUnpublishDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withUnpublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUpdateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withUpdateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDuplicateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withDuplicateDocumentPermission(enabled)\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithMoveToDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withMoveToDocumentPermission(enabled)\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSortChildrenDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withSortChildrenDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCultureAndHostnamesDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCultureAndHostnamesDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublicAccessDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .addSection(ConstantHelper.sectionAliases.members)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withPublicAccessDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithRollbackDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withRollbackDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .withReadPropertyValueDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDeleteDocumentPermissionAndCreateDocumentPermission(name: string, deleteEnabled: boolean = true, createEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withDeleteDocumentPermission(deleteEnabled)\n .withCreateDocumentPermission(createEnabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async doesUserGroupContainContentStartNodeId(userGroupName: string, documentStartNodeId: string) {\n const userGroup = await this.getByName(userGroupName);\n if (userGroup.documentStartNode === null) {\n return false;\n }\n return userGroup.documentStartNode.id.includes(documentStartNodeId);\n }\n\n async doesUserGroupContainMediaStartNodeId(userGroupName: string, mediaStartNodeId: string) {\n const userGroup = await this.getByName(userGroupName);\n if (userGroup.mediaStartNode === null) {\n return false;\n }\n return userGroup.mediaStartNode.id.includes(mediaStartNodeId);\n }\n\n async doesUserGroupContainGranularPermissionsForDocument(userGroupName: string, documentId: string, granularPermissions : string[]) {\n const userGroup = await this.getByName(userGroupName);\n for (const permission of userGroup.permissions) {\n if (permission.document.id === documentId) {\n for (const verb of permission.verbs) {\n if (!granularPermissions.includes(verb)) {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n }\n\n async doesUserGroupHaveFallbackPermissions(userGroupName: string, permissions: string[]) {\n const userGroup = await this.getByName(userGroupName);\n const fallbackPermissions = userGroup.fallbackPermissions;\n if (permissions.length !== fallbackPermissions.length) {\n return false;\n }\n return permissions.every(item => fallbackPermissions.includes(item));\n }\n\n async convertApiDocumentPermissionsToUiDocumentPermissions(apiPermissions: string[]) {\n return apiPermissions.map(permission => {\n for (const key in ConstantHelper.userGroupDocumentPermissionsSettings) {\n if (ConstantHelper.userGroupDocumentPermissionsSettings[key][2].toLowerCase() === permission.toLowerCase()) {\n return ConstantHelper.userGroupDocumentPermissionsSettings[key][0];\n }\n }\n return null;\n });\n }\n\n async convertApiSectionsToUiSections(apiSections: string[]) {\n return apiSections.map(permission => {\n for (const key in ConstantHelper.userGroupSectionsSettings) {\n if (ConstantHelper.userGroupSectionsSettings[key][1].toLowerCase() === permission.toLowerCase()) {\n return ConstantHelper.userGroupSectionsSettings[key][0];\n }\n }\n return null;\n });\n }\n\n async doesUserGroupHaveSections(userGroupName: string, sections: string[]) {\n const userGroup = await this.getByName(userGroupName);\n const sectionsData = userGroup.sections;\n if (sectionsData.length !== sections.length) {\n return false;\n }\n return sections.every(item => sectionsData.includes(item));\n }\n\n async createUserGroupWithReadDocumentPermissionAndReadPropertyValueDocumentPermission(name: string, readEnabled: boolean = true, readPropertyValueEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(readEnabled)\n .withReadPropertyValueDocumentPermission(readPropertyValueEnabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUpdateDocumentPermissionAndWritePropertyValueDocumentPermission(name: string, updateEnabled: boolean = true, writePropertyValueEnabled: boolean = true, readPropertyValueEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withUpdateDocumentPermission(updateEnabled)\n .withReadDocumentPermission(true)\n .withWritePropertyValueDocumentPermission(writePropertyValueEnabled)\n .withReadPropertyValueDocumentPermission(readPropertyValueEnabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithPermissionsForSpecificDocumentAndTwoPropertyValues(name: string, documentId: string, documentTypeId: string, firstPropertyValueName: string, readFirstPropertyValueEnabled: boolean = true, writeFirstPropertyValueEnabled: boolean = true, secondPropertyValueName: string, readSecondPropertyValueEnabled: boolean = true, writeSecondPropertyValueEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n const firstPropertyValueId = await this.api.documentType.getPropertyIdWithName(documentTypeId, firstPropertyValueName);\n const secondPropertyValueId = await this.api.documentType.getPropertyIdWithName(documentTypeId, secondPropertyValueName);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withReadDocumentPermission(true)\n .withUpdateDocumentPermission(true)\n .done()\n .done()\n .addPropertyValuePermission()\n .withDocumentTypeId(documentTypeId)\n .withPropertyTypeId(firstPropertyValueId)\n .addVerbs()\n .withReadPropertyValueDocumentPermission(readFirstPropertyValueEnabled)\n .withWritePropertyValueDocumentPermission(writeFirstPropertyValueEnabled)\n .done()\n .done()\n .addPropertyValuePermission()\n .withDocumentTypeId(documentTypeId)\n .withPropertyTypeId(secondPropertyValueId)\n .addVerbs()\n .withReadPropertyValueDocumentPermission(readSecondPropertyValueEnabled)\n .withWritePropertyValueDocumentPermission(writeSecondPropertyValueEnabled)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithReadPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withReadDocumentPermission(enabled)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateDocumentBlueprintPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withCreateDocumentBlueprintPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDeletePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withDeleteDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreatePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withCreateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithNotificationsPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withNotificationsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublishPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withPublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSetPermissionsPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withSetPermissionsDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUnpublishPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withUnpublishDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithUpdatePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadDocumentPermission(true)\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withUpdateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithDuplicatePermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(true) // need to have the 'create' permission - refer this PR: https://github.com/umbraco/Umbraco-CMS/pull/19303\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withDuplicateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithMoveToPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(true) // need to have the 'create' permission - refer this PR: https://github.com/umbraco/Umbraco-CMS/pull/19303\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withMoveToDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithSortChildrenPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withSortChildrenDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithCultureAndHostnamesPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withCultureAndHostnamesDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithPublicAccessPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .addSection(ConstantHelper.sectionAliases.members)\n .withDocumentRootAccess(true)\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withPublicAccessDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createUserGroupWithRollbackPermissionForSpecificDocument(name: string, documentId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withReadPropertyValueDocumentPermission(true)\n .withWritePropertyValueDocumentPermission(true)\n .done()\n .addPermissions()\n .addDocumentPermission()\n .withDocumentId(documentId)\n .addVerbs()\n .withRollbackDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateAndUpdateDocumentPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.content)\n .withDocumentRootAccess(true)\n .addFallbackPermission()\n .withCreateDocumentPermission(enabled)\n .withUpdateDocumentPermission(enabled)\n .withReadDocumentPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n // Element permission methods\n async createUserGroupWithReadElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withReadElementPermission(enabled)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withCreateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDeleteElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withDeleteElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithPublishElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withPublishElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUnpublishElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withUnpublishElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUpdateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withUpdateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDuplicateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withDuplicateElementPermission(enabled)\n .withCreateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithMoveElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withMoveElementPermission(enabled)\n .withCreateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithRollbackElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withRollbackElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDeleteElementPermissionAndCreateElementPermission(name: string, deleteEnabled: boolean = true, createEnabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withDeleteElementPermission(deleteEnabled)\n .withCreateElementPermission(createEnabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreateAndUpdateElementPermission(name: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withCreateElementPermission(enabled)\n .withUpdateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async doesUserGroupContainElementStartNodeId(userGroupName: string, elementStartNodeId: string) {\n const userGroup = await this.getByName(userGroupName);\n if (userGroup.elementStartNode === null) {\n return false;\n }\n return userGroup.elementStartNode.id.includes(elementStartNodeId);\n }\n\n async doesUserGroupContainElementRootAccess(userGroupName: string) {\n const userGroup = await this.getByName(userGroupName);\n return userGroup.elementRootAccess;\n }\n\n async createUserGroupWithElementStartNode(name: string, startNodeId: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(false)\n .withElementStartNodeId(startNodeId)\n .addFallbackPermission()\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithReadPermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withReadElementPermission(enabled)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDeletePermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withDeleteElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithPublishPermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withPublishElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUnpublishPermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withUnpublishElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithUpdatePermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withReadElementPermission(true)\n .done()\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withUpdateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithDuplicatePermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withCreateElementPermission(true)\n .done()\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withDuplicateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithMovePermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addFallbackPermission()\n .withCreateElementPermission(true)\n .done()\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withMoveElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithRollbackPermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withRollbackElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async createUserGroupWithCreatePermissionForSpecificElement(name: string, elementId: string, enabled: boolean = true) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .withElementRootAccess(true)\n .addPermissions()\n .addElementPermission()\n .withElementId(elementId)\n .addVerbs()\n .withCreateElementPermission(enabled)\n .withReadElementPermission(true)\n .done()\n .done()\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n \n async createSimpleUserGroupWithLibrarySection(name: string) {\n await this.ensureNameNotExists(name);\n\n const userGroup = new UserGroupBuilder()\n .withName(name)\n .addSection(ConstantHelper.sectionAliases.library)\n .addFallbackPermission()\n .withReadElementPermission(true)\n .done()\n .build();\n\n return await this.create(userGroup);\n }\n\n async convertApiElementPermissionsToUiElementPermissions(apiPermissions: string[]) {\n return apiPermissions.map(permission => {\n for (const key in ConstantHelper.userGroupElementPermissionsSettings) {\n if (ConstantHelper.userGroupElementPermissionsSettings[key][2].toLowerCase() === permission.toLowerCase()) {\n return ConstantHelper.userGroupElementPermissionsSettings[key][0];\n }\n }\n return null;\n });\n }\n}"]}
|