import { RestService, CoreModule } from '@abp/ng.core'; import { ThemeSharedModule } from '@abp/ng.theme.shared'; import { Injectable, ɵɵdefineInjectable, ɵɵinject, EventEmitter, Component, Renderer2, Input, Output, NgModule } from '@angular/core'; import { Action, Selector, State, Store, Select, NgxsModule } from '@ngxs/store'; import { __decorate, __metadata, __assign, __spread } from 'tslib'; import { Observable } from 'rxjs'; import { tap, map, take, pluck } from 'rxjs/operators'; /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var GetPermissions = /** @class */ (function () { function GetPermissions(payload) { this.payload = payload; } GetPermissions.type = '[PermissionManagement] Get Permissions'; return GetPermissions; }()); if (false) { /** @type {?} */ GetPermissions.type; /** @type {?} */ GetPermissions.prototype.payload; } var UpdatePermissions = /** @class */ (function () { function UpdatePermissions(payload) { this.payload = payload; } UpdatePermissions.type = '[PermissionManagement] Update Permissions'; return UpdatePermissions; }()); if (false) { /** @type {?} */ UpdatePermissions.type; /** @type {?} */ UpdatePermissions.prototype.payload; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var PermissionManagementService = /** @class */ (function () { function PermissionManagementService(rest) { this.rest = rest; } /** * @param {?} params * @return {?} */ PermissionManagementService.prototype.getPermissions = /** * @param {?} params * @return {?} */ function (params) { /** @type {?} */ var request = { method: 'GET', url: '/api/abp/permissions', params: params, }; return this.rest.request(request); }; /** * @param {?} __0 * @return {?} */ PermissionManagementService.prototype.updatePermissions = /** * @param {?} __0 * @return {?} */ function (_a) { var permissions = _a.permissions, providerKey = _a.providerKey, providerName = _a.providerName; /** @type {?} */ var request = { method: 'PUT', url: '/api/abp/permissions', body: { permissions: permissions }, params: { providerKey: providerKey, providerName: providerName }, }; return this.rest.request(request); }; PermissionManagementService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; /** @nocollapse */ PermissionManagementService.ctorParameters = function () { return [ { type: RestService } ]; }; /** @nocollapse */ PermissionManagementService.ngInjectableDef = ɵɵdefineInjectable({ factory: function PermissionManagementService_Factory() { return new PermissionManagementService(ɵɵinject(RestService)); }, token: PermissionManagementService, providedIn: "root" }); return PermissionManagementService; }()); if (false) { /** * @type {?} * @private */ PermissionManagementService.prototype.rest; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var PermissionManagementState = /** @class */ (function () { function PermissionManagementState(permissionManagementService) { this.permissionManagementService = permissionManagementService; } /** * @param {?} __0 * @return {?} */ PermissionManagementState.getPermissionGroups = /** * @param {?} __0 * @return {?} */ function (_a) { var permissionRes = _a.permissionRes; return permissionRes.groups || []; }; /** * @param {?} __0 * @return {?} */ PermissionManagementState.getEntitiyDisplayName = /** * @param {?} __0 * @return {?} */ function (_a) { var permissionRes = _a.permissionRes; return permissionRes.entityDisplayName; }; /** * @param {?} __0 * @param {?} __1 * @return {?} */ PermissionManagementState.prototype.permissionManagementGet = /** * @param {?} __0 * @param {?} __1 * @return {?} */ function (_a, _b) { var patchState = _a.patchState; var payload = _b.payload; return this.permissionManagementService.getPermissions(payload).pipe(tap((/** * @param {?} permissionResponse * @return {?} */ function (permissionResponse) { return patchState({ permissionRes: permissionResponse, }); }))); }; /** * @param {?} _ * @param {?} __1 * @return {?} */ PermissionManagementState.prototype.permissionManagementUpdate = /** * @param {?} _ * @param {?} __1 * @return {?} */ function (_, _a) { var payload = _a.payload; return this.permissionManagementService.updatePermissions(payload); }; PermissionManagementState.ctorParameters = function () { return [ { type: PermissionManagementService } ]; }; __decorate([ Action(GetPermissions), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, GetPermissions]), __metadata("design:returntype", void 0) ], PermissionManagementState.prototype, "permissionManagementGet", null); __decorate([ Action(UpdatePermissions), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, UpdatePermissions]), __metadata("design:returntype", void 0) ], PermissionManagementState.prototype, "permissionManagementUpdate", null); __decorate([ Selector(), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], PermissionManagementState, "getPermissionGroups", null); __decorate([ Selector(), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", String) ], PermissionManagementState, "getEntitiyDisplayName", null); PermissionManagementState = __decorate([ State({ name: 'PermissionManagementState', defaults: (/** @type {?} */ ({ permissionRes: {} })), }), __metadata("design:paramtypes", [PermissionManagementService]) ], PermissionManagementState); return PermissionManagementState; }()); if (false) { /** * @type {?} * @private */ PermissionManagementState.prototype.permissionManagementService; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var PermissionManagementComponent = /** @class */ (function () { function PermissionManagementComponent(store, renderer) { this.store = store; this.renderer = renderer; this.visibleChange = new EventEmitter(); this.permissions = []; this.selectThisTab = false; this.selectAllTab = false; this.modalBusy = false; this.trackByFn = (/** * @param {?} _ * @param {?} item * @return {?} */ function (_, item) { return item.name; }); } Object.defineProperty(PermissionManagementComponent.prototype, "visible", { get: /** * @return {?} */ function () { return this._visible; }, set: /** * @param {?} value * @return {?} */ function (value) { if (!this.selectedGroup) return; this._visible = value; this.visibleChange.emit(value); if (!value) { this.selectedGroup = null; } }, enumerable: true, configurable: true }); Object.defineProperty(PermissionManagementComponent.prototype, "selectedGroupPermissions$", { get: /** * @return {?} */ function () { var _this = this; return this.groups$.pipe(map((/** * @param {?} groups * @return {?} */ function (groups) { return _this.selectedGroup ? groups.find((/** * @param {?} group * @return {?} */ function (group) { return group.name === _this.selectedGroup.name; })).permissions : []; })), map((/** * @param {?} permissions * @return {?} */ function (permissions) { return permissions.map((/** * @param {?} permission * @return {?} */ function (permission) { return ((/** @type {?} */ (((/** @type {?} */ (__assign({}, permission, { margin: findMargin(permissions, permission), isGranted: _this.permissions.find((/** * @param {?} per * @return {?} */ function (per) { return per.name === permission.name; })).isGranted }))))))); })); }))); }, enumerable: true, configurable: true }); /** * @return {?} */ PermissionManagementComponent.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * @param {?} name * @return {?} */ PermissionManagementComponent.prototype.getChecked = /** * @param {?} name * @return {?} */ function (name) { return (this.permissions.find((/** * @param {?} per * @return {?} */ function (per) { return per.name === name; })) || { isGranted: false }).isGranted; }; /** * @param {?} grantedProviders * @return {?} */ PermissionManagementComponent.prototype.isGrantedByRole = /** * @param {?} grantedProviders * @return {?} */ function (grantedProviders) { if (grantedProviders.length) { return grantedProviders.findIndex((/** * @param {?} p * @return {?} */ function (p) { return p.providerName === 'Role'; })) > -1; } return false; }; /** * @param {?} clickedPermission * @param {?} value * @return {?} */ PermissionManagementComponent.prototype.onClickCheckbox = /** * @param {?} clickedPermission * @param {?} value * @return {?} */ function (clickedPermission, value) { var _this = this; if (clickedPermission.isGranted && this.isGrantedByRole(clickedPermission.grantedProviders)) return; setTimeout((/** * @return {?} */ function () { _this.permissions = _this.permissions.map((/** * @param {?} per * @return {?} */ function (per) { if (clickedPermission.name === per.name) { return __assign({}, per, { isGranted: !per.isGranted }); } else if (clickedPermission.name === per.parentName && clickedPermission.isGranted) { return __assign({}, per, { isGranted: false }); } else if (clickedPermission.parentName === per.name && !clickedPermission.isGranted) { return __assign({}, per, { isGranted: true }); } return per; })); _this.setTabCheckboxState(); _this.setGrantCheckboxState(); }), 0); }; /** * @return {?} */ PermissionManagementComponent.prototype.setTabCheckboxState = /** * @return {?} */ function () { var _this = this; this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** * @param {?} permissions * @return {?} */ function (permissions) { /** @type {?} */ var selectedPermissions = permissions.filter((/** * @param {?} per * @return {?} */ function (per) { return per.isGranted; })); /** @type {?} */ var element = (/** @type {?} */ (document.querySelector('#select-all-in-this-tabs'))); if (selectedPermissions.length === permissions.length) { element.indeterminate = false; _this.selectThisTab = true; } else if (selectedPermissions.length === 0) { element.indeterminate = false; _this.selectThisTab = false; } else { element.indeterminate = true; } })); }; /** * @return {?} */ PermissionManagementComponent.prototype.setGrantCheckboxState = /** * @return {?} */ function () { /** @type {?} */ var selectedAllPermissions = this.permissions.filter((/** * @param {?} per * @return {?} */ function (per) { return per.isGranted; })); /** @type {?} */ var checkboxElement = (/** @type {?} */ (document.querySelector('#select-all-in-all-tabs'))); if (selectedAllPermissions.length === this.permissions.length) { checkboxElement.indeterminate = false; this.selectAllTab = true; } else if (selectedAllPermissions.length === 0) { checkboxElement.indeterminate = false; this.selectAllTab = false; } else { checkboxElement.indeterminate = true; } }; /** * @return {?} */ PermissionManagementComponent.prototype.onClickSelectThisTab = /** * @return {?} */ function () { var _this = this; this.selectedGroupPermissions$.pipe(take(1)).subscribe((/** * @param {?} permissions * @return {?} */ function (permissions) { permissions.forEach((/** * @param {?} permission * @return {?} */ function (permission) { if (permission.isGranted && _this.isGrantedByRole(permission.grantedProviders)) return; /** @type {?} */ var index = _this.permissions.findIndex((/** * @param {?} per * @return {?} */ function (per) { return per.name === permission.name; })); _this.permissions = __spread(_this.permissions.slice(0, index), [ __assign({}, _this.permissions[index], { isGranted: !_this.selectThisTab }) ], _this.permissions.slice(index + 1)); })); })); this.setGrantCheckboxState(); }; /** * @return {?} */ PermissionManagementComponent.prototype.onClickSelectAll = /** * @return {?} */ function () { var _this = this; this.permissions = this.permissions.map((/** * @param {?} permission * @return {?} */ function (permission) { return (__assign({}, permission, { isGranted: !_this.selectAllTab })); })); this.selectThisTab = !this.selectAllTab; }; /** * @param {?} group * @return {?} */ PermissionManagementComponent.prototype.onChangeGroup = /** * @param {?} group * @return {?} */ function (group) { this.selectedGroup = group; this.setTabCheckboxState(); }; /** * @return {?} */ PermissionManagementComponent.prototype.submit = /** * @return {?} */ function () { var _this = this; this.modalBusy = true; /** @type {?} */ var unchangedPermissions = getPermissions(this.store.selectSnapshot(PermissionManagementState.getPermissionGroups)); /** @type {?} */ var changedPermissions = this.permissions .filter((/** * @param {?} per * @return {?} */ function (per) { return unchangedPermissions.find((/** * @param {?} unchanged * @return {?} */ function (unchanged) { return unchanged.name === per.name; })).isGranted === per.isGranted ? false : true; })) .map((/** * @param {?} __0 * @return {?} */ function (_a) { var name = _a.name, isGranted = _a.isGranted; return ({ name: name, isGranted: isGranted }); })); if (changedPermissions.length) { this.store .dispatch(new UpdatePermissions({ providerKey: this.providerKey, providerName: this.providerName, permissions: changedPermissions })) .subscribe((/** * @return {?} */ function () { _this.modalBusy = false; _this.visible = false; })); } else { this.modalBusy = false; this.visible = false; } }; /** * @return {?} */ PermissionManagementComponent.prototype.openModal = /** * @return {?} */ function () { var _this = this; if (!this.providerKey || !this.providerName) { throw new Error('Provider Key and Provider Name are required.'); } this.store .dispatch(new GetPermissions({ providerKey: this.providerKey, providerName: this.providerName })) .pipe(pluck('PermissionManagementState', 'permissionRes')) .subscribe((/** * @param {?} permissionRes * @return {?} */ function (permissionRes) { _this.selectedGroup = permissionRes.groups[0]; _this.permissions = getPermissions(permissionRes.groups); _this.visible = true; })); }; /** * @return {?} */ PermissionManagementComponent.prototype.initModal = /** * @return {?} */ function () { this.setTabCheckboxState(); this.setGrantCheckboxState(); }; /** * @param {?} __0 * @return {?} */ PermissionManagementComponent.prototype.ngOnChanges = /** * @param {?} __0 * @return {?} */ function (_a) { var visible = _a.visible; if (!visible) return; if (visible.currentValue) { this.openModal(); } else if (visible.currentValue === false && this.visible) { this.visible = false; } }; PermissionManagementComponent.decorators = [ { type: Component, args: [{ selector: 'abp-permission-management', template: "\n \n \n

{{ 'AbpPermissionManagement::Permissions' | abpLocalization }} - {{ data.entityName }}

\n
\n \n
\n \n \n
\n\n
\n
\n
\n
    \n
  • \n {{ group?.displayName }}\n
  • \n
\n
\n
\n

{{ selectedGroup?.displayName }}

\n
\n
\n
\n \n \n
\n
\n \n \n {{ permission.displayName }}\n {{ provider.providerName }}: {{ provider.providerKey }}\n
\n
\n
\n \n
\n \n \n {{ 'AbpIdentity::Save' | abpLocalization }}\n \n
\n
\n" }] } ]; /** @nocollapse */ PermissionManagementComponent.ctorParameters = function () { return [ { type: Store }, { type: Renderer2 } ]; }; PermissionManagementComponent.propDecorators = { providerName: [{ type: Input }], providerKey: [{ type: Input }], visible: [{ type: Input }], visibleChange: [{ type: Output }] }; __decorate([ Select(PermissionManagementState.getPermissionGroups), __metadata("design:type", Observable) ], PermissionManagementComponent.prototype, "groups$", void 0); __decorate([ Select(PermissionManagementState.getEntitiyDisplayName), __metadata("design:type", Observable) ], PermissionManagementComponent.prototype, "entityName$", void 0); return PermissionManagementComponent; }()); if (false) { /** @type {?} */ PermissionManagementComponent.prototype.providerName; /** @type {?} */ PermissionManagementComponent.prototype.providerKey; /** * @type {?} * @protected */ PermissionManagementComponent.prototype._visible; /** @type {?} */ PermissionManagementComponent.prototype.visibleChange; /** @type {?} */ PermissionManagementComponent.prototype.groups$; /** @type {?} */ PermissionManagementComponent.prototype.entityName$; /** @type {?} */ PermissionManagementComponent.prototype.selectedGroup; /** @type {?} */ PermissionManagementComponent.prototype.permissions; /** @type {?} */ PermissionManagementComponent.prototype.selectThisTab; /** @type {?} */ PermissionManagementComponent.prototype.selectAllTab; /** @type {?} */ PermissionManagementComponent.prototype.modalBusy; /** @type {?} */ PermissionManagementComponent.prototype.trackByFn; /** * @type {?} * @private */ PermissionManagementComponent.prototype.store; /** * @type {?} * @private */ PermissionManagementComponent.prototype.renderer; } /** * @param {?} permissions * @param {?} permission * @return {?} */ function findMargin(permissions, permission) { /** @type {?} */ var parentPermission = permissions.find((/** * @param {?} per * @return {?} */ function (per) { return per.name === permission.parentName; })); if (parentPermission && parentPermission.parentName) { /** @type {?} */ var margin = 20; return (margin += findMargin(permissions, parentPermission)); } return parentPermission ? 20 : 0; } /** * @param {?} groups * @return {?} */ function getPermissions(groups) { return groups.reduce((/** * @param {?} acc * @param {?} val * @return {?} */ function (acc, val) { return __spread(acc, val.permissions); }), []); } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var PermissionManagementModule = /** @class */ (function () { function PermissionManagementModule() { } PermissionManagementModule.decorators = [ { type: NgModule, args: [{ declarations: [PermissionManagementComponent], imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState])], exports: [PermissionManagementComponent], },] } ]; return PermissionManagementModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var PermissionManagement; (function (PermissionManagement) { /** * @record */ function State() { } PermissionManagement.State = State; if (false) { /** @type {?} */ State.prototype.permissionRes; } /** * @record */ function Response() { } PermissionManagement.Response = Response; if (false) { /** @type {?} */ Response.prototype.entityDisplayName; /** @type {?} */ Response.prototype.groups; } /** * @record */ function Group() { } PermissionManagement.Group = Group; if (false) { /** @type {?} */ Group.prototype.name; /** @type {?} */ Group.prototype.displayName; /** @type {?} */ Group.prototype.permissions; } /** * @record */ function MinimumPermission() { } PermissionManagement.MinimumPermission = MinimumPermission; if (false) { /** @type {?} */ MinimumPermission.prototype.name; /** @type {?} */ MinimumPermission.prototype.isGranted; } /** * @record */ function Permission() { } PermissionManagement.Permission = Permission; if (false) { /** @type {?} */ Permission.prototype.displayName; /** @type {?} */ Permission.prototype.parentName; /** @type {?} */ Permission.prototype.allowedProviders; /** @type {?} */ Permission.prototype.grantedProviders; } /** * @record */ function GrantedProvider() { } PermissionManagement.GrantedProvider = GrantedProvider; if (false) { /** @type {?} */ GrantedProvider.prototype.providerName; /** @type {?} */ GrantedProvider.prototype.providerKey; } /** * @record */ function UpdateRequest() { } PermissionManagement.UpdateRequest = UpdateRequest; if (false) { /** @type {?} */ UpdateRequest.prototype.permissions; } })(PermissionManagement || (PermissionManagement = {})); /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var PermissionManagementStateService = /** @class */ (function () { function PermissionManagementStateService(store) { this.store = store; } /** * @return {?} */ PermissionManagementStateService.prototype.getPermissionGroups = /** * @return {?} */ function () { return this.store.selectSnapshot(PermissionManagementState.getPermissionGroups); }; /** * @return {?} */ PermissionManagementStateService.prototype.getEntityDisplayName = /** * @return {?} */ function () { return this.store.selectSnapshot(PermissionManagementState.getPermissionGroups); }; PermissionManagementStateService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; /** @nocollapse */ PermissionManagementStateService.ctorParameters = function () { return [ { type: Store } ]; }; /** @nocollapse */ PermissionManagementStateService.ngInjectableDef = ɵɵdefineInjectable({ factory: function PermissionManagementStateService_Factory() { return new PermissionManagementStateService(ɵɵinject(Store)); }, token: PermissionManagementStateService, providedIn: "root" }); return PermissionManagementStateService; }()); if (false) { /** * @type {?} * @private */ PermissionManagementStateService.prototype.store; } /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { GetPermissions, PermissionManagementComponent, PermissionManagementModule, PermissionManagementService, PermissionManagementState, PermissionManagementStateService, UpdatePermissions, PermissionManagementComponent as ɵa, PermissionManagementState as ɵb, PermissionManagementService as ɵc, GetPermissions as ɵd, UpdatePermissions as ɵe }; //# sourceMappingURL=abp-ng.permission-management.js.map