UNPKG

@alfresco/adf-content-services

Version:
78 lines 11.8 kB
import { MatDialog } from '@angular/material/dialog'; import { Injectable } from '@angular/core'; import { Subject, throwError } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { NodePermissionService } from './node-permission.service'; import { AddPermissionDialogComponent } from '../components/add-permission/add-permission-dialog.component'; import { ContentService } from '../../common/services/content.service'; import { AllowableOperationsEnum } from '../../common/models/allowable-operations.enum'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; import * as i2 from "./node-permission.service"; import * as i3 from "../../common/services/content.service"; export class NodePermissionDialogService { constructor(dialog, nodePermissionService, contentService) { this.dialog = dialog; this.nodePermissionService = nodePermissionService; this.contentService = contentService; } /** * Opens a dialog to add permissions to a node. * * @param node target node * @param roles settable roles for the node * @param title Dialog title * @returns Node with updated permissions */ openAddPermissionDialog(node, roles, title) { if (this.contentService.hasAllowableOperations(node, AllowableOperationsEnum.UPDATEPERMISSIONS)) { const confirm = new Subject(); confirm.subscribe({ complete: this.close.bind(this) }); const data = { node, title, confirm, roles }; this.openDialog(data, 'adf-add-permission-dialog', '800px'); return confirm; } else { const errors = new Error(JSON.stringify({ error: { statusCode: 403 } })); errors.message = 'PERMISSION_MANAGER.ERROR.NOT-ALLOWED'; return throwError(errors); } } openDialog(data, currentPanelClass, chosenWidth) { this.dialog.open(AddPermissionDialogComponent, { data, panelClass: currentPanelClass, width: chosenWidth, restoreFocus: true }); } /** * Closes the currently-open dialog. */ close() { this.dialog.closeAll(); } /** * Opens a dialog to update permissions for a node. * * @param nodeId ID of the target node * @param title Dialog title * @returns Node with updated permissions */ updateNodePermissionByDialog(nodeId, title) { return this.nodePermissionService .getNodeWithRoles(nodeId) .pipe(switchMap(({ node, roles }) => this.openAddPermissionDialog(node, roles, title).pipe(switchMap((selection) => this.nodePermissionService.updateNodePermissions(nodeId, selection))))); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NodePermissionDialogService, deps: [{ token: i1.MatDialog }, { token: i2.NodePermissionService }, { token: i3.ContentService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NodePermissionDialogService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: NodePermissionDialogService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.NodePermissionService }, { type: i3.ContentService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1wZXJtaXNzaW9uLWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9wZXJtaXNzaW9uLW1hbmFnZXIvc2VydmljZXMvbm9kZS1wZXJtaXNzaW9uLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFHNUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7OztBQUt4RixNQUFNLE9BQU8sMkJBQTJCO0lBQ3BDLFlBQW9CLE1BQWlCLEVBQVUscUJBQTRDLEVBQVUsY0FBOEI7UUFBL0csV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFBRyxDQUFDO0lBRXZJOzs7Ozs7O09BT0c7SUFDSCx1QkFBdUIsQ0FBQyxJQUFVLEVBQUUsS0FBa0IsRUFBRSxLQUFjO1FBQ2xFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQzlGLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1lBRW5ELE9BQU8sQ0FBQyxTQUFTLENBQUM7Z0JBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNsQyxDQUFDLENBQUM7WUFFSCxNQUFNLElBQUksR0FBNEI7Z0JBQ2xDLElBQUk7Z0JBQ0osS0FBSztnQkFDTCxPQUFPO2dCQUNQLEtBQUs7YUFDUixDQUFDO1lBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDNUQsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsc0NBQXNDLENBQUM7WUFDeEQsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBUyxFQUFFLGlCQUF5QixFQUFFLFdBQW1CO1FBQ3hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCw0QkFBNEIsQ0FBQyxNQUFlLEVBQUUsS0FBYztRQUN4RCxPQUFPLElBQUksQ0FBQyxxQkFBcUI7YUFDNUIsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO2FBQ3hCLElBQUksQ0FDRCxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQzFCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDakQsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQ2hHLENBQ0osQ0FDSixDQUFDO0lBQ1YsQ0FBQzs4R0EvRFEsMkJBQTJCO2tIQUEzQiwyQkFBMkIsY0FGeEIsTUFBTTs7MkZBRVQsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgTm9kZSwgUGVybWlzc2lvbkVsZW1lbnQgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb2RlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuL25vZGUtcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZFBlcm1pc3Npb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkZC1wZXJtaXNzaW9uL2FkZC1wZXJtaXNzaW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRkUGVybWlzc2lvbkRpYWxvZ0RhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkZC1wZXJtaXNzaW9uL2FkZC1wZXJtaXNzaW9uLWRpYWxvZy1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSb2xlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcm9sZS5tb2RlbCc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxsb3dhYmxlT3BlcmF0aW9uc0VudW0gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2FsbG93YWJsZS1vcGVyYXRpb25zLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVQZXJtaXNzaW9uRGlhbG9nU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZywgcHJpdmF0ZSBub2RlUGVybWlzc2lvblNlcnZpY2U6IE5vZGVQZXJtaXNzaW9uU2VydmljZSwgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UpIHt9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIGRpYWxvZyB0byBhZGQgcGVybWlzc2lvbnMgdG8gYSBub2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5vZGUgdGFyZ2V0IG5vZGVcbiAgICAgKiBAcGFyYW0gcm9sZXMgc2V0dGFibGUgcm9sZXMgZm9yIHRoZSBub2RlXG4gICAgICogQHBhcmFtIHRpdGxlIERpYWxvZyB0aXRsZVxuICAgICAqIEByZXR1cm5zIE5vZGUgd2l0aCB1cGRhdGVkIHBlcm1pc3Npb25zXG4gICAgICovXG4gICAgb3BlbkFkZFBlcm1pc3Npb25EaWFsb2cobm9kZTogTm9kZSwgcm9sZXM6IFJvbGVNb2RlbFtdLCB0aXRsZT86IHN0cmluZyk6IE9ic2VydmFibGU8UGVybWlzc2lvbkVsZW1lbnRbXT4ge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKG5vZGUsIEFsbG93YWJsZU9wZXJhdGlvbnNFbnVtLlVQREFURVBFUk1JU1NJT05TKSkge1xuICAgICAgICAgICAgY29uc3QgY29uZmlybSA9IG5ldyBTdWJqZWN0PFBlcm1pc3Npb25FbGVtZW50W10+KCk7XG5cbiAgICAgICAgICAgIGNvbmZpcm0uc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogdGhpcy5jbG9zZS5iaW5kKHRoaXMpXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZGF0YTogQWRkUGVybWlzc2lvbkRpYWxvZ0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICBjb25maXJtLFxuICAgICAgICAgICAgICAgIHJvbGVzXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coZGF0YSwgJ2FkZi1hZGQtcGVybWlzc2lvbi1kaWFsb2cnLCAnODAwcHgnKTtcbiAgICAgICAgICAgIHJldHVybiBjb25maXJtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IHsgc3RhdHVzQ29kZTogNDAzIH0gfSkpO1xuICAgICAgICAgICAgZXJyb3JzLm1lc3NhZ2UgPSAnUEVSTUlTU0lPTl9NQU5BR0VSLkVSUk9SLk5PVC1BTExPV0VEJztcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9ycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5EaWFsb2coZGF0YTogYW55LCBjdXJyZW50UGFuZWxDbGFzczogc3RyaW5nLCBjaG9zZW5XaWR0aDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oQWRkUGVybWlzc2lvbkRpYWxvZ0NvbXBvbmVudCwgeyBkYXRhLCBwYW5lbENsYXNzOiBjdXJyZW50UGFuZWxDbGFzcywgd2lkdGg6IGNob3NlbldpZHRoLCByZXN0b3JlRm9jdXM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBjdXJyZW50bHktb3BlbiBkaWFsb2cuXG4gICAgICovXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBkaWFsb2cgdG8gdXBkYXRlIHBlcm1pc3Npb25zIGZvciBhIG5vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbm9kZUlkIElEIG9mIHRoZSB0YXJnZXQgbm9kZVxuICAgICAqIEBwYXJhbSB0aXRsZSBEaWFsb2cgdGl0bGVcbiAgICAgKiBAcmV0dXJucyBOb2RlIHdpdGggdXBkYXRlZCBwZXJtaXNzaW9uc1xuICAgICAqL1xuICAgIHVwZGF0ZU5vZGVQZXJtaXNzaW9uQnlEaWFsb2cobm9kZUlkPzogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IE9ic2VydmFibGU8Tm9kZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2RlUGVybWlzc2lvblNlcnZpY2VcbiAgICAgICAgICAgIC5nZXROb2RlV2l0aFJvbGVzKG5vZGVJZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBub2RlLCByb2xlcyB9KSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5BZGRQZXJtaXNzaW9uRGlhbG9nKG5vZGUsIHJvbGVzLCB0aXRsZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoc2VsZWN0aW9uKSA9PiB0aGlzLm5vZGVQZXJtaXNzaW9uU2VydmljZS51cGRhdGVOb2RlUGVybWlzc2lvbnMobm9kZUlkLCBzZWxlY3Rpb24pKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=