nuxeo-development-framework 2.0.9 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nuxeo-development-framework.umd.js +8683 -454
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/activities-log/activities-log/activities-log.component.js +84 -0
- package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +35 -0
- package/esm2015/lib/components/activities-log/activities-log.module.js +30 -0
- package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +54 -0
- package/esm2015/lib/components/attachment-item/attachment-item.module.js +44 -0
- package/esm2015/lib/components/attachment-modal/attachment-modal.module.js +40 -0
- package/esm2015/lib/components/attachment-modal/attachments/attachments.component.js +157 -0
- package/esm2015/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.js +30 -0
- package/esm2015/lib/components/confirmation-dialog/confirmation-dialog.module.js +30 -0
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.js +44 -0
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon/icon.service.js +140 -0
- package/esm2015/lib/components/display-suitable-icon/display-suitable-icon.module.js +24 -0
- package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.js +177 -0
- package/esm2015/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.js +43 -0
- package/esm2015/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.js +39 -0
- package/esm2015/lib/components/dynamic-tabs/dynamic-tabs.module.js +34 -0
- package/esm2015/lib/components/file-manger/components/add-to-collection/add-to-collection.component.js +132 -0
- package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +264 -0
- package/esm2015/lib/components/file-manger/components/copy/copy.component.js +119 -0
- package/esm2015/lib/components/file-manger/components/create-directory/create-directory.component.js +91 -0
- package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +455 -0
- package/esm2015/lib/components/file-manger/components/creation-type/creation-type.component.js +26 -0
- package/esm2015/lib/components/file-manger/components/delete/delete.component.js +77 -0
- package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +114 -0
- package/esm2015/lib/components/file-manger/components/loan-request/loan-request.component.js +80 -0
- package/esm2015/lib/components/file-manger/components/move/move.component.js +108 -0
- package/esm2015/lib/components/file-manger/components/publish-dialog/publish-dialog.component.js +111 -0
- package/esm2015/lib/components/file-manger/components/rename/rename.component.js +86 -0
- package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +314 -0
- package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +294 -0
- package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +257 -0
- package/esm2015/lib/components/file-manger/components/template-modal/template-modal.component.js +64 -0
- package/esm2015/lib/components/file-manger/components/transfer-doc/transfer-doc.component.js +71 -0
- package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +358 -0
- package/esm2015/lib/components/file-manger/file-manager.abstract.js +1031 -0
- package/esm2015/lib/components/file-manger/file-manger.module.js +295 -0
- package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +51 -0
- package/esm2015/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.js +30 -0
- package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +177 -0
- package/esm2015/lib/components/permissions/permission.service.js +118 -0
- package/esm2015/lib/components/permissions/permissions/permissions.component.js +232 -0
- package/esm2015/lib/components/permissions/permissions-template/permissions-template.component.js +117 -0
- package/esm2015/lib/components/permissions/permissions.module.js +71 -0
- package/esm2015/lib/components/select-users-by-department/select-users-by-department.module.js +47 -0
- package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +27 -0
- package/esm2015/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.js +116 -0
- package/esm2015/lib/components/user/user/user.component.js +29 -0
- package/esm2015/lib/components/user/user.module.js +30 -0
- package/esm2015/lib/directive/directive.module.js +9 -4
- package/esm2015/lib/directive/drag-and-drop/drag-and-drop.directive.js +46 -0
- package/esm2015/lib/shared/libraryShared.module.js +1 -4
- package/esm2015/lib/shared-services/dialog-mangment.service.js +61 -0
- package/esm2015/lib/shared-services/dynamic-form.service.js +241 -0
- package/esm2015/lib/shared-services/file-manager.adapter.js +74 -0
- package/esm2015/lib/shared-services/file-manager.service.js +793 -0
- package/esm2015/lib/shared-services/global-pdftron.service.js +46 -0
- package/esm2015/lib/shared-services/mainfolder.service.js +160 -0
- package/esm2015/lib/shared-services/publishing-document.service.js +202 -0
- package/esm2015/lib/shared-services/recently-viewed.service.js +57 -0
- package/esm2015/lib/shared-services/shared-docs.service.js +135 -0
- package/esm2015/lib/shared-services/shared-services.module.js +20 -0
- package/esm2015/lib/shared-services/upload-file.service.js +29 -0
- package/esm2015/lib/shared-services/upload-managment.service.js +151 -0
- package/esm2015/lib/shared-services/user.service.js +54 -0
- package/esm2015/public-api.js +65 -1
- package/fesm2015/nuxeo-development-framework.js +7969 -154
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/activities-log/activities-log/activities-log.component.d.ts +23 -0
- package/lib/components/activities-log/activities-log/activities-log.service.d.ts +9 -0
- package/lib/components/activities-log/activities-log.module.d.ts +10 -0
- package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +21 -0
- package/lib/components/attachment-item/attachment-item.module.d.ts +13 -0
- package/lib/components/attachment-modal/attachment-modal.module.d.ts +12 -0
- package/lib/components/attachment-modal/attachments/attachments.component.d.ts +50 -0
- package/lib/components/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +12 -0
- package/lib/components/confirmation-dialog/confirmation-dialog.module.d.ts +10 -0
- package/lib/components/display-suitable-icon/display-suitable-icon/display-suitable-icon.component.d.ts +17 -0
- package/lib/components/display-suitable-icon/display-suitable-icon/icon.service.d.ts +8 -0
- package/lib/components/display-suitable-icon/display-suitable-icon.module.d.ts +8 -0
- package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer/dynamic-fields-renderer.component.d.ts +137 -0
- package/lib/components/dynamic-fields-renderer/dynamic-fields-renderer.module.d.ts +12 -0
- package/lib/components/dynamic-tabs/dynamic-tabs/dynamic-tabs.component.d.ts +13 -0
- package/lib/components/dynamic-tabs/dynamic-tabs.module.d.ts +11 -0
- package/lib/components/file-manger/components/add-to-collection/add-to-collection.component.d.ts +31 -0
- package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +41 -0
- package/lib/components/file-manger/components/copy/copy.component.d.ts +32 -0
- package/lib/components/file-manger/components/create-directory/create-directory.component.d.ts +24 -0
- package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +108 -0
- package/lib/components/file-manger/components/creation-type/creation-type.component.d.ts +11 -0
- package/lib/components/file-manger/components/delete/delete.component.d.ts +30 -0
- package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +56 -0
- package/lib/components/file-manger/components/loan-request/loan-request.component.d.ts +23 -0
- package/lib/components/file-manger/components/move/move.component.d.ts +32 -0
- package/lib/components/file-manger/components/publish-dialog/publish-dialog.component.d.ts +32 -0
- package/lib/components/file-manger/components/rename/rename.component.d.ts +25 -0
- package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +95 -0
- package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +58 -0
- package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +62 -0
- package/lib/components/file-manger/components/template-modal/template-modal.component.d.ts +34 -0
- package/lib/components/file-manger/components/transfer-doc/transfer-doc.component.d.ts +24 -0
- package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +194 -0
- package/lib/components/file-manger/file-manager.abstract.d.ts +173 -0
- package/lib/components/file-manger/file-manger.module.d.ts +59 -0
- package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +17 -0
- package/lib/components/mutiple-dynamic-form-viewer/mutiple-dynamic-form-viewer.module.d.ts +10 -0
- package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +44 -0
- package/lib/components/permissions/permission.service.d.ts +21 -0
- package/lib/components/permissions/permissions/permissions.component.d.ts +48 -0
- package/lib/components/permissions/permissions-template/permissions-template.component.d.ts +22 -0
- package/lib/components/permissions/permissions.module.d.ts +21 -0
- package/lib/components/select-users-by-department/select-users-by-department.module.d.ts +13 -0
- package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +10 -0
- package/lib/components/select-users-by-department/select-users-by-departments/select-users-by-departments.component.d.ts +33 -0
- package/lib/components/user/user/user.component.d.ts +12 -0
- package/lib/components/user/user.module.d.ts +10 -0
- package/lib/directive/directive.module.d.ts +3 -2
- package/lib/directive/drag-and-drop/drag-and-drop.directive.d.ts +11 -0
- package/lib/shared/libraryShared.module.d.ts +1 -1
- package/lib/shared-services/dialog-mangment.service.d.ts +15 -0
- package/lib/shared-services/dynamic-form.service.d.ts +24 -0
- package/lib/shared-services/file-manager.adapter.d.ts +48 -0
- package/lib/shared-services/file-manager.service.d.ts +94 -0
- package/lib/shared-services/global-pdftron.service.d.ts +10 -0
- package/lib/shared-services/mainfolder.service.d.ts +32 -0
- package/lib/shared-services/publishing-document.service.d.ts +25 -0
- package/lib/shared-services/recently-viewed.service.d.ts +17 -0
- package/lib/shared-services/shared-docs.service.d.ts +21 -0
- package/lib/shared-services/shared-services.module.d.ts +7 -0
- package/lib/shared-services/upload-file.service.d.ts +10 -0
- package/lib/shared-services/upload-managment.service.d.ts +72 -0
- package/lib/shared-services/user.service.d.ts +12 -0
- package/package.json +7 -6
- package/public-api.d.ts +62 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { Component, Inject, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { FormControl, Validators } from '@angular/forms';
|
|
3
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
import * as i2 from "../permission.service";
|
|
7
|
+
import * as i3 from "../../custom-toastr/services/custom-toastr.service";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
import * as i5 from "../../../Core/services/translation/translation.service";
|
|
10
|
+
import * as i6 from "@ng-select/ng-select";
|
|
11
|
+
import * as i7 from "../../avatar/avatar/avatar.component";
|
|
12
|
+
import * as i8 from "@angular/material/progress-spinner";
|
|
13
|
+
import * as i9 from "../../../directive/rtl/set-rtl.directive";
|
|
14
|
+
import * as i10 from "@angular/common";
|
|
15
|
+
import * as i11 from "@ngx-translate/core";
|
|
16
|
+
export class AddPermissionsDialogComponent {
|
|
17
|
+
constructor(dialogRef, permissionService, tosterService, fb, translate, data) {
|
|
18
|
+
this.dialogRef = dialogRef;
|
|
19
|
+
this.permissionService = permissionService;
|
|
20
|
+
this.tosterService = tosterService;
|
|
21
|
+
this.fb = fb;
|
|
22
|
+
this.translate = translate;
|
|
23
|
+
this.rights = [];
|
|
24
|
+
this.id = null;
|
|
25
|
+
this.timeFrame = 'Permanent';
|
|
26
|
+
this.newPermission = {};
|
|
27
|
+
this.state = null;
|
|
28
|
+
this.aclId = null;
|
|
29
|
+
this.username = null;
|
|
30
|
+
this.subscriptions$ = [];
|
|
31
|
+
this.creating = false;
|
|
32
|
+
this.updating = false;
|
|
33
|
+
this.createAndAdd = false;
|
|
34
|
+
this.refreshUsers = false;
|
|
35
|
+
this.id = data.id;
|
|
36
|
+
data.rights.map(e => {
|
|
37
|
+
if ([
|
|
38
|
+
"Consumer",
|
|
39
|
+
"Editor",
|
|
40
|
+
"Contributor",
|
|
41
|
+
"Collaborator",
|
|
42
|
+
"Coordinator",
|
|
43
|
+
].includes(e)) {
|
|
44
|
+
this.rights.push({ label: this.translate.instant(`rights.${e}`), value: e });
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
this.state = data.state || null;
|
|
48
|
+
this.aclId = data.aclId || null;
|
|
49
|
+
this.username = data.username || null;
|
|
50
|
+
this.editableRight = data.editableRight || null;
|
|
51
|
+
this.editableBegin = data.editableBegin || null;
|
|
52
|
+
this.editableEnd = data.editableEnd || null;
|
|
53
|
+
}
|
|
54
|
+
ngOnInit() {
|
|
55
|
+
this.permissionForm = this.fb.group({
|
|
56
|
+
begin: new FormControl(null),
|
|
57
|
+
end: new FormControl(null),
|
|
58
|
+
permission: new FormControl('', Validators.required),
|
|
59
|
+
users: new FormControl('', Validators.required),
|
|
60
|
+
}, { validator: this.checkDates });
|
|
61
|
+
//(this.editableBegin == null && this.editableEnd == null) ? this.timeFrame = 'Permanent' : this.timeFrame = 'Date-Based'
|
|
62
|
+
}
|
|
63
|
+
checkDates(group) {
|
|
64
|
+
if (group.controls.end.value < group.controls.begin.value) {
|
|
65
|
+
return { notValid: true };
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
createandAddAnother(permissionForm, newPermission) {
|
|
70
|
+
if (this.permissionForm.invalid) {
|
|
71
|
+
alert(this.translate.instant("permission.FILL_REQUIRED_FIELD"));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.createAndAdd = true;
|
|
75
|
+
this.newPermission = Object.assign(Object.assign({}, newPermission), { permission: newPermission.permission, users: newPermission.users, acl: "local", blockInheritance: true, notify: true });
|
|
76
|
+
this.subscriptions$.concat([this.permissionService.addNewLocalPermissions(this.id, this.newPermission).subscribe(res => {
|
|
77
|
+
if (res) {
|
|
78
|
+
this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.ADD_PERMISSION_SUCCESS");
|
|
79
|
+
this.permissionService.createAndAddAnother.emit();
|
|
80
|
+
this.refreshUserArray(newPermission.users);
|
|
81
|
+
this.permissionForm.reset();
|
|
82
|
+
this.timeFrame = 'Permanent';
|
|
83
|
+
this.createAndAdd = false;
|
|
84
|
+
}
|
|
85
|
+
}, err => {
|
|
86
|
+
this.createAndAdd = false;
|
|
87
|
+
this.tosterService.show('error', 'TOASTER.ERROR', "TOASTER.ADD_PERMISSION_FAIL");
|
|
88
|
+
})]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
refreshUserArray(users) {
|
|
92
|
+
this.refreshUsers = true;
|
|
93
|
+
let tempArr = [];
|
|
94
|
+
tempArr.push(...this.permissionService.departmentUsers);
|
|
95
|
+
this.permissionService.departmentUsers = [];
|
|
96
|
+
users.forEach(element => {
|
|
97
|
+
tempArr.forEach((user, index) => {
|
|
98
|
+
if (user.properties.username === element) {
|
|
99
|
+
tempArr.splice(index, 1);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
this.permissionService.departmentUsers = tempArr;
|
|
104
|
+
setTimeout(() => {
|
|
105
|
+
this.refreshUsers = false;
|
|
106
|
+
}, 200);
|
|
107
|
+
}
|
|
108
|
+
create(newPermission) {
|
|
109
|
+
/*
|
|
110
|
+
newPermission = {
|
|
111
|
+
begin:null,
|
|
112
|
+
end:null,
|
|
113
|
+
permission: Read,ReadWrite....etc,
|
|
114
|
+
users:["fm_user"]....etc
|
|
115
|
+
}
|
|
116
|
+
*/
|
|
117
|
+
if (this.permissionForm.invalid) {
|
|
118
|
+
alert(this.translate.instant("permission.FILL_REQUIRED_FIELD"));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.creating = true;
|
|
122
|
+
this.newPermission = Object.assign(Object.assign({}, newPermission), { permission: newPermission.permission, comment: "", email: null, notify: true });
|
|
123
|
+
this.subscriptions$.concat([this.permissionService.addNewLocalPermissions(this.id, this.newPermission).subscribe(res => {
|
|
124
|
+
if (res) {
|
|
125
|
+
this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.ADD_PERMISSION_SUCCESS");
|
|
126
|
+
this.cancel(true);
|
|
127
|
+
}
|
|
128
|
+
}, err => {
|
|
129
|
+
this.creating = false;
|
|
130
|
+
this.tosterService.show('error', 'TOASTER.ERROR', "TOASTER.ADD_PERMISSION_FAIL");
|
|
131
|
+
})]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
edit(newPermission) {
|
|
135
|
+
this.permissionForm.get('users').setValue([this.username]);
|
|
136
|
+
if (this.timeFrame == 'Permanent') {
|
|
137
|
+
this.editableBegin = this.editableEnd = null;
|
|
138
|
+
}
|
|
139
|
+
if (this.permissionForm.invalid) {
|
|
140
|
+
alert(this.translate.instant("permission.FILL_REQUIRED_FIELD"));
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.updating = true;
|
|
144
|
+
this.newPermission = Object.assign(Object.assign({}, newPermission), { permission: newPermission.permission, begin: this.editableBegin, end: this.editableEnd, comment: "", email: null, notify: false, username: this.username.properties.username, id: this.aclId });
|
|
145
|
+
this.subscriptions$.concat([this.permissionService.editLocalPermissions(this.id, this.newPermission).subscribe(res => {
|
|
146
|
+
if (res) {
|
|
147
|
+
this.tosterService.show('success', 'TOASTER.SUCCESS', "TOASTER.EDIT_PERMISSION_SUCCESS");
|
|
148
|
+
this.cancel(true);
|
|
149
|
+
}
|
|
150
|
+
}, err => {
|
|
151
|
+
this.updating = false;
|
|
152
|
+
this.tosterService.show('error', 'TOASTER.ERROR', "TOASTER.EDIT_PERMISSION_FAIL");
|
|
153
|
+
})]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
cancel(result) {
|
|
157
|
+
this.dialogRef.close(result);
|
|
158
|
+
}
|
|
159
|
+
ngOnDestroy() {
|
|
160
|
+
this.subscriptions$.forEach(e => e.unsubscribe());
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
AddPermissionsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: AddPermissionsDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.PermissionService }, { token: i3.CustomToastrService }, { token: i4.FormBuilder }, { token: i5.TranslationService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
+
AddPermissionsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: AddPermissionsDialogComponent, selector: "app-add-permissions-dialog", ngImport: i0, template: "<form [formGroup]=\"permissionForm\" class=\"h-full\" SetRtl>\r\n\r\n <div class=\"flex flex-col h-full\">\r\n <div class=\"add-permsion-wrapper\">\r\n <span class=\"text-gray-900 text-lg\" *ngIf=\"state == 'update'\">\r\n {{ \"permission.edit_permission\" | translate }}\r\n </span>\r\n <span class=\"text-gray-900 text-lg\" *ngIf=\"state !== 'update'\">\r\n {{ \"permission.add_new_permission\" | translate }}\r\n </span>\r\n \r\n <div class=\"user-select mt-5\" *ngIf=\"state != 'update'\">\r\n <label class=\"text-base font-bold mb-0\">\r\n {{ 'permission.username' | translate}}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <ng-select \r\n [items]=\"permissionService.departmentUsers\"\r\n [placeholder]=\"'permission.placeholder' | translate\"\r\n [multiple]=\"true\"\r\n [loading]=\"refreshUsers\"\r\n bindLabel=\"displayLabel\"\r\n bindValue=\"properties.username\"\r\n formControlName=\"users\"\r\n >\r\n <ng-template ng-notfound-tmp let-searchTerm=\"searchTerm\">\r\n <div class=\"ng-option disabled\">\r\n {{'permission.ngSelect_resultNotFound' | translate}}\r\n </div>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\r\n <div class=\"flex flex-col h-full\">\r\n <div class=\"flex flex-row\">\r\n <div class=\"flex-0 w-8 h-8 rounded-full overflow-hidden\" >\r\n <cts-avatar [user]=\"{\r\n properties: {\r\n firstName: item.properties.firstName,\r\n lastName: item.properties.lastName\r\n }\r\n }\">\r\n </cts-avatar>\r\n </div>\r\n <div class=\"flex flex-col pt-0 px-2\">\r\n <span>{{item.displayLabel}}</span>\r\n <span>{{item.properties.email}}-{{item.properties.username}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n <div class=\"mt-3 rights-select\">\r\n <label class=\"text-base font-bold mb-0\">\r\n {{ \"permission.Rights\" | translate }}\r\n <span class=\"text-danger\">*</span>\r\n </label>\r\n <ng-select \r\n [items]=\"rights\"\r\n [placeholder]=\"'permission.rightsPlaceholder' | translate\"\r\n bindLabel=\"label\"\r\n bindValue=\"value\"\r\n formControlName=\"permission\" \r\n [(ngModel)]=\"editableRight\"\r\n >\r\n </ng-select>\r\n </div>\r\n \r\n <!--<div class=\"flex flex-row mt-5\">\r\n <span class=\"text-gray-900 text-base font-bold\">\r\n {{ \"permission.timeframe\" | translate }}\r\n <span class=\"text-danger\">*</span>:</span>\r\n <div class=\"mx-2\">\r\n <label class=\"inline-flex items-center\">\r\n <input type=\"radio\" class=\"form-radio\" name=\"radio\" value=\"Permanent\" [checked]=\"timeFrame == 'Permanent'\"\r\n (click)=\"timeFrame = 'Permanent'\" />\r\n <span class=\"mx-2 mt-1 text-gray-900 text-sm font-bold\">{{\r\n \"permission.permanent\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div rtl>\r\n <label class=\"inline-flex items-center\">\r\n <input type=\"radio\" class=\"form-radio\" name=\"radio\" value=\"Date-Based\" [checked]=\"timeFrame == 'Date-Based'\"\r\n (click)=\"timeFrame = 'Date-Based'\" />\r\n <span class=\"mx-2 mt-1 text-gray-900 text-sm font-bold\">{{\r\n \"permission.Date_based\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-col mt-2\">\r\n <label class=\"text-base font-bold text-gray-900 mb-0\">{{ \"permission.from\" | translate }}</label>\r\n <cts-dynamic-form-hijri-dateitem \r\n formControlName=\"begin\" \r\n [isDisabled]=\"timeFrame == 'Permanent'\"\r\n [(ngModel)]=\"editableBegin\">\r\n </cts-dynamic-form-hijri-dateitem>\r\n <label class=\"text-base font-bold text-gray-900 mb-0\">{{ \"permission.to\" | translate }}</label>\r\n <cts-dynamic-form-hijri-dateitem \r\n formControlName=\"end\" \r\n [isDisabled]=\"timeFrame == 'Permanent'\"\r\n [(ngModel)]=\"editableEnd\">\r\n </cts-dynamic-form-hijri-dateitem>\r\n <div *ngIf=\"permissionForm?.errors?.notValid\">\r\n <span class=\"text-red-500 text-base -mt-3 \">{{\r\n \"permission.endStartError\" | translate\r\n }}</span>\r\n </div>\r\n </div>-->\r\n </div>\r\n\r\n <div class=\"flex flex-row justify-between mt-5 flex-wrap\">\r\n <div>\r\n <button\r\n class=\"cancelation-button mb-3\"\r\n (click)=\"cancel(false)\">\r\n {{ \"BUTTONS.Cancel\" | translate }}\r\n </button>\r\n </div>\r\n <div class=\"d-flex\">\r\n <button *ngIf=\"state != 'update'\"\r\n [disabled]=\"createAndAdd\"\r\n class=\"submission-button\"\r\n (click)=\"create(permissionForm.value)\">\r\n <span *ngIf=\"!creating;else loader\">{{ \"permission.create\" | translate }}</span>\r\n </button>\r\n <button\r\n class=\"submission-button\"\r\n (click)=\"edit(permissionForm.value)\" *ngIf=\"state == 'update'\">\r\n <span *ngIf=\"!updating;else loader\">{{ \"permission.update\" | translate }}</span>\r\n </button>\r\n <button *ngIf=\"state != 'update'\"\r\n class=\"submission-button w-44\"\r\n (click)=\"\r\n createandAddAnother(permissionForm, permissionForm.value)\r\n \">\r\n <span *ngIf=\"!createAndAdd;else loader\">{{ \"permission.createAndAdd\" | translate }}</span>\r\n </button>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #loader>\r\n <mat-spinner [value]=\"90\" [strokeWidth]=\"3\" overlay=\"true\" [diameter]=\"25\" color=\"warn\">\r\n </mat-spinner>\r\n</ng-template>\r\n", styles: [".form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;user-select:none;flex-shrink:0;border-radius:100%;height:1em;width:1em;color:#4299e1;background-color:#fff;border-color:#e2e8f0;border-width:1px}.form-radio:checked{background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;box-shadow:0 0 0 3px #4299e180;border-color:#63b3ed}.select-label{color:#8f98aa;font-size:12px;margin-bottom:0}.user-select .ng-select-container,.rights-select .ng-select-container{border:1px solid #ccc!important;border-radius:5px!important;background-color:#8f98aa1a!important}.user-select .ng-select-container .ng-value-container,.rights-select .ng-select-container .ng-value-container{padding:unset!important}.user-select .ng-select-container .ng-value-container .ng-placeholder,.rights-select .ng-select-container .ng-value-container .ng-placeholder{font-size:12px}.user-select .ng-select-container .ng-value-container .ng-value,.rights-select .ng-select-container .ng-value-container .ng-value{color:#495057}.user-select .ng-select-container .ng-arrow-wrapper,.rights-select .ng-select-container .ng-arrow-wrapper{padding:0 20px}.user-select .ng-select-container .ng-input,.rights-select .ng-select-container .ng-input{left:10px;right:10px;width:auto}.user-select .ng-select-container .ng-value-container .ng-placeholder{padding-top:4px!important}.ng-select-disabled .ng-select-container{background-color:#e9ecef!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper{position:relative}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper input{visibility:hidden;width:20px;height:20px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper{position:absolute;top:0px;left:0px;width:20px;height:20px;border:1px solid blue;display:flex;justify-content:center;align-items:center}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper .icon{color:#00f;display:none;justify-content:center;align-items:center;font-weight:bold}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .check-box-wrapper .icon-wrapper .icon{display:flex}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .label-wrapper{color:#00f}.ng-select .ng-select-focused:not(.ng-select-opened) .ng-select-container{border-color:#ccc;box-shadow:none}.add-permsion-wrapper{height:calc(100% - 50px);overflow:auto}\n"], components: [{ type: i6.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i7.AvatarComponent, selector: "cts-avatar", inputs: ["user"] }, { type: i8.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.SetRtlDirective, selector: "[SetRtl]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.ɵl, selector: "[ng-notfound-tmp]" }, { type: i6.ɵf, selector: "[ng-option-tmp]" }], pipes: { "translate": i11.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: AddPermissionsDialogComponent, decorators: [{
|
|
166
|
+
type: Component,
|
|
167
|
+
args: [{
|
|
168
|
+
selector: 'app-add-permissions-dialog',
|
|
169
|
+
templateUrl: './add-permissions-dialog.component.html',
|
|
170
|
+
styleUrls: ['./add-permissions-dialog.component.scss'],
|
|
171
|
+
encapsulation: ViewEncapsulation.None
|
|
172
|
+
}]
|
|
173
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.PermissionService }, { type: i3.CustomToastrService }, { type: i4.FormBuilder }, { type: i5.TranslationService }, { type: undefined, decorators: [{
|
|
174
|
+
type: Inject,
|
|
175
|
+
args: [MAT_DIALOG_DATA]
|
|
176
|
+
}] }]; } });
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb25zL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cvYWRkLXBlcm1pc3Npb25zLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFlLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBY3pFLE1BQU0sT0FBTyw2QkFBNkI7SUFpQnhDLFlBQ1UsU0FBc0QsRUFDdkQsaUJBQW9DLEVBQ25DLGFBQWtDLEVBQ2xDLEVBQWUsRUFDZixTQUE2QixFQUNaLElBQUk7UUFMckIsY0FBUyxHQUFULFNBQVMsQ0FBNkM7UUFDdkQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBckJ2QyxXQUFNLEdBQUMsRUFBRSxDQUFDO1FBQ1YsT0FBRSxHQUFHLElBQUksQ0FBQztRQUNWLGNBQVMsR0FBRSxXQUFXLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxFQUFFLENBQUE7UUFDbEIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBSWhCLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFRbkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xCLElBQUk7Z0JBQ0YsVUFBVTtnQkFDVixRQUFRO2dCQUNSLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxhQUFhO2FBQ2QsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO2FBQzdFO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbEMsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztZQUM1QixHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzFCLFVBQVUsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDaEQsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNuQyx5SEFBeUg7SUFFM0gsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtTQUMxQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELG1CQUFtQixDQUFDLGNBQWMsRUFBRSxhQUFrQjtRQUNwRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUE7U0FDaEU7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLG1DQUNiLGFBQWEsS0FDaEIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQ3BDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUMxQixHQUFHLEVBQUUsT0FBTyxFQUNaLGdCQUFnQixFQUFFLElBQUksRUFDdEIsTUFBTSxFQUFFLElBQUksR0FDYixDQUFBO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNySCxJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQzt3QkFDeEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQzt3QkFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRSxLQUFLLENBQUM7cUJBQzFCO2dCQUNILENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFBO2dCQUNsRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUVILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksT0FBTyxHQUFFLEVBQUUsQ0FBQztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBQyxLQUFLLEVBQUUsRUFBRTtnQkFDN0IsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUU7b0JBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFBO2lCQUN4QjtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUNELE1BQU0sQ0FBQyxhQUFrQjtRQUN2Qjs7Ozs7OztVQU9FO1FBQ0osSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFBO1NBQzlEO2FBQ0k7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxtQ0FDYixhQUFhLEtBQ2hCLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUNwQyxPQUFPLEVBQUUsRUFBRSxFQUNYLEtBQUssRUFBRSxJQUFJLEVBQ1gsTUFBTSxFQUFFLElBQUksR0FDYixDQUFBO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNySCxJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQzt3QkFDeEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDbkI7Z0JBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLDZCQUE2QixDQUFDLENBQUE7Z0JBQ2xGLENBQUMsQ0FDQSxDQUFDLENBQUMsQ0FBQTtTQUNKO0lBRUgsQ0FBQztJQUVELElBQUksQ0FBQyxhQUFrQjtRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMxRCxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDaEQ7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1lBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUE7U0FDaEU7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLG1DQUNiLGFBQWEsS0FDaEIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQ3BDLEtBQUssRUFBQyxJQUFJLENBQUMsYUFBYSxFQUN4QixHQUFHLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFDcEIsT0FBTyxFQUFFLEVBQUUsRUFDWCxLQUFLLEVBQUUsSUFBSSxFQUNYLE1BQU0sRUFBRSxLQUFLLEVBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFDM0MsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQ2YsQ0FBQTtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDbkgsSUFBSSxHQUFHLEVBQUU7d0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGlDQUFpQyxDQUFDLENBQUM7d0JBQ3pGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ25CO2dCQUNILENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO2dCQUNuRixDQUFDLENBQ0EsQ0FBQyxDQUFDLENBQUE7U0FDSjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUNuRCxDQUFDOzswSEFwTFUsNkJBQTZCLCtLQXVCOUIsZUFBZTs4R0F2QmQsNkJBQTZCLGtFQ2hCMUMseXdNQXFKQTsyRkRySWEsNkJBQTZCO2tCQU56QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFdBQVcsRUFBRSx5Q0FBeUM7b0JBQ3RELFNBQVMsRUFBRSxDQUFDLHlDQUF5QyxDQUFDO29CQUN0RCxhQUFhLEVBQUMsaUJBQWlCLENBQUMsSUFBSTtpQkFDckM7OzBCQXdCSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3Blcm1pc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL0NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLXBlcm1pc3Npb25zLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FkZC1wZXJtaXNzaW9ucy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOlZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZFBlcm1pc3Npb25zRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJpZ2h0cz1bXTtcclxuICBpZCA9IG51bGw7XHJcbiAgdGltZUZyYW1lPSAnUGVybWFuZW50JztcclxuICBuZXdQZXJtaXNzaW9uID0ge31cclxuICBzdGF0ZSA9IG51bGw7XHJcbiAgYWNsSWQgPSBudWxsO1xyXG4gIHVzZXJuYW1lID0gbnVsbDtcclxuICBlZGl0YWJsZVJpZ2h0Oy8vdG8gcGFzcyBSaWdodHMgdG8gZGlhbG9nIGlmIHdlIGFyZSBpbiB1cGRhdGUgbW9kZVxyXG4gIGVkaXRhYmxlQmVnaW47Ly90byBwYXNzIGJlZ2luRGF0ZSB0byBkaWFsb2cgaWYgd2UgYXJlIGluIHVwZGF0ZSBtb2RlXHJcbiAgZWRpdGFibGVFbmQ7Ly90byBwYXNzIGVuZERhdGUgdG8gZGlhbG9nIGlmIHdlIGFyZSBpbiB1cGRhdGUgbW9kZVxyXG4gIHN1YnNjcmlwdGlvbnMkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHBlcm1pc3Npb25Gb3JtOiBGb3JtR3JvdXA7XHJcbiAgY3JlYXRpbmcgPSBmYWxzZTtcclxuICB1cGRhdGluZyA9IGZhbHNlO1xyXG4gIGNyZWF0ZUFuZEFkZCA9IGZhbHNlO1xyXG4gIHJlZnJlc2hVc2VycyA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBZGRQZXJtaXNzaW9uc0RpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBwdWJsaWMgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b3N0ZXJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGEpIHtcclxuICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xyXG4gICAgZGF0YS5yaWdodHMubWFwKGUgPT4ge1xyXG4gICAgICBpZiAoW1xyXG4gICAgICAgIFwiQ29uc3VtZXJcIixcclxuICAgICAgICBcIkVkaXRvclwiLFxyXG4gICAgICAgIFwiQ29udHJpYnV0b3JcIixcclxuICAgICAgICBcIkNvbGxhYm9yYXRvclwiLFxyXG4gICAgICAgIFwiQ29vcmRpbmF0b3JcIixcclxuICAgICAgXS5pbmNsdWRlcyhlKSkge1xyXG4gICAgICAgIHRoaXMucmlnaHRzLnB1c2goeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgcmlnaHRzLiR7ZX1gKSwgdmFsdWU6IGUgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuc3RhdGUgPSBkYXRhLnN0YXRlIHx8IG51bGw7XHJcbiAgICB0aGlzLmFjbElkID0gZGF0YS5hY2xJZCB8fCBudWxsO1xyXG4gICAgdGhpcy51c2VybmFtZSA9IGRhdGEudXNlcm5hbWUgfHwgbnVsbDtcclxuICAgIHRoaXMuZWRpdGFibGVSaWdodCA9IGRhdGEuZWRpdGFibGVSaWdodCB8fCBudWxsO1xyXG4gICAgdGhpcy5lZGl0YWJsZUJlZ2luID0gZGF0YS5lZGl0YWJsZUJlZ2luIHx8IG51bGw7XHJcbiAgICB0aGlzLmVkaXRhYmxlRW5kID0gZGF0YS5lZGl0YWJsZUVuZCB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGJlZ2luOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgIGVuZDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICBwZXJtaXNzaW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB1c2VyczogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgIH0sIHsgdmFsaWRhdG9yOiB0aGlzLmNoZWNrRGF0ZXMgfSk7XHJcbiAgICAvLyh0aGlzLmVkaXRhYmxlQmVnaW4gPT0gbnVsbCAmJiB0aGlzLmVkaXRhYmxlRW5kID09IG51bGwpID8gdGhpcy50aW1lRnJhbWUgPSAnUGVybWFuZW50JyA6IHRoaXMudGltZUZyYW1lID0gJ0RhdGUtQmFzZWQnXHJcblxyXG4gIH1cclxuICBjaGVja0RhdGVzKGdyb3VwOiBGb3JtR3JvdXApIHtcclxuICAgIGlmIChncm91cC5jb250cm9scy5lbmQudmFsdWUgPCBncm91cC5jb250cm9scy5iZWdpbi52YWx1ZSkge1xyXG4gICAgICByZXR1cm4geyBub3RWYWxpZDogdHJ1ZSB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgY3JlYXRlYW5kQWRkQW5vdGhlcihwZXJtaXNzaW9uRm9ybSwgbmV3UGVybWlzc2lvbjogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJwZXJtaXNzaW9uLkZJTExfUkVRVUlSRURfRklFTERcIikpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZUFuZEFkZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubmV3UGVybWlzc2lvbiA9IHtcclxuICAgICAgICAuLi5uZXdQZXJtaXNzaW9uLFxyXG4gICAgICAgIHBlcm1pc3Npb246IG5ld1Blcm1pc3Npb24ucGVybWlzc2lvbixcclxuICAgICAgICB1c2VyczogbmV3UGVybWlzc2lvbi51c2VycyxcclxuICAgICAgICBhY2w6IFwibG9jYWxcIixcclxuICAgICAgICBibG9ja0luaGVyaXRhbmNlOiB0cnVlLFxyXG4gICAgICAgIG5vdGlmeTogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmNvbmNhdChbdGhpcy5wZXJtaXNzaW9uU2VydmljZS5hZGROZXdMb2NhbFBlcm1pc3Npb25zKHRoaXMuaWQsIHRoaXMubmV3UGVybWlzc2lvbikuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkFERF9QRVJNSVNTSU9OX1NVQ0NFU1NcIik7XHJcbiAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmNyZWF0ZUFuZEFkZEFub3RoZXIuZW1pdCgpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckFycmF5KG5ld1Blcm1pc3Npb24udXNlcnMpO1xyXG4gICAgICAgICAgdGhpcy5wZXJtaXNzaW9uRm9ybS5yZXNldCgpO1xyXG4gICAgICAgICAgdGhpcy50aW1lRnJhbWUgPSAnUGVybWFuZW50JztcclxuICAgICAgICAgIHRoaXMuY3JlYXRlQW5kQWRkID1mYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVBbmRBZGQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsIFwiVE9BU1RFUi5BRERfUEVSTUlTU0lPTl9GQUlMXCIpXHJcbiAgICAgIH0pXSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHJlZnJlc2hVc2VyQXJyYXkodXNlcnMpIHtcclxuICAgIHRoaXMucmVmcmVzaFVzZXJzID0gdHJ1ZTtcclxuICAgIGxldCB0ZW1wQXJyPSBbXTtcclxuICAgIHRlbXBBcnIucHVzaCguLi50aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2Vycyk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2VycyA9IFtdO1xyXG4gICAgICB1c2Vycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHRlbXBBcnIuZm9yRWFjaCgodXNlcixpbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYodXNlci5wcm9wZXJ0aWVzLnVzZXJuYW1lID09PSBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRlbXBBcnIuc3BsaWNlKGluZGV4LDEpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2VycyA9IHRlbXBBcnI7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZWZyZXNoVXNlcnMgPSBmYWxzZTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG4gIGNyZWF0ZShuZXdQZXJtaXNzaW9uOiBhbnkpIHtcclxuICAgIC8qXHJcbiAgICBuZXdQZXJtaXNzaW9uID0ge1xyXG4gICAgICBiZWdpbjpudWxsLFxyXG4gICAgICBlbmQ6bnVsbCxcclxuICAgICAgcGVybWlzc2lvbjogUmVhZCxSZWFkV3JpdGUuLi4uZXRjLFxyXG4gICAgICB1c2VyczpbXCJmbV91c2VyXCJdLi4uLmV0Y1xyXG4gICAgfVxyXG4gICAgKi9cclxuICBpZiAodGhpcy5wZXJtaXNzaW9uRm9ybS5pbnZhbGlkKSB7XHJcbiAgICBhbGVydCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwicGVybWlzc2lvbi5GSUxMX1JFUVVJUkVEX0ZJRUxEXCIpKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY3JlYXRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm5ld1Blcm1pc3Npb24gPSB7XHJcbiAgICAgICAgLi4ubmV3UGVybWlzc2lvbixcclxuICAgICAgICBwZXJtaXNzaW9uOiBuZXdQZXJtaXNzaW9uLnBlcm1pc3Npb24sXHJcbiAgICAgICAgY29tbWVudDogXCJcIixcclxuICAgICAgICBlbWFpbDogbnVsbCxcclxuICAgICAgICBub3RpZnk6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJC5jb25jYXQoW3RoaXMucGVybWlzc2lvblNlcnZpY2UuYWRkTmV3TG9jYWxQZXJtaXNzaW9ucyh0aGlzLmlkLCB0aGlzLm5ld1Blcm1pc3Npb24pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5BRERfUEVSTUlTU0lPTl9TVUNDRVNTXCIpO1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWwodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMuY3JlYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsIFwiVE9BU1RFUi5BRERfUEVSTUlTU0lPTl9GQUlMXCIpXHJcbiAgICAgIH1cclxuICAgICAgKV0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZWRpdChuZXdQZXJtaXNzaW9uOiBhbnkpIHtcclxuICAgIHRoaXMucGVybWlzc2lvbkZvcm0uZ2V0KCd1c2VycycpLnNldFZhbHVlKFt0aGlzLnVzZXJuYW1lXSlcclxuICAgIGlmKHRoaXMudGltZUZyYW1lID09ICdQZXJtYW5lbnQnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0YWJsZUJlZ2luID0gdGhpcy5lZGl0YWJsZUVuZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uRm9ybS5pbnZhbGlkKSB7IFxyXG4gICAgICBhbGVydCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwicGVybWlzc2lvbi5GSUxMX1JFUVVJUkVEX0ZJRUxEXCIpKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMubmV3UGVybWlzc2lvbiA9IHtcclxuICAgICAgICAuLi5uZXdQZXJtaXNzaW9uLFxyXG4gICAgICAgIHBlcm1pc3Npb246IG5ld1Blcm1pc3Npb24ucGVybWlzc2lvbixcclxuICAgICAgICBiZWdpbjp0aGlzLmVkaXRhYmxlQmVnaW4sXHJcbiAgICAgICAgZW5kOnRoaXMuZWRpdGFibGVFbmQsXHJcbiAgICAgICAgY29tbWVudDogXCJcIixcclxuICAgICAgICBlbWFpbDogbnVsbCxcclxuICAgICAgICBub3RpZnk6IGZhbHNlLFxyXG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLnVzZXJuYW1lLnByb3BlcnRpZXMudXNlcm5hbWUsXHJcbiAgICAgICAgaWQ6IHRoaXMuYWNsSWRcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmNvbmNhdChbdGhpcy5wZXJtaXNzaW9uU2VydmljZS5lZGl0TG9jYWxQZXJtaXNzaW9ucyh0aGlzLmlkLCB0aGlzLm5ld1Blcm1pc3Npb24pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5FRElUX1BFUk1JU1NJT05fU1VDQ0VTU1wiKTtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCBcIlRPQVNURVIuRURJVF9QRVJNSVNTSU9OX0ZBSUxcIilcclxuICAgICAgfVxyXG4gICAgICApXSlcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgY2FuY2VsKHJlc3VsdCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJC5mb3JFYWNoKGUgPT4gZS51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cInBlcm1pc3Npb25Gb3JtXCIgY2xhc3M9XCJoLWZ1bGxcIiBTZXRSdGw+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGgtZnVsbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1wZXJtc2lvbi13cmFwcGVyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LWxnXCIgKm5nSWY9XCJzdGF0ZSA9PSAndXBkYXRlJ1wiPlxyXG4gICAgICAgIHt7IFwicGVybWlzc2lvbi5lZGl0X3Blcm1pc3Npb25cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LWxnXCIgKm5nSWY9XCJzdGF0ZSAhPT0gJ3VwZGF0ZSdcIj5cclxuICAgICAgICB7eyBcInBlcm1pc3Npb24uYWRkX25ld19wZXJtaXNzaW9uXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXNlci1zZWxlY3QgbXQtNVwiICpuZ0lmPVwic3RhdGUgIT0gJ3VwZGF0ZSdcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIG1iLTBcIj5cclxuICAgICAgICAgIHt7ICdwZXJtaXNzaW9uLnVzZXJuYW1lJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICA8c3BhbiAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8bmctc2VsZWN0IFxyXG4gICAgICAgICAgW2l0ZW1zXT1cInBlcm1pc3Npb25TZXJ2aWNlLmRlcGFydG1lbnRVc2Vyc1wiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3Blcm1pc3Npb24ucGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgIFtsb2FkaW5nXT1cInJlZnJlc2hVc2Vyc1wiXHJcbiAgICAgICAgICBiaW5kTGFiZWw9XCJkaXNwbGF5TGFiZWxcIlxyXG4gICAgICAgICAgYmluZFZhbHVlPVwicHJvcGVydGllcy51c2VybmFtZVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2Vyc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1ub3Rmb3VuZC10bXAgbGV0LXNlYXJjaFRlcm09XCJzZWFyY2hUZXJtXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctb3B0aW9uIGRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAge3sncGVybWlzc2lvbi5uZ1NlbGVjdF9yZXN1bHROb3RGb3VuZCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGgtZnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0wIHctOCBoLTggcm91bmRlZC1mdWxsIG92ZXJmbG93LWhpZGRlblwiID5cclxuICAgICAgICAgICAgICAgICAgPGN0cy1hdmF0YXIgW3VzZXJdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogaXRlbS5wcm9wZXJ0aWVzLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBpdGVtLnByb3BlcnRpZXMubGFzdE5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9jdHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCAgcHQtMCBweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbS5kaXNwbGF5TGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtLnByb3BlcnRpZXMuZW1haWx9fS17e2l0ZW0ucHJvcGVydGllcy51c2VybmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHJpZ2h0cy1zZWxlY3RcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIG1iLTBcIj5cclxuICAgICAgICAgIHt7IFwicGVybWlzc2lvbi5SaWdodHNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8bmctc2VsZWN0IFxyXG4gICAgICAgICAgW2l0ZW1zXT1cInJpZ2h0c1wiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3Blcm1pc3Npb24ucmlnaHRzUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcclxuICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBlcm1pc3Npb25cIiBcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGFibGVSaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuICBcclxuICAgICAgPCEtLTxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG10LTVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS05MDAgdGV4dC1iYXNlIGZvbnQtYm9sZFwiPlxyXG4gICAgICAgICAge3sgXCJwZXJtaXNzaW9uLnRpbWVmcmFtZVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj46PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwiZm9ybS1yYWRpb1wiIG5hbWU9XCJyYWRpb1wiIHZhbHVlPVwiUGVybWFuZW50XCIgW2NoZWNrZWRdPVwidGltZUZyYW1lID09ICdQZXJtYW5lbnQnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidGltZUZyYW1lID0gJ1Blcm1hbmVudCdcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTIgbXQtMSB0ZXh0LWdyYXktOTAwIHRleHQtc20gZm9udC1ib2xkXCI+e3tcclxuICAgICAgICAgICAgICBcInBlcm1pc3Npb24ucGVybWFuZW50XCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBydGw+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwiZm9ybS1yYWRpb1wiIG5hbWU9XCJyYWRpb1wiIHZhbHVlPVwiRGF0ZS1CYXNlZFwiIFtjaGVja2VkXT1cInRpbWVGcmFtZSA9PSAnRGF0ZS1CYXNlZCdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0aW1lRnJhbWUgPSAnRGF0ZS1CYXNlZCdcIiAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTIgbXQtMSB0ZXh0LWdyYXktOTAwIHRleHQtc20gZm9udC1ib2xkXCI+e3tcclxuICAgICAgICAgICAgICBcInBlcm1pc3Npb24uRGF0ZV9iYXNlZFwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbXQtMlwiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0wXCI+e3sgXCJwZXJtaXNzaW9uLmZyb21cIiB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgPGN0cy1keW5hbWljLWZvcm0taGlqcmktZGF0ZWl0ZW0gXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJiZWdpblwiIFxyXG4gICAgICAgICAgW2lzRGlzYWJsZWRdPVwidGltZUZyYW1lID09ICdQZXJtYW5lbnQnXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGFibGVCZWdpblwiPlxyXG4gICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbT5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIHRleHQtZ3JheS05MDAgbWItMFwiPnt7IFwicGVybWlzc2lvbi50b1wiIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuICAgICAgICA8Y3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbSBcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIFxyXG4gICAgICAgICAgW2lzRGlzYWJsZWRdPVwidGltZUZyYW1lID09ICdQZXJtYW5lbnQnXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZWRpdGFibGVFbmRcIj5cclxuICAgICAgICA8L2N0cy1keW5hbWljLWZvcm0taGlqcmktZGF0ZWl0ZW0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInBlcm1pc3Npb25Gb3JtPy5lcnJvcnM/Lm5vdFZhbGlkXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2UgLW10LTMgXCI+e3tcclxuICAgICAgICAgICAgXCJwZXJtaXNzaW9uLmVuZFN0YXJ0RXJyb3JcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+LS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtNSBmbGV4LXdyYXBcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvbiBtYi0zXCJcclxuICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoZmFsc2UpXCI+XHJcbiAgICAgICAgICB7eyBcIkJVVFRPTlMuQ2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3RhdGUgIT0gJ3VwZGF0ZSdcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNyZWF0ZUFuZEFkZFwiXHJcbiAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJjcmVhdGUocGVybWlzc2lvbkZvcm0udmFsdWUpXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjcmVhdGluZztlbHNlIGxvYWRlclwiPnt7IFwicGVybWlzc2lvbi5jcmVhdGVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXQocGVybWlzc2lvbkZvcm0udmFsdWUpXCIgKm5nSWY9XCJzdGF0ZSA9PSAndXBkYXRlJ1wiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXVwZGF0aW5nO2Vsc2UgbG9hZGVyXCI+e3sgXCJwZXJtaXNzaW9uLnVwZGF0ZVwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic3RhdGUgIT0gJ3VwZGF0ZSdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvbiB3LTQ0XCJcclxuICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWFuZEFkZEFub3RoZXIocGVybWlzc2lvbkZvcm0sIHBlcm1pc3Npb25Gb3JtLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNyZWF0ZUFuZEFkZDtlbHNlIGxvYWRlclwiPnt7IFwicGVybWlzc2lvbi5jcmVhdGVBbmRBZGRcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvYWRlcj5cclxuICA8bWF0LXNwaW5uZXIgW3ZhbHVlXT1cIjkwXCIgW3N0cm9rZVdpZHRoXT1cIjNcIiBvdmVybGF5PVwidHJ1ZVwiIFtkaWFtZXRlcl09XCIyNVwiIGNvbG9yPVwid2FyblwiPlxyXG4gIDwvbWF0LXNwaW5uZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Injectable, EventEmitter, Inject } from '@angular/core';
|
|
2
|
+
import { from } from 'rxjs';
|
|
3
|
+
import { catchError } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../Core/services/nuxeo/nuxeo.service";
|
|
6
|
+
export class PermissionService {
|
|
7
|
+
constructor(nuxeoService, environment) {
|
|
8
|
+
this.nuxeoService = nuxeoService;
|
|
9
|
+
this.environment = environment;
|
|
10
|
+
this.disableClickOutSide = false;
|
|
11
|
+
this.departmentUsers = [];
|
|
12
|
+
this.createAndAddAnother = new EventEmitter();
|
|
13
|
+
}
|
|
14
|
+
getPermissionsForDocument(uid) {
|
|
15
|
+
return from(this.nuxeoService.nuxeoClient
|
|
16
|
+
.request(`/id/${uid}`)
|
|
17
|
+
.queryParams({
|
|
18
|
+
"fetch-acls": 'username,creator,extended',
|
|
19
|
+
"depth": 'children',
|
|
20
|
+
"time": '1635249129268'
|
|
21
|
+
})
|
|
22
|
+
.get({
|
|
23
|
+
headers: {
|
|
24
|
+
'enrichers-document': "acls, permissions, userVisiblePermissions",
|
|
25
|
+
'Content-Type': "application/json",
|
|
26
|
+
"accept": "text/plain,application/json, application/json",
|
|
27
|
+
},
|
|
28
|
+
})).pipe(catchError((err) => {
|
|
29
|
+
throw err;
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
blockPermissionInheritance(uid) {
|
|
33
|
+
return from(this.nuxeoService.nuxeoClient
|
|
34
|
+
.operation('Document.BlockPermissionInheritance', {
|
|
35
|
+
url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
|
|
36
|
+
})
|
|
37
|
+
.input(uid)
|
|
38
|
+
.params({
|
|
39
|
+
acl: "local",
|
|
40
|
+
})
|
|
41
|
+
.context({})
|
|
42
|
+
.execute()).pipe(catchError((err) => {
|
|
43
|
+
throw err;
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
unblockPermissionInheritance(uid) {
|
|
47
|
+
return from(this.nuxeoService.nuxeoClient
|
|
48
|
+
.operation('Document.UnblockPermissionInheritance', {
|
|
49
|
+
url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
|
|
50
|
+
})
|
|
51
|
+
.input(uid)
|
|
52
|
+
.params({
|
|
53
|
+
acl: "local",
|
|
54
|
+
})
|
|
55
|
+
.context({})
|
|
56
|
+
.execute()).pipe(catchError((err) => {
|
|
57
|
+
throw err;
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
addNewLocalPermissions(uid, formData) {
|
|
61
|
+
return from(this.nuxeoService.nuxeoClient
|
|
62
|
+
.operation('Document.AddPermission', {
|
|
63
|
+
url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
|
|
64
|
+
})
|
|
65
|
+
.input(uid)
|
|
66
|
+
.params(Object.assign({}, formData))
|
|
67
|
+
.context({})
|
|
68
|
+
.execute()).pipe(catchError((err) => {
|
|
69
|
+
throw err;
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
editLocalPermissions(uid, formData) {
|
|
73
|
+
return from(this.nuxeoService.nuxeoClient
|
|
74
|
+
.operation('Document.ReplacePermission', {
|
|
75
|
+
url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
|
|
76
|
+
})
|
|
77
|
+
.input(uid)
|
|
78
|
+
.params(Object.assign({}, formData))
|
|
79
|
+
.context({})
|
|
80
|
+
.execute()).pipe(catchError((err) => {
|
|
81
|
+
throw err;
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
deleteLocalPermissions(uid, param) {
|
|
85
|
+
return from(this.nuxeoService.nuxeoClient
|
|
86
|
+
.operation('Document.RemovePermission', {
|
|
87
|
+
url: `${this.environment.nuxeo}${this.environment.customAutomation}`,
|
|
88
|
+
})
|
|
89
|
+
.input(uid)
|
|
90
|
+
.params({
|
|
91
|
+
id: param
|
|
92
|
+
})
|
|
93
|
+
.context({})
|
|
94
|
+
.execute()).pipe(catchError((err) => {
|
|
95
|
+
throw err;
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
getDepMembers(deptTitle, params = {}) {
|
|
99
|
+
return from(this.nuxeoService.nuxeoClient
|
|
100
|
+
.request(`group-members/all-members/dms_user_${deptTitle}`)
|
|
101
|
+
.queryParams(Object.assign({ q: '*' }, params))
|
|
102
|
+
.get()).pipe(catchError((err) => {
|
|
103
|
+
throw err;
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
PermissionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionService, deps: [{ token: i1.NuxeoService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
+
PermissionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionService, providedIn: 'root' });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: PermissionService, decorators: [{
|
|
110
|
+
type: Injectable,
|
|
111
|
+
args: [{
|
|
112
|
+
providedIn: 'root'
|
|
113
|
+
}]
|
|
114
|
+
}], ctorParameters: function () { return [{ type: i1.NuxeoService }, { type: undefined, decorators: [{
|
|
115
|
+
type: Inject,
|
|
116
|
+
args: ['environment']
|
|
117
|
+
}] }]; } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNNUMsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixZQUEwQixFQUFrQyxXQUFXO1FBQXZFLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQWtDLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBSDNGLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3NELENBQUM7SUFFaEcseUJBQXlCLENBQUMsR0FBUTtRQUNoQyxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7YUFDMUIsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7YUFDckIsV0FBVyxDQUFDO1lBQ1gsWUFBWSxFQUFFLDJCQUEyQjtZQUN6QyxPQUFPLEVBQUUsVUFBVTtZQUNuQixNQUFNLEVBQUUsZUFBZTtTQUN4QixDQUFDO2FBQ0QsR0FBRyxDQUFDO1lBQ0gsT0FBTyxFQUFFO2dCQUNQLG9CQUFvQixFQUFFLDJDQUEyQztnQkFDakUsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsUUFBUSxFQUFFLCtDQUErQzthQUMxRDtTQUNGLENBQUMsQ0FDTCxDQUFDLElBQUksQ0FDSixVQUFV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R0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRTtTQUNyRSxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLE1BQU0sQ0FBQztZQUNOLEVBQUUsRUFBQyxLQUFLO1NBQ1QsQ0FBQzthQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDWCxPQUFPLEVBQUUsQ0FFYixDQUFDLElBQUksQ0FDSixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUNsQyxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVc7YUFDMUIsT0FBTyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQzthQUMxRCxXQUFXLGlCQUFHLENBQUMsRUFBRSxHQUFHLElBQUssTUFBTSxFQUFHO2FBQ2xDLEdBQUcsRUFBRSxDQUNULENBQUMsSUFBSSxDQUNKLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OzhHQTVJVSxpQkFBaUIsOENBSTZCLGFBQWE7a0hBSjNELGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUttRCxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFdmVudEVtaXR0ZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE51eGVvU2VydmljZSB9IGZyb20gJy4uLy4uL0NvcmUvc2VydmljZXMvbnV4ZW8vbnV4ZW8uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uU2VydmljZSB7XHJcbiAgZGlzYWJsZUNsaWNrT3V0U2lkZSA9IGZhbHNlO1xyXG4gIGRlcGFydG1lbnRVc2VycyA9IFtdO1xyXG4gIGNyZWF0ZUFuZEFkZEFub3RoZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSAsIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCkgeyB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25zRm9yRG9jdW1lbnQodWlkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50XHJcbiAgICAgICAgLnJlcXVlc3QoYC9pZC8ke3VpZH1gKVxyXG4gICAgICAgIC5xdWVyeVBhcmFtcyh7XHJcbiAgICAgICAgICBcImZldGNoLWFjbHNcIjogJ3VzZXJuYW1lLGNyZWF0b3IsZXh0ZW5kZWQnLFxyXG4gICAgICAgICAgXCJkZXB0aFwiOiAnY2hpbGRyZW4nLFxyXG4gICAgICAgICAgXCJ0aW1lXCI6ICcxNjM1MjQ5MTI5MjY4J1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmdldCh7XHJcbiAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICdlbnJpY2hlcnMtZG9jdW1lbnQnOiBcImFjbHMsIHBlcm1pc3Npb25zLCB1c2VyVmlzaWJsZVBlcm1pc3Npb25zXCIsXHJcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICAgICAgXCJhY2NlcHRcIjogXCJ0ZXh0L3BsYWluLGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJsb2NrUGVybWlzc2lvbkluaGVyaXRhbmNlKHVpZDogYW55KSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKCdEb2N1bWVudC5CbG9ja1Blcm1pc3Npb25Jbmhlcml0YW5jZScsIHtcclxuICAgICAgICAgIHVybDogYCR7dGhpcy5lbnZpcm9ubWVudC5udXhlb30ke3RoaXMuZW52aXJvbm1lbnQuY3VzdG9tQXV0b21hdGlvbn1gLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmlucHV0KHVpZClcclxuICAgICAgICAucGFyYW1zKHtcclxuICAgICAgICAgIGFjbDogXCJsb2NhbFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNvbnRleHQoe30pXHJcbiAgICAgICAgLmV4ZWN1dGUoKVxyXG5cclxuICAgICkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVuYmxvY2tQZXJtaXNzaW9uSW5oZXJpdGFuY2UodWlkOiBhbnkpIHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudFxyXG4gICAgICAgIC5vcGVyYXRpb24oJ0RvY3VtZW50LlVuYmxvY2tQZXJtaXNzaW9uSW5oZXJpdGFuY2UnLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLmVudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5pbnB1dCh1aWQpXHJcbiAgICAgICAgLnBhcmFtcyh7XHJcbiAgICAgICAgICBhY2w6IFwibG9jYWxcIixcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jb250ZXh0KHt9KVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdMb2NhbFBlcm1pc3Npb25zKHVpZCxmb3JtRGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKCdEb2N1bWVudC5BZGRQZXJtaXNzaW9uJywge1xyXG4gICAgICAgICAgdXJsOiBgJHt0aGlzLmVudmlyb25tZW50Lm51eGVvfSR7dGhpcy5lbnZpcm9ubWVudC5jdXN0b21BdXRvbWF0aW9ufWAsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuaW5wdXQodWlkKVxyXG4gICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgLi4uZm9ybURhdGFcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jb250ZXh0KHt9KVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBlZGl0TG9jYWxQZXJtaXNzaW9ucyh1aWQsZm9ybURhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50XHJcbiAgICAgICAgLm9wZXJhdGlvbignRG9jdW1lbnQuUmVwbGFjZVBlcm1pc3Npb24nLCB7XHJcbiAgICAgICAgICB1cmw6IGAke3RoaXMuZW52aXJvbm1lbnQubnV4ZW99JHt0aGlzLmVudmlyb25tZW50LmN1c3RvbUF1dG9tYXRpb259YCxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5pbnB1dCh1aWQpXHJcbiAgICAgICAgLnBhcmFtcyh7XHJcbiAgICAgICAgICAuLi5mb3JtRGF0YVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNvbnRleHQoe30pXHJcbiAgICAgICAgLmV4ZWN1dGUoKVxyXG5cclxuICAgICkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxvY2FsUGVybWlzc2lvbnModWlkLHBhcmFtKSB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnRcclxuICAgICAgICAub3BlcmF0aW9uKCdEb2N1bWVudC5SZW1vdmVQZXJtaXNzaW9uJywge1xyXG4gICAgICAgICAgdXJsOiBgJHt0aGlzLmVudmlyb25tZW50Lm51eGVvfSR7dGhpcy5lbnZpcm9ubWVudC5jdXN0b21BdXRvbWF0aW9ufWAsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuaW5wdXQodWlkKVxyXG4gICAgICAgIC5wYXJhbXMoe1xyXG4gICAgICAgICAgaWQ6cGFyYW1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jb250ZXh0KHt9KVxyXG4gICAgICAgIC5leGVjdXRlKClcclxuXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXREZXBNZW1iZXJzKGRlcHRUaXRsZSwgcGFyYW1zID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIGZyb20oXHJcbiAgICAgIHRoaXMubnV4ZW9TZXJ2aWNlLm51eGVvQ2xpZW50XHJcbiAgICAgICAgLnJlcXVlc3QoYGdyb3VwLW1lbWJlcnMvYWxsLW1lbWJlcnMvZG1zX3VzZXJfJHtkZXB0VGl0bGV9YClcclxuICAgICAgICAucXVlcnlQYXJhbXMoeyBxOiAnKicsIC4uLnBhcmFtcyB9KVxyXG4gICAgICAgIC5nZXQoKVxyXG4gICAgKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|