@abp/ng.identity 5.2.0-rc.2 → 5.2.2

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.
@@ -94,7 +94,7 @@ RolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
94
94
  provide: EXTENSIONS_IDENTIFIER,
95
95
  useValue: "Identity.RolesComponent" /* Roles */,
96
96
  },
97
- ], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
97
+ ], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "entityDisplayName", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
98
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: RolesComponent, decorators: [{
99
99
  type: Component,
100
100
  args: [{ selector: 'abp-roles', providers: [
@@ -109,8 +109,9 @@ export class UsersComponent {
109
109
  hookToQuery() {
110
110
  this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));
111
111
  }
112
- openPermissionsModal(providerKey) {
112
+ openPermissionsModal(providerKey, entityDisplayName) {
113
113
  this.providerKey = providerKey;
114
+ this.entityDisplayName = entityDisplayName;
114
115
  setTimeout(() => {
115
116
  this.visiblePermissions = true;
116
117
  }, 0);
@@ -123,7 +124,7 @@ UsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
123
124
  provide: EXTENSIONS_IDENTIFIER,
124
125
  useValue: "Identity.UsersComponent" /* Users */,
125
126
  },
126
- ], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i5.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i5.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i5.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i7.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i6.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
127
+ ], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i5.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i5.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i5.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i7.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "entityDisplayName", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i6.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
127
128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UsersComponent, decorators: [{
128
129
  type: Component,
129
130
  args: [{ selector: 'abp-users', providers: [
@@ -132,9 +133,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
132
133
  provide: EXTENSIONS_IDENTIFIER,
133
134
  useValue: "Identity.UsersComponent" /* Users */,
134
135
  },
135
- ], template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n" }]
136
+ ], template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n" }]
136
137
  }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.ConfirmationService }, { type: i3.IdentityUserService }, { type: i4.FormBuilder }, { type: i0.Injector }]; }, propDecorators: { modalContent: [{
137
138
  type: ViewChild,
138
139
  args: ['modalContent', { static: false }]
139
140
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaWRlbnRpdHkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L3NyYy9saWIvY29tcG9uZW50cy91c2Vycy91c2Vycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBSUwsbUJBQW1CLEdBQ3BCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsWUFBWSxFQUNaLHFCQUFxQixHQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLFdBQVcsRUFFWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE4QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFjMUQsTUFBTSxPQUFPLGNBQWM7SUFrQ3pCLFlBQ2tCLElBQXdDLEVBQzlDLG1CQUF3QyxFQUN4QyxPQUE0QixFQUM1QixFQUFlLEVBQ2YsUUFBa0I7UUFKWixTQUFJLEdBQUosSUFBSSxDQUFvQztRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBdEM5QixTQUFJLEdB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QUFDO1FBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7OzJHQWxKVSxjQUFjOytGQUFkLGNBQWMsb0NBUmQ7UUFDVCxXQUFXO1FBQ1g7WUFDRSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFFBQVEsdUNBQTJCO1NBQ3BDO0tBQ0Ysd0lDbkNILGdpSEFvR0E7MkZEL0RhLGNBQWM7a0JBWDFCLFNBQVM7K0JBQ0UsV0FBVyxhQUVWO3dCQUNULFdBQVc7d0JBQ1g7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSx1Q0FBMkI7eUJBQ3BDO3FCQUNGO3VOQU1ELFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHtcclxuICBHZXRJZGVudGl0eVVzZXJzSW5wdXQsXHJcbiAgSWRlbnRpdHlSb2xlRHRvLFxyXG4gIElkZW50aXR5VXNlckR0byxcclxuICBJZGVudGl0eVVzZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BhYnAvbmcuaWRlbnRpdHkvcHJveHknO1xyXG5pbXBvcnQgeyBlUGVybWlzc2lvbk1hbmFnZW1lbnRDb21wb25lbnRzIH0gZnJvbSAnQGFicC9uZy5wZXJtaXNzaW9uLW1hbmFnZW1lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb24sIENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7XHJcbiAgRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gIEZvcm1Qcm9wRGF0YSxcclxuICBnZW5lcmF0ZUZvcm1Gcm9tUHJvcHMsXHJcbn0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdG9yLFxyXG4gIE9uSW5pdCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBUcmFja0J5RnVuY3Rpb24sXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBlSWRlbnRpdHlDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tcG9uZW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC11c2VycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIExpc3RTZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXHJcbiAgICAgIHVzZVZhbHVlOiBlSWRlbnRpdHlDb21wb25lbnRzLlVzZXJzLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGRhdGE6IFBhZ2VkUmVzdWx0RHRvPElkZW50aXR5VXNlckR0bz4gPSB7IGl0ZW1zOiBbXSwgdG90YWxDb3VudDogMCB9O1xyXG5cclxuICBAVmlld0NoaWxkKCdtb2RhbENvbnRlbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBtb2RhbENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgc2VsZWN0ZWQ6IElkZW50aXR5VXNlckR0bztcclxuXHJcbiAgc2VsZWN0ZWRVc2VyUm9sZXM6IElkZW50aXR5Um9sZUR0b1tdO1xyXG5cclxuICByb2xlczogSWRlbnRpdHlSb2xlRHRvW107XHJcblxyXG4gIHZpc2libGVQZXJtaXNzaW9ucyA9IGZhbHNlO1xyXG5cclxuICBwcm92aWRlcktleTogc3RyaW5nO1xyXG5cclxuICBpc01vZGFsVmlzaWJsZTogYm9vbGVhbjtcclxuXHJcbiAgbW9kYWxCdXN5ID0gZmFsc2U7XHJcblxyXG4gIHBlcm1pc3Npb25NYW5hZ2VtZW50S2V5ID0gZVBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50cy5QZXJtaXNzaW9uTWFuYWdlbWVudDtcclxuXHJcbiAgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248QWJzdHJhY3RDb250cm9sPiA9IChpbmRleCwgaXRlbSkgPT4gT2JqZWN0LmtleXMoaXRlbSlbMF0gfHwgaW5kZXg7XHJcblxyXG4gIG9uVmlzaWJsZVBlcm1pc3Npb25DaGFuZ2UgPSBldmVudCA9PiB7XHJcbiAgICB0aGlzLnZpc2libGVQZXJtaXNzaW9ucyA9IGV2ZW50O1xyXG4gIH07XHJcblxyXG4gIGdldCByb2xlR3JvdXBzKCk6IEZvcm1Hcm91cFtdIHtcclxuICAgIHJldHVybiAoKHRoaXMuZm9ybS5nZXQoJ3JvbGVOYW1lcycpIGFzIEZvcm1BcnJheSk/LmNvbnRyb2xzIGFzIEZvcm1Hcm91cFtdKSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlPEdldElkZW50aXR5VXNlcnNJbnB1dD4sXHJcbiAgICBwcm90ZWN0ZWQgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBzZXJ2aWNlOiBJZGVudGl0eVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaG9va1RvUXVlcnkoKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgRm9ybVByb3BEYXRhKHRoaXMuaW5qZWN0b3IsIHRoaXMuc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5mb3JtID0gZ2VuZXJhdGVGb3JtRnJvbVByb3BzKGRhdGEpO1xyXG5cclxuICAgIHRoaXMuc2VydmljZS5nZXRBc3NpZ25hYmxlUm9sZXMoKS5zdWJzY3JpYmUoKHsgaXRlbXMgfSkgPT4ge1xyXG4gICAgICB0aGlzLnJvbGVzID0gaXRlbXM7XHJcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKFxyXG4gICAgICAgICdyb2xlTmFtZXMnLFxyXG4gICAgICAgIHRoaXMuZmIuYXJyYXkoXHJcbiAgICAgICAgICB0aGlzLnJvbGVzLm1hcChyb2xlID0+XHJcbiAgICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgIFtyb2xlLm5hbWVdOiBbXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmlkXHJcbiAgICAgICAgICAgICAgICAgID8gISF0aGlzLnNlbGVjdGVkVXNlclJvbGVzPy5maW5kKHVzZXJSb2xlID0+IHVzZXJSb2xlLmlkID09PSByb2xlLmlkKVxyXG4gICAgICAgICAgICAgICAgICA6IHJvbGUuaXNEZWZhdWx0LFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICApLFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBhZGQoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0ge30gYXMgSWRlbnRpdHlVc2VyRHRvO1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcyA9IFtdIGFzIElkZW50aXR5Um9sZUR0b1tdO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuICB9XHJcblxyXG4gIGVkaXQoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgIC5nZXQoaWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCh1c2VyID0+ICh0aGlzLnNlbGVjdGVkID0gdXNlcikpLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnNlcnZpY2UuZ2V0Um9sZXMoaWQpKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHVzZXJSb2xlID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVzID0gdXNlclJvbGUuaXRlbXMgfHwgW107XHJcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0udmFsaWQgfHwgdGhpcy5tb2RhbEJ1c3kpIHJldHVybjtcclxuICAgIHRoaXMubW9kYWxCdXN5ID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB7IHJvbGVOYW1lcyA9IFtdIH0gPSB0aGlzLmZvcm0udmFsdWU7XHJcbiAgICBjb25zdCBtYXBwZWRSb2xlTmFtZXMgPVxyXG4gICAgICByb2xlTmFtZXMuZmlsdGVyKHJvbGUgPT4gISFyb2xlW09iamVjdC5rZXlzKHJvbGUpWzBdXSkubWFwKHJvbGUgPT4gT2JqZWN0LmtleXMocm9sZSlbMF0pIHx8XHJcbiAgICAgIFtdO1xyXG5cclxuICAgIGNvbnN0IHsgaWQgfSA9IHRoaXMuc2VsZWN0ZWQ7XHJcblxyXG4gICAgKGlkXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZShpZCwge1xyXG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZCxcclxuICAgICAgICAgIC4uLnRoaXMuZm9ybS52YWx1ZSxcclxuICAgICAgICAgIHJvbGVOYW1lczogbWFwcGVkUm9sZU5hbWVzLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh7IC4uLnRoaXMuZm9ybS52YWx1ZSwgcm9sZU5hbWVzOiBtYXBwZWRSb2xlTmFtZXMgfSlcclxuICAgIClcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMubW9kYWxCdXN5ID0gZmFsc2UpKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vZGFsVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubGlzdC5nZXQoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoaWQ6IHN0cmluZywgdXNlck5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgICAgIC53YXJuKCdBYnBJZGVudGl0eTo6VXNlckRlbGV0aW9uQ29uZmlybWF0aW9uTWVzc2FnZScsICdBYnBJZGVudGl0eTo6QXJlWW91U3VyZScsIHtcclxuICAgICAgICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zOiBbdXNlck5hbWVdLFxyXG4gICAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcclxuICAgICAgICBpZiAoc3RhdHVzID09PSBDb25maXJtYXRpb24uU3RhdHVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgIHRoaXMuc2VydmljZS5kZWxldGUoaWQpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxpc3QuZ2V0KCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzb3J0KGRhdGEpIHtcclxuICAgIGNvbnN0IHsgcHJvcCwgZGlyIH0gPSBkYXRhLnNvcnRzWzBdO1xyXG4gICAgdGhpcy5saXN0LnNvcnRLZXkgPSBwcm9wO1xyXG4gICAgdGhpcy5saXN0LnNvcnRPcmRlciA9IGRpcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaG9va1RvUXVlcnkoKSB7XHJcbiAgICB0aGlzLmxpc3QuaG9va1RvUXVlcnkocXVlcnkgPT4gdGhpcy5zZXJ2aWNlLmdldExpc3QocXVlcnkpKS5zdWJzY3JpYmUocmVzID0+ICh0aGlzLmRhdGEgPSByZXMpKTtcclxuICB9XHJcblxyXG4gIG9wZW5QZXJtaXNzaW9uc01vZGFsKHByb3ZpZGVyS2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMucHJvdmlkZXJLZXkgPSBwcm92aWRlcktleTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnZpc2libGVQZXJtaXNzaW9ucyA9IHRydWU7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBpZD1cImlkZW50aXR5LXJvbGVzLXdyYXBwZXJcIiBjbGFzcz1cImNhcmRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtbWQtNlwiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnQWJwSWRlbnRpdHk6OlVzZXJzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgY29sIGNvbC1tZC02XCI+XHJcbiAgICAgICAgPGFicC1wYWdlLXRvb2xiYXIgW3JlY29yZF09XCJkYXRhLml0ZW1zXCI+PC9hYnAtcGFnZS10b29sYmFyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgIDxkaXYgaWQ9XCJkYXRhLXRhYmxlcy10YWJsZS1maWx0ZXJcIiBjbGFzcz1cImRhdGEtdGFibGVzLWZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBYnBVaTo6UGFnZXJTZWFyY2gnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwibGlzdC5maWx0ZXJcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGFicC1leHRlbnNpYmxlLXRhYmxlXHJcbiAgICAgIFtkYXRhXT1cImRhdGEuaXRlbXNcIlxyXG4gICAgICBbcmVjb3Jkc1RvdGFsXT1cImRhdGEudG90YWxDb3VudFwiXHJcbiAgICAgIFtsaXN0XT1cImxpc3RcIlxyXG4gICAgPjwvYWJwLWV4dGVuc2libGUtdGFibGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGFicC1tb2RhbCBbKHZpc2libGUpXT1cImlzTW9kYWxWaXNpYmxlXCIgW2J1c3ldPVwibW9kYWxCdXN5XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+e3sgKHNlbGVjdGVkPy5pZCA/ICdBYnBJZGVudGl0eTo6RWRpdCcgOiAnQWJwSWRlbnRpdHk6Ok5ld1VzZXInKSB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxyXG4gICAgPG5nLXRlbXBsYXRlICNsb2FkZXJSZWZcclxuICAgICAgPjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxpIGNsYXNzPVwiZmEgZmEtcHVsc2UgZmEtc3Bpbm5lclwiPjwvaT48L2RpdlxyXG4gICAgPjwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGZvcm0gKm5nSWY9XCJmb3JtOyBlbHNlIGxvYWRlclJlZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgPHVsIG5nYk5hdiAjbmF2PVwibmdiTmF2XCIgY2xhc3M9XCJuYXYtdGFic1wiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluaz57eyAnQWJwSWRlbnRpdHk6OlVzZXJJbmZvcm1hdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxhYnAtZXh0ZW5zaWJsZS1mb3JtIFtzZWxlY3RlZFJlY29yZF09XCJzZWxlY3RlZFwiPjwvYWJwLWV4dGVuc2libGUtZm9ybT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdBYnBJZGVudGl0eTo6Um9sZXMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm9sZUdyb3VwIG9mIHJvbGVHcm91cHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidyb2xlcy0nICsgaVwiXHJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm9sZUdyb3VwLmNvbnRyb2xzW3JvbGVzW2ldLm5hbWVdXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbYXR0ci5mb3JdPVwiJ3JvbGVzLScgKyBpXCI+e3sgcm9sZXNbaV0ubmFtZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwSWRlbnRpdHk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBbZGlzYWJsZWRdPVwiZm9ybT8uaW52YWxpZFwiIChjbGljayk9XCJzYXZlKClcIj57e1xyXG4gICAgICAnQWJwSWRlbnRpdHk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uXHJcbiAgICB9fTwvYWJwLWJ1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FicC1tb2RhbD5cclxuXHJcbjxhYnAtcGVybWlzc2lvbi1tYW5hZ2VtZW50XHJcbiAgI2FicFBlcm1pc3Npb25NYW5hZ2VtZW50PVwiYWJwUGVybWlzc2lvbk1hbmFnZW1lbnRcIlxyXG4gICphYnBSZXBsYWNlYWJsZVRlbXBsYXRlPVwiXHJcbiAgICB7XHJcbiAgICAgIGlucHV0czoge1xyXG4gICAgICAgIHByb3ZpZGVyTmFtZTogeyB2YWx1ZTogJ1UnIH0sXHJcbiAgICAgICAgcHJvdmlkZXJLZXk6IHsgdmFsdWU6IHByb3ZpZGVyS2V5IH0sXHJcbiAgICAgICAgdmlzaWJsZTogeyB2YWx1ZTogdmlzaWJsZVBlcm1pc3Npb25zLCB0d29XYXk6IHRydWUgfVxyXG4gICAgICB9LFxyXG4gICAgICBvdXRwdXRzOiB7IHZpc2libGVDaGFuZ2U6IG9uVmlzaWJsZVBlcm1pc3Npb25DaGFuZ2UgfSxcclxuICAgICAgY29tcG9uZW50S2V5OiBwZXJtaXNzaW9uTWFuYWdlbWVudEtleVxyXG4gICAgfTtcclxuICAgIGxldCBpbml0ID0gaW5pdFRlbXBsYXRlXHJcbiAgXCJcclxuICAoYWJwSW5pdCk9XCJpbml0KGFicFBlcm1pc3Npb25NYW5hZ2VtZW50KVwiXHJcbj5cclxuPC9hYnAtcGVybWlzc2lvbi1tYW5hZ2VtZW50PlxyXG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaWRlbnRpdHkvc3JjL2xpYi9jb21wb25lbnRzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L3NyYy9saWIvY29tcG9uZW50cy91c2Vycy91c2Vycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBSUwsbUJBQW1CLEdBQ3BCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsWUFBWSxFQUNaLHFCQUFxQixHQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLFdBQVcsRUFFWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE4QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFjMUQsTUFBTSxPQUFPLGNBQWM7SUFvQ3pCLFlBQ2tCLElBQXdDLEVBQzlDLG1CQUF3QyxFQUN4QyxPQUE0QixFQUM1QixFQUFlLEVBQ2YsUUFBa0I7UUFKWixTQUFJLEdBQUosSUFBSSxDQUFvQztRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBeEM5QixTQUFJLEdB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LEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzsyR0FySlUsY0FBYzsrRkFBZCxjQUFjLG9DQVJkO1FBQ1QsV0FBVztRQUNYO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixRQUFRLHVDQUEyQjtTQUNwQztLQUNGLHdJQ25DSCwra0hBcUdBOzJGRGhFYSxjQUFjO2tCQVgxQixTQUFTOytCQUNFLFdBQVcsYUFFVjt3QkFDVCxXQUFXO3dCQUNYOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsdUNBQTJCO3lCQUNwQztxQkFDRjt1TkFNRCxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgR2V0SWRlbnRpdHlVc2Vyc0lucHV0LFxyXG4gIElkZW50aXR5Um9sZUR0byxcclxuICBJZGVudGl0eVVzZXJEdG8sXHJcbiAgSWRlbnRpdHlVc2VyU2VydmljZSxcclxufSBmcm9tICdAYWJwL25nLmlkZW50aXR5L3Byb3h5JztcclxuaW1wb3J0IHsgZVBlcm1pc3Npb25NYW5hZ2VtZW50Q29tcG9uZW50cyB9IGZyb20gJ0BhYnAvbmcucGVybWlzc2lvbi1tYW5hZ2VtZW50JztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQge1xyXG4gIEVYVEVOU0lPTlNfSURFTlRJRklFUixcclxuICBGb3JtUHJvcERhdGEsXHJcbiAgZ2VuZXJhdGVGb3JtRnJvbVByb3BzLFxyXG59IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3RvcixcclxuICBPbkluaXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVHJhY2tCeUZ1bmN0aW9uLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZUlkZW50aXR5Q29tcG9uZW50cyB9IGZyb20gJy4uLy4uL2VudW1zL2NvbXBvbmVudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhYnAtdXNlcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2Vycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBMaXN0U2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gICAgICB1c2VWYWx1ZTogZUlkZW50aXR5Q29tcG9uZW50cy5Vc2VycyxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBkYXRhOiBQYWdlZFJlc3VsdER0bzxJZGVudGl0eVVzZXJEdG8+ID0geyBpdGVtczogW10sIHRvdGFsQ291bnQ6IDAgfTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbW9kYWxDb250ZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgbW9kYWxDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIHNlbGVjdGVkOiBJZGVudGl0eVVzZXJEdG87XHJcblxyXG4gIHNlbGVjdGVkVXNlclJvbGVzOiBJZGVudGl0eVJvbGVEdG9bXTtcclxuXHJcbiAgcm9sZXM6IElkZW50aXR5Um9sZUR0b1tdO1xyXG5cclxuICB2aXNpYmxlUGVybWlzc2lvbnMgPSBmYWxzZTtcclxuXHJcbiAgcHJvdmlkZXJLZXk6IHN0cmluZztcclxuXHJcbiAgaXNNb2RhbFZpc2libGU6IGJvb2xlYW47XHJcblxyXG4gIG1vZGFsQnVzeSA9IGZhbHNlO1xyXG5cclxuICBwZXJtaXNzaW9uTWFuYWdlbWVudEtleSA9IGVQZXJtaXNzaW9uTWFuYWdlbWVudENvbXBvbmVudHMuUGVybWlzc2lvbk1hbmFnZW1lbnQ7XHJcblxyXG4gIGVudGl0eURpc3BsYXlOYW1lOiBzdHJpbmc7XHJcblxyXG4gIHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPEFic3RyYWN0Q29udHJvbD4gPSAoaW5kZXgsIGl0ZW0pID0+IE9iamVjdC5rZXlzKGl0ZW0pWzBdIHx8IGluZGV4O1xyXG5cclxuICBvblZpc2libGVQZXJtaXNzaW9uQ2hhbmdlID0gZXZlbnQgPT4ge1xyXG4gICAgdGhpcy52aXNpYmxlUGVybWlzc2lvbnMgPSBldmVudDtcclxuICB9O1xyXG5cclxuICBnZXQgcm9sZUdyb3VwcygpOiBGb3JtR3JvdXBbXSB7XHJcbiAgICByZXR1cm4gKCh0aGlzLmZvcm0uZ2V0KCdyb2xlTmFtZXMnKSBhcyBGb3JtQXJyYXkpPy5jb250cm9scyBhcyBGb3JtR3JvdXBbXSkgfHwgW107XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZTxHZXRJZGVudGl0eVVzZXJzSW5wdXQ+LFxyXG4gICAgcHJvdGVjdGVkIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgc2VydmljZTogSWRlbnRpdHlVc2VyU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmhvb2tUb1F1ZXJ5KCk7XHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1Qcm9wRGF0YSh0aGlzLmluamVjdG9yLCB0aGlzLnNlbGVjdGVkKTtcclxuICAgIHRoaXMuZm9ybSA9IGdlbmVyYXRlRm9ybUZyb21Qcm9wcyhkYXRhKTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0QXNzaWduYWJsZVJvbGVzKCkuc3Vic2NyaWJlKCh7IGl0ZW1zIH0pID0+IHtcclxuICAgICAgdGhpcy5yb2xlcyA9IGl0ZW1zO1xyXG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbChcclxuICAgICAgICAncm9sZU5hbWVzJyxcclxuICAgICAgICB0aGlzLmZiLmFycmF5KFxyXG4gICAgICAgICAgdGhpcy5yb2xlcy5tYXAocm9sZSA9PlxyXG4gICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgICBbcm9sZS5uYW1lXTogW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5pZFxyXG4gICAgICAgICAgICAgICAgICA/ICEhdGhpcy5zZWxlY3RlZFVzZXJSb2xlcz8uZmluZCh1c2VyUm9sZSA9PiB1c2VyUm9sZS5pZCA9PT0gcm9sZS5pZClcclxuICAgICAgICAgICAgICAgICAgOiByb2xlLmlzRGVmYXVsdCxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICksXHJcbiAgICAgICAgKSxcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1vZGFsKCkge1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYWRkKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9IGFzIElkZW50aXR5VXNlckR0bztcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZXMgPSBbXSBhcyBJZGVudGl0eVJvbGVEdG9bXTtcclxuICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgfVxyXG5cclxuICBlZGl0KGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0KGlkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAodXNlciA9PiAodGhpcy5zZWxlY3RlZCA9IHVzZXIpKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zZXJ2aWNlLmdldFJvbGVzKGlkKSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh1c2VyUm9sZSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlcyA9IHVzZXJSb2xlLml0ZW1zIHx8IFtdO1xyXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkIHx8IHRoaXMubW9kYWxCdXN5KSByZXR1cm47XHJcbiAgICB0aGlzLm1vZGFsQnVzeSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgeyByb2xlTmFtZXMgPSBbXSB9ID0gdGhpcy5mb3JtLnZhbHVlO1xyXG4gICAgY29uc3QgbWFwcGVkUm9sZU5hbWVzID1cclxuICAgICAgcm9sZU5hbWVzLmZpbHRlcihyb2xlID0+ICEhcm9sZVtPYmplY3Qua2V5cyhyb2xlKVswXV0pLm1hcChyb2xlID0+IE9iamVjdC5rZXlzKHJvbGUpWzBdKSB8fFxyXG4gICAgICBbXTtcclxuXHJcbiAgICBjb25zdCB7IGlkIH0gPSB0aGlzLnNlbGVjdGVkO1xyXG5cclxuICAgIChpZFxyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoaWQsIHtcclxuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWQsXHJcbiAgICAgICAgICAuLi50aGlzLmZvcm0udmFsdWUsXHJcbiAgICAgICAgICByb2xlTmFtZXM6IG1hcHBlZFJvbGVOYW1lcyxcclxuICAgICAgICB9KVxyXG4gICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUoeyAuLi50aGlzLmZvcm0udmFsdWUsIHJvbGVOYW1lczogbWFwcGVkUm9sZU5hbWVzIH0pXHJcbiAgICApXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLm1vZGFsQnVzeSA9IGZhbHNlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKGlkOiBzdHJpbmcsIHVzZXJOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZVxyXG4gICAgICAud2FybignQWJwSWRlbnRpdHk6OlVzZXJEZWxldGlvbkNvbmZpcm1hdGlvbk1lc3NhZ2UnLCAnQWJwSWRlbnRpdHk6OkFyZVlvdVN1cmUnLCB7XHJcbiAgICAgICAgbWVzc2FnZUxvY2FsaXphdGlvblBhcmFtczogW3VzZXJOYW1lXSxcclxuICAgICAgfSlcclxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSB7XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlKGlkKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5saXN0LmdldCgpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc29ydChkYXRhKSB7XHJcbiAgICBjb25zdCB7IHByb3AsIGRpciB9ID0gZGF0YS5zb3J0c1swXTtcclxuICAgIHRoaXMubGlzdC5zb3J0S2V5ID0gcHJvcDtcclxuICAgIHRoaXMubGlzdC5zb3J0T3JkZXIgPSBkaXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhvb2tUb1F1ZXJ5KCkge1xyXG4gICAgdGhpcy5saXN0Lmhvb2tUb1F1ZXJ5KHF1ZXJ5ID0+IHRoaXMuc2VydmljZS5nZXRMaXN0KHF1ZXJ5KSkuc3Vic2NyaWJlKHJlcyA9PiAodGhpcy5kYXRhID0gcmVzKSk7XHJcbiAgfVxyXG5cclxuICBvcGVuUGVybWlzc2lvbnNNb2RhbChwcm92aWRlcktleTogc3RyaW5nLCBlbnRpdHlEaXNwbGF5TmFtZT86IHN0cmluZykge1xyXG4gICAgdGhpcy5wcm92aWRlcktleSA9IHByb3ZpZGVyS2V5O1xyXG4gICAgdGhpcy5lbnRpdHlEaXNwbGF5TmFtZSA9IGVudGl0eURpc3BsYXlOYW1lO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudmlzaWJsZVBlcm1pc3Npb25zID0gdHJ1ZTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGlkPVwiaWRlbnRpdHktcm9sZXMtd3JhcHBlclwiIGNsYXNzPVwiY2FyZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC1tZC02XCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdBYnBJZGVudGl0eTo6VXNlcnMnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oNT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBjb2wgY29sLW1kLTZcIj5cclxuICAgICAgICA8YWJwLXBhZ2UtdG9vbGJhciBbcmVjb3JkXT1cImRhdGEuaXRlbXNcIj48L2FicC1wYWdlLXRvb2xiYXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgPGRpdiBpZD1cImRhdGEtdGFibGVzLXRhYmxlLWZpbHRlclwiIGNsYXNzPVwiZGF0YS10YWJsZXMtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FicFVpOjpQYWdlclNlYXJjaCcgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJsaXN0LmZpbHRlclwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YWJwLWV4dGVuc2libGUtdGFibGVcclxuICAgICAgW2RhdGFdPVwiZGF0YS5pdGVtc1wiXHJcbiAgICAgIFtyZWNvcmRzVG90YWxdPVwiZGF0YS50b3RhbENvdW50XCJcclxuICAgICAgW2xpc3RdPVwibGlzdFwiXHJcbiAgICA+PC9hYnAtZXh0ZW5zaWJsZS10YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YWJwLW1vZGFsIFsodmlzaWJsZSldPVwiaXNNb2RhbFZpc2libGVcIiBbYnVzeV09XCJtb2RhbEJ1c3lcIj5cclxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cclxuICAgIDxoMz57eyAoc2VsZWN0ZWQ/LmlkID8gJ0FicElkZW50aXR5OjpFZGl0JyA6ICdBYnBJZGVudGl0eTo6TmV3VXNlcicpIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcbiAgICA8bmctdGVtcGxhdGUgI2xvYWRlclJlZlxyXG4gICAgICA+PGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1wdWxzZSBmYS1zcGlubmVyXCI+PC9pPjwvZGl2XHJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8Zm9ybSAqbmdJZj1cImZvcm07IGVsc2UgbG9hZGVyUmVmXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInNhdmUoKVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdi10YWJzXCI+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7ICdBYnBJZGVudGl0eTo6VXNlckluZm9ybWF0aW9ucycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGFicC1leHRlbnNpYmxlLWZvcm0gW3NlbGVjdGVkUmVjb3JkXT1cInNlbGVjdGVkXCI+PC9hYnAtZXh0ZW5zaWJsZS1mb3JtPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbT5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbms+e3sgJ0FicElkZW50aXR5OjpSb2xlcycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByb2xlR3JvdXAgb2Ygcm9sZUdyb3VwczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMlwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ3JvbGVzLScgKyBpXCJcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb2xlR3JvdXAuY29udHJvbHNbcm9sZXNbaV0ubmFtZV1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFthdHRyLmZvcl09XCIncm9sZXMtJyArIGlcIj57eyByb2xlc1tpXS5uYW1lIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMiBmYWRlLWluLXRvcFwiIFtuZ2JOYXZPdXRsZXRdPVwibmF2XCI+PC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgIHt7ICdBYnBJZGVudGl0eTo6Q2FuY2VsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIFtkaXNhYmxlZF09XCJmb3JtPy5pbnZhbGlkXCIgKGNsaWNrKT1cInNhdmUoKVwiPnt7XHJcbiAgICAgICdBYnBJZGVudGl0eTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgIH19PC9hYnAtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvYWJwLW1vZGFsPlxyXG5cclxuPGFicC1wZXJtaXNzaW9uLW1hbmFnZW1lbnRcclxuICAjYWJwUGVybWlzc2lvbk1hbmFnZW1lbnQ9XCJhYnBQZXJtaXNzaW9uTWFuYWdlbWVudFwiXHJcbiAgKmFicFJlcGxhY2VhYmxlVGVtcGxhdGU9XCJcclxuICAgIHtcclxuICAgICAgaW5wdXRzOiB7XHJcbiAgICAgICAgcHJvdmlkZXJOYW1lOiB7IHZhbHVlOiAnVScgfSxcclxuICAgICAgICBwcm92aWRlcktleTogeyB2YWx1ZTogcHJvdmlkZXJLZXkgfSxcclxuICAgICAgICB2aXNpYmxlOiB7IHZhbHVlOiB2aXNpYmxlUGVybWlzc2lvbnMsIHR3b1dheTogdHJ1ZSB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG91dHB1dHM6IHsgdmlzaWJsZUNoYW5nZTogb25WaXNpYmxlUGVybWlzc2lvbkNoYW5nZSB9LFxyXG4gICAgICBjb21wb25lbnRLZXk6IHBlcm1pc3Npb25NYW5hZ2VtZW50S2V5XHJcbiAgICB9O1xyXG4gICAgbGV0IGluaXQgPSBpbml0VGVtcGxhdGVcclxuICBcIlxyXG4gIFtlbnRpdHlEaXNwbGF5TmFtZV09XCJlbnRpdHlEaXNwbGF5TmFtZVwiXHJcbiAgKGFicEluaXQpPVwiaW5pdChhYnBQZXJtaXNzaW9uTWFuYWdlbWVudClcIlxyXG4+XHJcbjwvYWJwLXBlcm1pc3Npb24tbWFuYWdlbWVudD5cclxuIl19
@@ -13,7 +13,7 @@ export const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany([
13
13
  text: 'AbpIdentity::Permissions',
14
14
  action: data => {
15
15
  const component = data.getInjected(UsersComponent);
16
- component.openPermissionsModal(data.record.id);
16
+ component.openPermissionsModal(data.record.id, data.record.userName);
17
17
  },
18
18
  permission: 'AbpIdentity.Users.ManagePermissions',
19
19
  },
@@ -26,4 +26,4 @@ export const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany([
26
26
  permission: 'AbpIdentity.Users.Delete',
27
27
  },
28
28
  ]);
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC11c2Vycy1lbnRpdHktYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L3NyYy9saWIvZGVmYXVsdHMvZGVmYXVsdC11c2Vycy1lbnRpdHktYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLFlBQVksQ0FBQyxVQUFVLENBQWtCO0lBQ25GO1FBQ0UsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsVUFBVSxFQUFFLDBCQUEwQjtLQUN2QztJQUNEO1FBQ0UsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxVQUFVLEVBQUUscUNBQXFDO0tBQ2xEO0lBQ0Q7UUFDRSxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNiLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxVQUFVLEVBQUUsMEJBQTBCO0tBQ3ZDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWRlbnRpdHlVc2VyRHRvIH0gZnJvbSAnQGFicC9uZy5pZGVudGl0eS9wcm94eSc7XHJcbmltcG9ydCB7IEVudGl0eUFjdGlvbiB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQgeyBVc2Vyc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1VTRVJTX0VOVElUWV9BQ1RJT05TID0gRW50aXR5QWN0aW9uLmNyZWF0ZU1hbnk8SWRlbnRpdHlVc2VyRHRvPihbXHJcbiAge1xyXG4gICAgdGV4dDogJ0FicElkZW50aXR5OjpFZGl0JyxcclxuICAgIGFjdGlvbjogZGF0YSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0SW5qZWN0ZWQoVXNlcnNDb21wb25lbnQpO1xyXG4gICAgICBjb21wb25lbnQuZWRpdChkYXRhLnJlY29yZC5pZCk7XHJcbiAgICB9LFxyXG4gICAgcGVybWlzc2lvbjogJ0FicElkZW50aXR5LlVzZXJzLlVwZGF0ZScsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0ZXh0OiAnQWJwSWRlbnRpdHk6OlBlcm1pc3Npb25zJyxcclxuICAgIGFjdGlvbjogZGF0YSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0SW5qZWN0ZWQoVXNlcnNDb21wb25lbnQpO1xyXG4gICAgICBjb21wb25lbnQub3BlblBlcm1pc3Npb25zTW9kYWwoZGF0YS5yZWNvcmQuaWQpO1xyXG4gICAgfSxcclxuICAgIHBlcm1pc3Npb246ICdBYnBJZGVudGl0eS5Vc2Vycy5NYW5hZ2VQZXJtaXNzaW9ucycsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0ZXh0OiAnQWJwSWRlbnRpdHk6OkRlbGV0ZScsXHJcbiAgICBhY3Rpb246IGRhdGEgPT4ge1xyXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkYXRhLmdldEluamVjdGVkKFVzZXJzQ29tcG9uZW50KTtcclxuICAgICAgY29tcG9uZW50LmRlbGV0ZShkYXRhLnJlY29yZC5pZCwgZGF0YS5yZWNvcmQubmFtZSB8fCBkYXRhLnJlY29yZC51c2VyTmFtZSk7XHJcbiAgICB9LFxyXG4gICAgcGVybWlzc2lvbjogJ0FicElkZW50aXR5LlVzZXJzLkRlbGV0ZScsXHJcbiAgfSxcclxuXSk7XHJcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC11c2Vycy1lbnRpdHktYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L3NyYy9saWIvZGVmYXVsdHMvZGVmYXVsdC11c2Vycy1lbnRpdHktYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLFlBQVksQ0FBQyxVQUFVLENBQWtCO0lBQ25GO1FBQ0UsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsVUFBVSxFQUFFLDBCQUEwQjtLQUN2QztJQUNEO1FBQ0UsSUFBSSxFQUFFLDBCQUEwQjtRQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxVQUFVLEVBQUUscUNBQXFDO0tBQ2xEO0lBQ0Q7UUFDRSxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNiLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxVQUFVLEVBQUUsMEJBQTBCO0tBQ3ZDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWRlbnRpdHlVc2VyRHRvIH0gZnJvbSAnQGFicC9uZy5pZGVudGl0eS9wcm94eSc7XHJcbmltcG9ydCB7IEVudGl0eUFjdGlvbiB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQgeyBVc2Vyc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1VTRVJTX0VOVElUWV9BQ1RJT05TID0gRW50aXR5QWN0aW9uLmNyZWF0ZU1hbnk8SWRlbnRpdHlVc2VyRHRvPihbXHJcbiAge1xyXG4gICAgdGV4dDogJ0FicElkZW50aXR5OjpFZGl0JyxcclxuICAgIGFjdGlvbjogZGF0YSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0SW5qZWN0ZWQoVXNlcnNDb21wb25lbnQpO1xyXG4gICAgICBjb21wb25lbnQuZWRpdChkYXRhLnJlY29yZC5pZCk7XHJcbiAgICB9LFxyXG4gICAgcGVybWlzc2lvbjogJ0FicElkZW50aXR5LlVzZXJzLlVwZGF0ZScsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0ZXh0OiAnQWJwSWRlbnRpdHk6OlBlcm1pc3Npb25zJyxcclxuICAgIGFjdGlvbjogZGF0YSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRhdGEuZ2V0SW5qZWN0ZWQoVXNlcnNDb21wb25lbnQpO1xyXG4gICAgICBjb21wb25lbnQub3BlblBlcm1pc3Npb25zTW9kYWwoZGF0YS5yZWNvcmQuaWQsIGRhdGEucmVjb3JkLnVzZXJOYW1lKTtcclxuICAgIH0sXHJcbiAgICBwZXJtaXNzaW9uOiAnQWJwSWRlbnRpdHkuVXNlcnMuTWFuYWdlUGVybWlzc2lvbnMnLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdGV4dDogJ0FicElkZW50aXR5OjpEZWxldGUnLFxyXG4gICAgYWN0aW9uOiBkYXRhID0+IHtcclxuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGF0YS5nZXRJbmplY3RlZChVc2Vyc0NvbXBvbmVudCk7XHJcbiAgICAgIGNvbXBvbmVudC5kZWxldGUoZGF0YS5yZWNvcmQuaWQsIGRhdGEucmVjb3JkLm5hbWUgfHwgZGF0YS5yZWNvcmQudXNlck5hbWUpO1xyXG4gICAgfSxcclxuICAgIHBlcm1pc3Npb246ICdBYnBJZGVudGl0eS5Vc2Vycy5EZWxldGUnLFxyXG4gIH0sXHJcbl0pO1xyXG4iXX0=
@@ -103,7 +103,7 @@ RolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
103
103
  provide: EXTENSIONS_IDENTIFIER,
104
104
  useValue: "Identity.RolesComponent" /* Roles */,
105
105
  },
106
- ], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
106
+ ], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "entityDisplayName", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: RolesComponent, decorators: [{
108
108
  type: Component,
109
109
  args: [{ selector: 'abp-roles', providers: [
@@ -209,8 +209,9 @@ class UsersComponent {
209
209
  hookToQuery() {
210
210
  this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));
211
211
  }
212
- openPermissionsModal(providerKey) {
212
+ openPermissionsModal(providerKey, entityDisplayName) {
213
213
  this.providerKey = providerKey;
214
+ this.entityDisplayName = entityDisplayName;
214
215
  setTimeout(() => {
215
216
  this.visiblePermissions = true;
216
217
  }, 0);
@@ -223,7 +224,7 @@ UsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
223
224
  provide: EXTENSIONS_IDENTIFIER,
224
225
  useValue: "Identity.UsersComponent" /* Users */,
225
226
  },
226
- ], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i6.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
227
+ ], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "entityDisplayName", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i6.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
227
228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UsersComponent, decorators: [{
228
229
  type: Component,
229
230
  args: [{ selector: 'abp-users', providers: [
@@ -232,7 +233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
232
233
  provide: EXTENSIONS_IDENTIFIER,
233
234
  useValue: "Identity.UsersComponent" /* Users */,
234
235
  },
235
- ], template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n" }]
236
+ ], template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n" }]
236
237
  }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.ConfirmationService }, { type: i3.IdentityUserService }, { type: i4$1.FormBuilder }, { type: i0.Injector }]; }, propDecorators: { modalContent: [{
237
238
  type: ViewChild,
238
239
  args: ['modalContent', { static: false }]
@@ -338,7 +339,7 @@ const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany([
338
339
  text: 'AbpIdentity::Permissions',
339
340
  action: data => {
340
341
  const component = data.getInjected(UsersComponent);
341
- component.openPermissionsModal(data.record.id);
342
+ component.openPermissionsModal(data.record.id, data.record.userName);
342
343
  },
343
344
  permission: 'AbpIdentity.Users.ManagePermissions',
344
345
  },
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.identity.mjs","sources":["../../../../packages/identity/src/lib/components/roles/roles.component.ts","../../../../packages/identity/src/lib/components/roles/roles.component.html","../../../../packages/identity/src/lib/components/users/users.component.ts","../../../../packages/identity/src/lib/components/users/users.component.html","../../../../packages/identity/src/lib/defaults/default-roles-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-roles-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-form-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-users-form-props.ts","../../../../packages/identity/src/lib/defaults/default-users-toolbar-actions.ts","../../../../packages/identity/src/lib/tokens/extensions.token.ts","../../../../packages/identity/src/lib/guards/extensions.guard.ts","../../../../packages/identity/src/lib/identity-routing.module.ts","../../../../packages/identity/src/lib/identity.module.ts","../../../../packages/identity/src/abp-ng.identity.ts"],"sourcesContent":["import { ListService, PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core';\r\nimport { IdentityRoleDto, IdentityRoleService } from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Component, Injector, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-roles',\r\n templateUrl: './roles.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Roles,\r\n },\r\n ],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n data: PagedResultDto<IdentityRoleDto> = { items: [], totalCount: 0 };\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityRoleDto;\r\n\r\n isModalVisible: boolean;\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n constructor(\r\n public readonly list: ListService<PagedAndSortedResultRequestDto>,\r\n protected confirmationService: ConfirmationService,\r\n protected injector: Injector,\r\n protected service: IdentityRoleService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityRoleDto;\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service.get(id).subscribe(res => {\r\n this.selected = res;\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid) return;\r\n this.modalBusy = true;\r\n\r\n const { id } = this.selected;\r\n (id\r\n ? this.service.update(id, { ...this.selected, ...this.form.value })\r\n : this.service.create(this.form.value)\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [name],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { ListService, PagedResultDto } from '@abp/ng.core';\r\nimport {\r\n GetIdentityUsersInput,\r\n IdentityRoleDto,\r\n IdentityUserDto,\r\n IdentityUserService,\r\n} from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport {\r\n Component,\r\n Injector,\r\n OnInit,\r\n TemplateRef,\r\n TrackByFunction,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-users',\r\n templateUrl: './users.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Users,\r\n },\r\n ],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n data: PagedResultDto<IdentityUserDto> = { items: [], totalCount: 0 };\r\n\r\n @ViewChild('modalContent', { static: false })\r\n modalContent: TemplateRef<any>;\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityUserDto;\r\n\r\n selectedUserRoles: IdentityRoleDto[];\r\n\r\n roles: IdentityRoleDto[];\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n isModalVisible: boolean;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n trackByFn: TrackByFunction<AbstractControl> = (index, item) => Object.keys(item)[0] || index;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n get roleGroups(): FormGroup[] {\r\n return ((this.form.get('roleNames') as FormArray)?.controls as FormGroup[]) || [];\r\n }\r\n\r\n constructor(\r\n public readonly list: ListService<GetIdentityUsersInput>,\r\n protected confirmationService: ConfirmationService,\r\n protected service: IdentityUserService,\r\n protected fb: FormBuilder,\r\n protected injector: Injector,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n\r\n this.service.getAssignableRoles().subscribe(({ items }) => {\r\n this.roles = items;\r\n this.form.addControl(\r\n 'roleNames',\r\n this.fb.array(\r\n this.roles.map(role =>\r\n this.fb.group({\r\n [role.name]: [\r\n this.selected.id\r\n ? !!this.selectedUserRoles?.find(userRole => userRole.id === role.id)\r\n : role.isDefault,\r\n ],\r\n }),\r\n ),\r\n ),\r\n );\r\n });\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityUserDto;\r\n this.selectedUserRoles = [] as IdentityRoleDto[];\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service\r\n .get(id)\r\n .pipe(\r\n tap(user => (this.selected = user)),\r\n switchMap(() => this.service.getRoles(id)),\r\n )\r\n .subscribe(userRole => {\r\n this.selectedUserRoles = userRole.items || [];\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid || this.modalBusy) return;\r\n this.modalBusy = true;\r\n\r\n const { roleNames = [] } = this.form.value;\r\n const mappedRoleNames =\r\n roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]) ||\r\n [];\r\n\r\n const { id } = this.selected;\r\n\r\n (id\r\n ? this.service.update(id, {\r\n ...this.selected,\r\n ...this.form.value,\r\n roleNames: mappedRoleNames,\r\n })\r\n : this.service.create({ ...this.form.value, roleNames: mappedRoleNames })\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, userName: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [userName],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_ACTIONS = EntityAction.createMany<IdentityRoleDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Roles.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.openPermissionsModal(data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.delete(data.record.id, data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.Delete',\r\n visible: data => !data.record.isStatic,\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_PROPS = EntityProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n sortable: true,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n const { isDefault, isPublic, name } = data.record;\r\n\r\n return of(\r\n escapeHtmlChars(name) +\r\n (isDefault\r\n ? `<span class=\"badge rounded-pill bg-success ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsDefault',\r\n )}</span>`\r\n : '') +\r\n (isPublic\r\n ? `<span class=\"badge rounded-pill bg-info ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsPublic',\r\n )}</span>`\r\n : ''),\r\n );\r\n },\r\n },\r\n]);\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ePropType, FormProp, PropData } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_ROLES_CREATE_FORM_PROPS = FormProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n id: 'role-name',\r\n disabled: (data: PropData<IdentityRoleDto>) => data.record && data.record.isStatic,\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isDefault',\r\n displayName: 'AbpIdentity::DisplayName:IsDefault',\r\n id: 'role-is-default',\r\n defaultValue: false,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isPublic',\r\n displayName: 'AbpIdentity::DisplayName:IsPublic',\r\n id: 'role-is-public',\r\n defaultValue: false,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_ROLES_EDIT_FORM_PROPS = DEFAULT_ROLES_CREATE_FORM_PROPS;\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityRoleDto[]>([\r\n {\r\n text: 'AbpIdentity::NewRole',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Roles.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany<IdentityUserDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Users.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.openPermissionsModal(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Users.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.delete(data.record.id, data.record.name || data.record.userName);\r\n },\r\n permission: 'AbpIdentity.Users.Delete',\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_USERS_ENTITY_PROPS = EntityProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n sortable: true,\r\n columnWidth: 250,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n\r\n const inactiveIcon = `<i title=\"${t(\r\n 'AbpIdentity::ThisUserIsNotActiveMessage',\r\n )}\" class=\"fas fa-ban text-danger me-1\"></i>`;\r\n\r\n return of(\r\n `\r\n ${!data.record.isActive ? inactiveIcon : ''}\r\n <span class=\"${!data.record.isActive ? 'text-muted' : ''}\">${escapeHtmlChars(\r\n data.record.userName,\r\n )}</span>`,\r\n );\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { getPasswordValidators } from '@abp/ng.theme.shared';\r\nimport { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_USERS_CREATE_FORM_PROPS = FormProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n id: 'user-name',\r\n validators: () => [Validators.required, Validators.maxLength(256)],\r\n },\r\n {\r\n type: ePropType.Password,\r\n name: 'password',\r\n displayName: 'AbpIdentity::Password',\r\n id: 'password',\r\n autocomplete: 'new-password',\r\n validators: data => [Validators.required, ...getPasswordValidators({ get: data.getInjected })],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::DisplayName:Name',\r\n id: 'name',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'surname',\r\n displayName: 'AbpIdentity::DisplayName:Surname',\r\n id: 'surname',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.Email,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n id: 'email',\r\n validators: () => [Validators.required, Validators.maxLength(256), Validators.email],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n id: 'phone-number',\r\n validators: () => [Validators.maxLength(16)],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isActive',\r\n displayName: 'AbpIdentity::DisplayName:IsActive',\r\n id: 'active-checkbox',\r\n defaultValue: true,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'lockoutEnabled',\r\n displayName: 'AbpIdentity::DisplayName:LockoutEnabled',\r\n id: 'lockout-checkbox',\r\n defaultValue: true,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_USERS_EDIT_FORM_PROPS = DEFAULT_USERS_CREATE_FORM_PROPS.filter(\r\n prop => prop.name !== 'password',\r\n);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityUserDto[]>([\r\n {\r\n text: 'AbpIdentity::NewUser',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Users.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityRoleDto, IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport {\r\n CreateFormPropContributorCallback,\r\n EditFormPropContributorCallback,\r\n EntityActionContributorCallback,\r\n EntityPropContributorCallback,\r\n ToolbarActionContributorCallback,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { DEFAULT_ROLES_ENTITY_ACTIONS } from '../defaults/default-roles-entity-actions';\r\nimport { DEFAULT_ROLES_ENTITY_PROPS } from '../defaults/default-roles-entity-props';\r\nimport {\r\n DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n} from '../defaults/default-roles-form-props';\r\nimport { DEFAULT_ROLES_TOOLBAR_ACTIONS } from '../defaults/default-roles-toolbar-actions';\r\nimport { DEFAULT_USERS_ENTITY_ACTIONS } from '../defaults/default-users-entity-actions';\r\nimport { DEFAULT_USERS_ENTITY_PROPS } from '../defaults/default-users-entity-props';\r\nimport {\r\n DEFAULT_USERS_CREATE_FORM_PROPS,\r\n DEFAULT_USERS_EDIT_FORM_PROPS,\r\n} from '../defaults/default-users-form-props';\r\nimport { DEFAULT_USERS_TOOLBAR_ACTIONS } from '../defaults/default-users-toolbar-actions';\r\nimport { eIdentityComponents } from '../enums/components';\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_TOOLBAR_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_TOOLBAR_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_CREATE_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_CREATE_FORM_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_EDIT_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_EDIT_FORM_PROPS,\r\n};\r\n\r\nexport const IDENTITY_ENTITY_ACTION_CONTRIBUTORS = new InjectionToken<EntityActionContributors>(\r\n 'IDENTITY_ENTITY_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS = new InjectionToken<ToolbarActionContributors>(\r\n 'IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_ENTITY_PROP_CONTRIBUTORS = new InjectionToken<EntityPropContributors>(\r\n 'IDENTITY_ENTITY_PROP_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<CreateFormPropContributors>('IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS');\r\n\r\nexport const IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken<EditFormPropContributors>(\r\n 'IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS',\r\n);\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityActionContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityActionContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype ToolbarActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: ToolbarActionContributorCallback<IdentityRoleDto[]>[];\r\n [eIdentityComponents.Users]: ToolbarActionContributorCallback<IdentityUserDto[]>[];\r\n}>;\r\ntype EntityPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype CreateFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: CreateFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: CreateFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype EditFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EditFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EditFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\n","import { ConfigStateService } from '@abp/ng.core';\r\nimport {\r\n ExtensionsService,\r\n getObjectExtensionEntitiesFromStore,\r\n mapEntitiesToContributors,\r\n mergeWithDefaultActions,\r\n mergeWithDefaultProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map, mapTo, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../enums/components';\r\nimport {\r\n IdentityCreateFormPropContributors,\r\n IdentityEditFormPropContributors,\r\n IdentityEntityActionContributors,\r\n IdentityEntityPropContributors,\r\n IdentityToolbarActionContributors,\r\n} from '../models/config-options';\r\nimport {\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from '../tokens/extensions.token';\r\n\r\n@Injectable()\r\nexport class IdentityExtensionsGuard implements CanActivate {\r\n constructor(private injector: Injector) {}\r\n\r\n canActivate(): Observable<boolean> {\r\n const extensions: ExtensionsService = this.injector.get(ExtensionsService);\r\n const actionContributors: IdentityEntityActionContributors =\r\n this.injector.get(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n const toolbarContributors: IdentityToolbarActionContributors =\r\n this.injector.get(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n const propContributors: IdentityEntityPropContributors =\r\n this.injector.get(IDENTITY_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n const createFormContributors: IdentityCreateFormPropContributors =\r\n this.injector.get(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, null) || {};\r\n const editFormContributors: IdentityEditFormPropContributors =\r\n this.injector.get(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n const configState = this.injector.get(ConfigStateService);\r\n return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe(\r\n map(entities => ({\r\n [eIdentityComponents.Roles]: entities.Role,\r\n [eIdentityComponents.Users]: entities.User,\r\n })),\r\n mapEntitiesToContributors(configState, 'AbpIdentity'),\r\n tap(objectExtensionContributors => {\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n actionContributors,\r\n );\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n toolbarContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.createFormProps,\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n objectExtensionContributors.createForm,\r\n createFormContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.editFormProps,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n objectExtensionContributors.editForm,\r\n editFormContributors,\r\n );\r\n }),\r\n mapTo(true),\r\n );\r\n }\r\n}\r\n","import {\r\n AuthGuard, PermissionGuard,\r\n ReplaceableComponents,\r\n ReplaceableRouteContainerComponent, RouterOutletComponent\r\n} from '@abp/ng.core';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { eIdentityComponents } from './enums/components';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\r\n {\r\n path: '',\r\n component: RouterOutletComponent,\r\n canActivate: [AuthGuard, PermissionGuard, IdentityExtensionsGuard],\r\n children: [\r\n {\r\n path: 'roles',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Roles',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Roles,\r\n defaultComponent: RolesComponent,\r\n } as ReplaceableComponents.RouteData<RolesComponent>,\r\n },\r\n },\r\n {\r\n path: 'users',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Users',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Users,\r\n defaultComponent: UsersComponent,\r\n } as ReplaceableComponents.RouteData<UsersComponent>,\r\n },\r\n },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class IdentityRoutingModule {}\r\n","import { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';\r\nimport { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\r\nimport { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\nimport { IdentityRoutingModule } from './identity-routing.module';\r\nimport { IdentityConfigOptions } from './models/config-options';\r\nimport {\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\n\r\n@NgModule({\r\n declarations: [RolesComponent, UsersComponent],\r\n exports: [RolesComponent, UsersComponent],\r\n imports: [\r\n CoreModule,\r\n IdentityRoutingModule,\r\n NgbNavModule,\r\n ThemeSharedModule,\r\n UiExtensionsModule,\r\n NgbDropdownModule,\r\n PermissionManagementModule,\r\n NgxValidateCoreModule,\r\n ],\r\n})\r\nexport class IdentityModule {\r\n static forChild(options: IdentityConfigOptions = {}): ModuleWithProviders<IdentityModule> {\r\n return {\r\n ngModule: IdentityModule,\r\n providers: [\r\n {\r\n provide: IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n useValue: options.entityPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.createFormPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.editFormPropContributors,\r\n },\r\n IdentityExtensionsGuard,\r\n ],\r\n };\r\n }\r\n\r\n static forLazy(options: IdentityConfigOptions = {}): NgModuleFactory<IdentityModule> {\r\n return new LazyModuleFactory(IdentityModule.forChild(options));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.identity.mjs","sources":["../../../../packages/identity/src/lib/components/roles/roles.component.ts","../../../../packages/identity/src/lib/components/roles/roles.component.html","../../../../packages/identity/src/lib/components/users/users.component.ts","../../../../packages/identity/src/lib/components/users/users.component.html","../../../../packages/identity/src/lib/defaults/default-roles-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-roles-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-form-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-users-form-props.ts","../../../../packages/identity/src/lib/defaults/default-users-toolbar-actions.ts","../../../../packages/identity/src/lib/tokens/extensions.token.ts","../../../../packages/identity/src/lib/guards/extensions.guard.ts","../../../../packages/identity/src/lib/identity-routing.module.ts","../../../../packages/identity/src/lib/identity.module.ts","../../../../packages/identity/src/abp-ng.identity.ts"],"sourcesContent":["import { ListService, PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core';\r\nimport { IdentityRoleDto, IdentityRoleService } from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Component, Injector, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-roles',\r\n templateUrl: './roles.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Roles,\r\n },\r\n ],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n data: PagedResultDto<IdentityRoleDto> = { items: [], totalCount: 0 };\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityRoleDto;\r\n\r\n isModalVisible: boolean;\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n constructor(\r\n public readonly list: ListService<PagedAndSortedResultRequestDto>,\r\n protected confirmationService: ConfirmationService,\r\n protected injector: Injector,\r\n protected service: IdentityRoleService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityRoleDto;\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service.get(id).subscribe(res => {\r\n this.selected = res;\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid) return;\r\n this.modalBusy = true;\r\n\r\n const { id } = this.selected;\r\n (id\r\n ? this.service.update(id, { ...this.selected, ...this.form.value })\r\n : this.service.create(this.form.value)\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [name],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { ListService, PagedResultDto } from '@abp/ng.core';\r\nimport {\r\n GetIdentityUsersInput,\r\n IdentityRoleDto,\r\n IdentityUserDto,\r\n IdentityUserService,\r\n} from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport {\r\n Component,\r\n Injector,\r\n OnInit,\r\n TemplateRef,\r\n TrackByFunction,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-users',\r\n templateUrl: './users.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Users,\r\n },\r\n ],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n data: PagedResultDto<IdentityUserDto> = { items: [], totalCount: 0 };\r\n\r\n @ViewChild('modalContent', { static: false })\r\n modalContent: TemplateRef<any>;\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityUserDto;\r\n\r\n selectedUserRoles: IdentityRoleDto[];\r\n\r\n roles: IdentityRoleDto[];\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n isModalVisible: boolean;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n entityDisplayName: string;\r\n\r\n trackByFn: TrackByFunction<AbstractControl> = (index, item) => Object.keys(item)[0] || index;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n get roleGroups(): FormGroup[] {\r\n return ((this.form.get('roleNames') as FormArray)?.controls as FormGroup[]) || [];\r\n }\r\n\r\n constructor(\r\n public readonly list: ListService<GetIdentityUsersInput>,\r\n protected confirmationService: ConfirmationService,\r\n protected service: IdentityUserService,\r\n protected fb: FormBuilder,\r\n protected injector: Injector,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n\r\n this.service.getAssignableRoles().subscribe(({ items }) => {\r\n this.roles = items;\r\n this.form.addControl(\r\n 'roleNames',\r\n this.fb.array(\r\n this.roles.map(role =>\r\n this.fb.group({\r\n [role.name]: [\r\n this.selected.id\r\n ? !!this.selectedUserRoles?.find(userRole => userRole.id === role.id)\r\n : role.isDefault,\r\n ],\r\n }),\r\n ),\r\n ),\r\n );\r\n });\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityUserDto;\r\n this.selectedUserRoles = [] as IdentityRoleDto[];\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service\r\n .get(id)\r\n .pipe(\r\n tap(user => (this.selected = user)),\r\n switchMap(() => this.service.getRoles(id)),\r\n )\r\n .subscribe(userRole => {\r\n this.selectedUserRoles = userRole.items || [];\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid || this.modalBusy) return;\r\n this.modalBusy = true;\r\n\r\n const { roleNames = [] } = this.form.value;\r\n const mappedRoleNames =\r\n roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]) ||\r\n [];\r\n\r\n const { id } = this.selected;\r\n\r\n (id\r\n ? this.service.update(id, {\r\n ...this.selected,\r\n ...this.form.value,\r\n roleNames: mappedRoleNames,\r\n })\r\n : this.service.create({ ...this.form.value, roleNames: mappedRoleNames })\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, userName: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [userName],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string, entityDisplayName?: string) {\r\n this.providerKey = providerKey;\r\n this.entityDisplayName = entityDisplayName;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_ACTIONS = EntityAction.createMany<IdentityRoleDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Roles.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.openPermissionsModal(data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.delete(data.record.id, data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.Delete',\r\n visible: data => !data.record.isStatic,\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_PROPS = EntityProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n sortable: true,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n const { isDefault, isPublic, name } = data.record;\r\n\r\n return of(\r\n escapeHtmlChars(name) +\r\n (isDefault\r\n ? `<span class=\"badge rounded-pill bg-success ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsDefault',\r\n )}</span>`\r\n : '') +\r\n (isPublic\r\n ? `<span class=\"badge rounded-pill bg-info ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsPublic',\r\n )}</span>`\r\n : ''),\r\n );\r\n },\r\n },\r\n]);\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ePropType, FormProp, PropData } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_ROLES_CREATE_FORM_PROPS = FormProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n id: 'role-name',\r\n disabled: (data: PropData<IdentityRoleDto>) => data.record && data.record.isStatic,\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isDefault',\r\n displayName: 'AbpIdentity::DisplayName:IsDefault',\r\n id: 'role-is-default',\r\n defaultValue: false,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isPublic',\r\n displayName: 'AbpIdentity::DisplayName:IsPublic',\r\n id: 'role-is-public',\r\n defaultValue: false,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_ROLES_EDIT_FORM_PROPS = DEFAULT_ROLES_CREATE_FORM_PROPS;\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityRoleDto[]>([\r\n {\r\n text: 'AbpIdentity::NewRole',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Roles.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany<IdentityUserDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Users.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.openPermissionsModal(data.record.id, data.record.userName);\r\n },\r\n permission: 'AbpIdentity.Users.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.delete(data.record.id, data.record.name || data.record.userName);\r\n },\r\n permission: 'AbpIdentity.Users.Delete',\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_USERS_ENTITY_PROPS = EntityProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n sortable: true,\r\n columnWidth: 250,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n\r\n const inactiveIcon = `<i title=\"${t(\r\n 'AbpIdentity::ThisUserIsNotActiveMessage',\r\n )}\" class=\"fas fa-ban text-danger me-1\"></i>`;\r\n\r\n return of(\r\n `\r\n ${!data.record.isActive ? inactiveIcon : ''}\r\n <span class=\"${!data.record.isActive ? 'text-muted' : ''}\">${escapeHtmlChars(\r\n data.record.userName,\r\n )}</span>`,\r\n );\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { getPasswordValidators } from '@abp/ng.theme.shared';\r\nimport { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_USERS_CREATE_FORM_PROPS = FormProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n id: 'user-name',\r\n validators: () => [Validators.required, Validators.maxLength(256)],\r\n },\r\n {\r\n type: ePropType.Password,\r\n name: 'password',\r\n displayName: 'AbpIdentity::Password',\r\n id: 'password',\r\n autocomplete: 'new-password',\r\n validators: data => [Validators.required, ...getPasswordValidators({ get: data.getInjected })],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::DisplayName:Name',\r\n id: 'name',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'surname',\r\n displayName: 'AbpIdentity::DisplayName:Surname',\r\n id: 'surname',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.Email,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n id: 'email',\r\n validators: () => [Validators.required, Validators.maxLength(256), Validators.email],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n id: 'phone-number',\r\n validators: () => [Validators.maxLength(16)],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isActive',\r\n displayName: 'AbpIdentity::DisplayName:IsActive',\r\n id: 'active-checkbox',\r\n defaultValue: true,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'lockoutEnabled',\r\n displayName: 'AbpIdentity::DisplayName:LockoutEnabled',\r\n id: 'lockout-checkbox',\r\n defaultValue: true,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_USERS_EDIT_FORM_PROPS = DEFAULT_USERS_CREATE_FORM_PROPS.filter(\r\n prop => prop.name !== 'password',\r\n);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityUserDto[]>([\r\n {\r\n text: 'AbpIdentity::NewUser',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Users.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityRoleDto, IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport {\r\n CreateFormPropContributorCallback,\r\n EditFormPropContributorCallback,\r\n EntityActionContributorCallback,\r\n EntityPropContributorCallback,\r\n ToolbarActionContributorCallback,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { DEFAULT_ROLES_ENTITY_ACTIONS } from '../defaults/default-roles-entity-actions';\r\nimport { DEFAULT_ROLES_ENTITY_PROPS } from '../defaults/default-roles-entity-props';\r\nimport {\r\n DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n} from '../defaults/default-roles-form-props';\r\nimport { DEFAULT_ROLES_TOOLBAR_ACTIONS } from '../defaults/default-roles-toolbar-actions';\r\nimport { DEFAULT_USERS_ENTITY_ACTIONS } from '../defaults/default-users-entity-actions';\r\nimport { DEFAULT_USERS_ENTITY_PROPS } from '../defaults/default-users-entity-props';\r\nimport {\r\n DEFAULT_USERS_CREATE_FORM_PROPS,\r\n DEFAULT_USERS_EDIT_FORM_PROPS,\r\n} from '../defaults/default-users-form-props';\r\nimport { DEFAULT_USERS_TOOLBAR_ACTIONS } from '../defaults/default-users-toolbar-actions';\r\nimport { eIdentityComponents } from '../enums/components';\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_TOOLBAR_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_TOOLBAR_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_CREATE_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_CREATE_FORM_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_EDIT_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_EDIT_FORM_PROPS,\r\n};\r\n\r\nexport const IDENTITY_ENTITY_ACTION_CONTRIBUTORS = new InjectionToken<EntityActionContributors>(\r\n 'IDENTITY_ENTITY_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS = new InjectionToken<ToolbarActionContributors>(\r\n 'IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_ENTITY_PROP_CONTRIBUTORS = new InjectionToken<EntityPropContributors>(\r\n 'IDENTITY_ENTITY_PROP_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<CreateFormPropContributors>('IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS');\r\n\r\nexport const IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken<EditFormPropContributors>(\r\n 'IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS',\r\n);\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityActionContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityActionContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype ToolbarActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: ToolbarActionContributorCallback<IdentityRoleDto[]>[];\r\n [eIdentityComponents.Users]: ToolbarActionContributorCallback<IdentityUserDto[]>[];\r\n}>;\r\ntype EntityPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype CreateFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: CreateFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: CreateFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype EditFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EditFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EditFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\n","import { ConfigStateService } from '@abp/ng.core';\r\nimport {\r\n ExtensionsService,\r\n getObjectExtensionEntitiesFromStore,\r\n mapEntitiesToContributors,\r\n mergeWithDefaultActions,\r\n mergeWithDefaultProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map, mapTo, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../enums/components';\r\nimport {\r\n IdentityCreateFormPropContributors,\r\n IdentityEditFormPropContributors,\r\n IdentityEntityActionContributors,\r\n IdentityEntityPropContributors,\r\n IdentityToolbarActionContributors,\r\n} from '../models/config-options';\r\nimport {\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from '../tokens/extensions.token';\r\n\r\n@Injectable()\r\nexport class IdentityExtensionsGuard implements CanActivate {\r\n constructor(private injector: Injector) {}\r\n\r\n canActivate(): Observable<boolean> {\r\n const extensions: ExtensionsService = this.injector.get(ExtensionsService);\r\n const actionContributors: IdentityEntityActionContributors =\r\n this.injector.get(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n const toolbarContributors: IdentityToolbarActionContributors =\r\n this.injector.get(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n const propContributors: IdentityEntityPropContributors =\r\n this.injector.get(IDENTITY_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n const createFormContributors: IdentityCreateFormPropContributors =\r\n this.injector.get(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, null) || {};\r\n const editFormContributors: IdentityEditFormPropContributors =\r\n this.injector.get(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n const configState = this.injector.get(ConfigStateService);\r\n return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe(\r\n map(entities => ({\r\n [eIdentityComponents.Roles]: entities.Role,\r\n [eIdentityComponents.Users]: entities.User,\r\n })),\r\n mapEntitiesToContributors(configState, 'AbpIdentity'),\r\n tap(objectExtensionContributors => {\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n actionContributors,\r\n );\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n toolbarContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.createFormProps,\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n objectExtensionContributors.createForm,\r\n createFormContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.editFormProps,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n objectExtensionContributors.editForm,\r\n editFormContributors,\r\n );\r\n }),\r\n mapTo(true),\r\n );\r\n }\r\n}\r\n","import {\r\n AuthGuard, PermissionGuard,\r\n ReplaceableComponents,\r\n ReplaceableRouteContainerComponent, RouterOutletComponent\r\n} from '@abp/ng.core';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { eIdentityComponents } from './enums/components';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\r\n {\r\n path: '',\r\n component: RouterOutletComponent,\r\n canActivate: [AuthGuard, PermissionGuard, IdentityExtensionsGuard],\r\n children: [\r\n {\r\n path: 'roles',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Roles',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Roles,\r\n defaultComponent: RolesComponent,\r\n } as ReplaceableComponents.RouteData<RolesComponent>,\r\n },\r\n },\r\n {\r\n path: 'users',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Users',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Users,\r\n defaultComponent: UsersComponent,\r\n } as ReplaceableComponents.RouteData<UsersComponent>,\r\n },\r\n },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class IdentityRoutingModule {}\r\n","import { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';\r\nimport { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\r\nimport { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\nimport { IdentityRoutingModule } from './identity-routing.module';\r\nimport { IdentityConfigOptions } from './models/config-options';\r\nimport {\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\n\r\n@NgModule({\r\n declarations: [RolesComponent, UsersComponent],\r\n exports: [RolesComponent, UsersComponent],\r\n imports: [\r\n CoreModule,\r\n IdentityRoutingModule,\r\n NgbNavModule,\r\n ThemeSharedModule,\r\n UiExtensionsModule,\r\n NgbDropdownModule,\r\n PermissionManagementModule,\r\n NgxValidateCoreModule,\r\n ],\r\n})\r\nexport class IdentityModule {\r\n static forChild(options: IdentityConfigOptions = {}): ModuleWithProviders<IdentityModule> {\r\n return {\r\n ngModule: IdentityModule,\r\n providers: [\r\n {\r\n provide: IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n useValue: options.entityPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.createFormPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.editFormPropContributors,\r\n },\r\n IdentityExtensionsGuard,\r\n ],\r\n };\r\n }\r\n\r\n static forLazy(options: IdentityConfigOptions = {}): NgModuleFactory<IdentityModule> {\r\n return new LazyModuleFactory(IdentityModule.forChild(options));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -103,7 +103,7 @@ RolesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
103
103
  provide: EXTENSIONS_IDENTIFIER,
104
104
  useValue: "Identity.RolesComponent" /* Roles */,
105
105
  },
106
- ], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
106
+ ], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "entityDisplayName", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: RolesComponent, decorators: [{
108
108
  type: Component,
109
109
  args: [{ selector: 'abp-roles', providers: [
@@ -209,8 +209,9 @@ class UsersComponent {
209
209
  hookToQuery() {
210
210
  this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));
211
211
  }
212
- openPermissionsModal(providerKey) {
212
+ openPermissionsModal(providerKey, entityDisplayName) {
213
213
  this.providerKey = providerKey;
214
+ this.entityDisplayName = entityDisplayName;
214
215
  setTimeout(() => {
215
216
  this.visiblePermissions = true;
216
217
  }, 0);
@@ -223,7 +224,7 @@ UsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
223
224
  provide: EXTENSIONS_IDENTIFIER,
224
225
  useValue: "Identity.UsersComponent" /* Users */,
225
226
  },
226
- ], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i6.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
227
+ ], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n", components: [{ type: i4.PageToolbarComponent, selector: "abp-page-toolbar", exportAs: ["abpPageToolbar"] }, { type: i4.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], exportAs: ["abpExtensibleTable"] }, { type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { type: i6.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { type: i5.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "entityDisplayName", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }], directives: [{ type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit"], outputs: ["ngSubmit"] }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { type: i6.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i6.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i6.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i6.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }, { type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }], pipes: { "abpLocalization": i1.LocalizationPipe } });
227
228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UsersComponent, decorators: [{
228
229
  type: Component,
229
230
  args: [{ selector: 'abp-users', providers: [
@@ -232,7 +233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
232
233
  provide: EXTENSIONS_IDENTIFIER,
233
234
  useValue: "Identity.UsersComponent" /* Users */,
234
235
  },
235
- ], template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n" }]
236
+ ], template: "<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n" }]
236
237
  }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.ConfirmationService }, { type: i3.IdentityUserService }, { type: i4$1.FormBuilder }, { type: i0.Injector }]; }, propDecorators: { modalContent: [{
237
238
  type: ViewChild,
238
239
  args: ['modalContent', { static: false }]
@@ -338,7 +339,7 @@ const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany([
338
339
  text: 'AbpIdentity::Permissions',
339
340
  action: data => {
340
341
  const component = data.getInjected(UsersComponent);
341
- component.openPermissionsModal(data.record.id);
342
+ component.openPermissionsModal(data.record.id, data.record.userName);
342
343
  },
343
344
  permission: 'AbpIdentity.Users.ManagePermissions',
344
345
  },
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.identity.mjs","sources":["../../../../packages/identity/src/lib/components/roles/roles.component.ts","../../../../packages/identity/src/lib/components/roles/roles.component.html","../../../../packages/identity/src/lib/components/users/users.component.ts","../../../../packages/identity/src/lib/components/users/users.component.html","../../../../packages/identity/src/lib/defaults/default-roles-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-roles-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-form-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-users-form-props.ts","../../../../packages/identity/src/lib/defaults/default-users-toolbar-actions.ts","../../../../packages/identity/src/lib/tokens/extensions.token.ts","../../../../packages/identity/src/lib/guards/extensions.guard.ts","../../../../packages/identity/src/lib/identity-routing.module.ts","../../../../packages/identity/src/lib/identity.module.ts","../../../../packages/identity/src/abp-ng.identity.ts"],"sourcesContent":["import { ListService, PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core';\r\nimport { IdentityRoleDto, IdentityRoleService } from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Component, Injector, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-roles',\r\n templateUrl: './roles.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Roles,\r\n },\r\n ],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n data: PagedResultDto<IdentityRoleDto> = { items: [], totalCount: 0 };\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityRoleDto;\r\n\r\n isModalVisible: boolean;\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n constructor(\r\n public readonly list: ListService<PagedAndSortedResultRequestDto>,\r\n protected confirmationService: ConfirmationService,\r\n protected injector: Injector,\r\n protected service: IdentityRoleService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityRoleDto;\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service.get(id).subscribe(res => {\r\n this.selected = res;\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid) return;\r\n this.modalBusy = true;\r\n\r\n const { id } = this.selected;\r\n (id\r\n ? this.service.update(id, { ...this.selected, ...this.form.value })\r\n : this.service.create(this.form.value)\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [name],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { ListService, PagedResultDto } from '@abp/ng.core';\r\nimport {\r\n GetIdentityUsersInput,\r\n IdentityRoleDto,\r\n IdentityUserDto,\r\n IdentityUserService,\r\n} from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport {\r\n Component,\r\n Injector,\r\n OnInit,\r\n TemplateRef,\r\n TrackByFunction,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-users',\r\n templateUrl: './users.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Users,\r\n },\r\n ],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n data: PagedResultDto<IdentityUserDto> = { items: [], totalCount: 0 };\r\n\r\n @ViewChild('modalContent', { static: false })\r\n modalContent: TemplateRef<any>;\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityUserDto;\r\n\r\n selectedUserRoles: IdentityRoleDto[];\r\n\r\n roles: IdentityRoleDto[];\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n isModalVisible: boolean;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n trackByFn: TrackByFunction<AbstractControl> = (index, item) => Object.keys(item)[0] || index;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n get roleGroups(): FormGroup[] {\r\n return ((this.form.get('roleNames') as FormArray)?.controls as FormGroup[]) || [];\r\n }\r\n\r\n constructor(\r\n public readonly list: ListService<GetIdentityUsersInput>,\r\n protected confirmationService: ConfirmationService,\r\n protected service: IdentityUserService,\r\n protected fb: FormBuilder,\r\n protected injector: Injector,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n\r\n this.service.getAssignableRoles().subscribe(({ items }) => {\r\n this.roles = items;\r\n this.form.addControl(\r\n 'roleNames',\r\n this.fb.array(\r\n this.roles.map(role =>\r\n this.fb.group({\r\n [role.name]: [\r\n this.selected.id\r\n ? !!this.selectedUserRoles?.find(userRole => userRole.id === role.id)\r\n : role.isDefault,\r\n ],\r\n }),\r\n ),\r\n ),\r\n );\r\n });\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityUserDto;\r\n this.selectedUserRoles = [] as IdentityRoleDto[];\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service\r\n .get(id)\r\n .pipe(\r\n tap(user => (this.selected = user)),\r\n switchMap(() => this.service.getRoles(id)),\r\n )\r\n .subscribe(userRole => {\r\n this.selectedUserRoles = userRole.items || [];\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid || this.modalBusy) return;\r\n this.modalBusy = true;\r\n\r\n const { roleNames = [] } = this.form.value;\r\n const mappedRoleNames =\r\n roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]) ||\r\n [];\r\n\r\n const { id } = this.selected;\r\n\r\n (id\r\n ? this.service.update(id, {\r\n ...this.selected,\r\n ...this.form.value,\r\n roleNames: mappedRoleNames,\r\n })\r\n : this.service.create({ ...this.form.value, roleNames: mappedRoleNames })\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, userName: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [userName],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_ACTIONS = EntityAction.createMany<IdentityRoleDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Roles.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.openPermissionsModal(data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.delete(data.record.id, data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.Delete',\r\n visible: data => !data.record.isStatic,\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_PROPS = EntityProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n sortable: true,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n const { isDefault, isPublic, name } = data.record;\r\n\r\n return of(\r\n escapeHtmlChars(name) +\r\n (isDefault\r\n ? `<span class=\"badge rounded-pill bg-success ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsDefault',\r\n )}</span>`\r\n : '') +\r\n (isPublic\r\n ? `<span class=\"badge rounded-pill bg-info ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsPublic',\r\n )}</span>`\r\n : ''),\r\n );\r\n },\r\n },\r\n]);\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ePropType, FormProp, PropData } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_ROLES_CREATE_FORM_PROPS = FormProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n id: 'role-name',\r\n disabled: (data: PropData<IdentityRoleDto>) => data.record && data.record.isStatic,\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isDefault',\r\n displayName: 'AbpIdentity::DisplayName:IsDefault',\r\n id: 'role-is-default',\r\n defaultValue: false,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isPublic',\r\n displayName: 'AbpIdentity::DisplayName:IsPublic',\r\n id: 'role-is-public',\r\n defaultValue: false,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_ROLES_EDIT_FORM_PROPS = DEFAULT_ROLES_CREATE_FORM_PROPS;\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityRoleDto[]>([\r\n {\r\n text: 'AbpIdentity::NewRole',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Roles.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany<IdentityUserDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Users.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.openPermissionsModal(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Users.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.delete(data.record.id, data.record.name || data.record.userName);\r\n },\r\n permission: 'AbpIdentity.Users.Delete',\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_USERS_ENTITY_PROPS = EntityProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n sortable: true,\r\n columnWidth: 250,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n\r\n const inactiveIcon = `<i title=\"${t(\r\n 'AbpIdentity::ThisUserIsNotActiveMessage',\r\n )}\" class=\"fas fa-ban text-danger me-1\"></i>`;\r\n\r\n return of(\r\n `\r\n ${!data.record.isActive ? inactiveIcon : ''}\r\n <span class=\"${!data.record.isActive ? 'text-muted' : ''}\">${escapeHtmlChars(\r\n data.record.userName,\r\n )}</span>`,\r\n );\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { getPasswordValidators } from '@abp/ng.theme.shared';\r\nimport { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_USERS_CREATE_FORM_PROPS = FormProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n id: 'user-name',\r\n validators: () => [Validators.required, Validators.maxLength(256)],\r\n },\r\n {\r\n type: ePropType.Password,\r\n name: 'password',\r\n displayName: 'AbpIdentity::Password',\r\n id: 'password',\r\n autocomplete: 'new-password',\r\n validators: data => [Validators.required, ...getPasswordValidators({ get: data.getInjected })],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::DisplayName:Name',\r\n id: 'name',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'surname',\r\n displayName: 'AbpIdentity::DisplayName:Surname',\r\n id: 'surname',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.Email,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n id: 'email',\r\n validators: () => [Validators.required, Validators.maxLength(256), Validators.email],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n id: 'phone-number',\r\n validators: () => [Validators.maxLength(16)],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isActive',\r\n displayName: 'AbpIdentity::DisplayName:IsActive',\r\n id: 'active-checkbox',\r\n defaultValue: true,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'lockoutEnabled',\r\n displayName: 'AbpIdentity::DisplayName:LockoutEnabled',\r\n id: 'lockout-checkbox',\r\n defaultValue: true,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_USERS_EDIT_FORM_PROPS = DEFAULT_USERS_CREATE_FORM_PROPS.filter(\r\n prop => prop.name !== 'password',\r\n);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityUserDto[]>([\r\n {\r\n text: 'AbpIdentity::NewUser',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Users.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityRoleDto, IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport {\r\n CreateFormPropContributorCallback,\r\n EditFormPropContributorCallback,\r\n EntityActionContributorCallback,\r\n EntityPropContributorCallback,\r\n ToolbarActionContributorCallback,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { DEFAULT_ROLES_ENTITY_ACTIONS } from '../defaults/default-roles-entity-actions';\r\nimport { DEFAULT_ROLES_ENTITY_PROPS } from '../defaults/default-roles-entity-props';\r\nimport {\r\n DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n} from '../defaults/default-roles-form-props';\r\nimport { DEFAULT_ROLES_TOOLBAR_ACTIONS } from '../defaults/default-roles-toolbar-actions';\r\nimport { DEFAULT_USERS_ENTITY_ACTIONS } from '../defaults/default-users-entity-actions';\r\nimport { DEFAULT_USERS_ENTITY_PROPS } from '../defaults/default-users-entity-props';\r\nimport {\r\n DEFAULT_USERS_CREATE_FORM_PROPS,\r\n DEFAULT_USERS_EDIT_FORM_PROPS,\r\n} from '../defaults/default-users-form-props';\r\nimport { DEFAULT_USERS_TOOLBAR_ACTIONS } from '../defaults/default-users-toolbar-actions';\r\nimport { eIdentityComponents } from '../enums/components';\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_TOOLBAR_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_TOOLBAR_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_CREATE_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_CREATE_FORM_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_EDIT_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_EDIT_FORM_PROPS,\r\n};\r\n\r\nexport const IDENTITY_ENTITY_ACTION_CONTRIBUTORS = new InjectionToken<EntityActionContributors>(\r\n 'IDENTITY_ENTITY_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS = new InjectionToken<ToolbarActionContributors>(\r\n 'IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_ENTITY_PROP_CONTRIBUTORS = new InjectionToken<EntityPropContributors>(\r\n 'IDENTITY_ENTITY_PROP_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<CreateFormPropContributors>('IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS');\r\n\r\nexport const IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken<EditFormPropContributors>(\r\n 'IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS',\r\n);\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityActionContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityActionContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype ToolbarActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: ToolbarActionContributorCallback<IdentityRoleDto[]>[];\r\n [eIdentityComponents.Users]: ToolbarActionContributorCallback<IdentityUserDto[]>[];\r\n}>;\r\ntype EntityPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype CreateFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: CreateFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: CreateFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype EditFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EditFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EditFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\n","import { ConfigStateService } from '@abp/ng.core';\r\nimport {\r\n ExtensionsService,\r\n getObjectExtensionEntitiesFromStore,\r\n mapEntitiesToContributors,\r\n mergeWithDefaultActions,\r\n mergeWithDefaultProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map, mapTo, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../enums/components';\r\nimport {\r\n IdentityCreateFormPropContributors,\r\n IdentityEditFormPropContributors,\r\n IdentityEntityActionContributors,\r\n IdentityEntityPropContributors,\r\n IdentityToolbarActionContributors,\r\n} from '../models/config-options';\r\nimport {\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from '../tokens/extensions.token';\r\n\r\n@Injectable()\r\nexport class IdentityExtensionsGuard implements CanActivate {\r\n constructor(private injector: Injector) {}\r\n\r\n canActivate(): Observable<boolean> {\r\n const extensions: ExtensionsService = this.injector.get(ExtensionsService);\r\n const actionContributors: IdentityEntityActionContributors =\r\n this.injector.get(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n const toolbarContributors: IdentityToolbarActionContributors =\r\n this.injector.get(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n const propContributors: IdentityEntityPropContributors =\r\n this.injector.get(IDENTITY_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n const createFormContributors: IdentityCreateFormPropContributors =\r\n this.injector.get(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, null) || {};\r\n const editFormContributors: IdentityEditFormPropContributors =\r\n this.injector.get(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n const configState = this.injector.get(ConfigStateService);\r\n return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe(\r\n map(entities => ({\r\n [eIdentityComponents.Roles]: entities.Role,\r\n [eIdentityComponents.Users]: entities.User,\r\n })),\r\n mapEntitiesToContributors(configState, 'AbpIdentity'),\r\n tap(objectExtensionContributors => {\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n actionContributors,\r\n );\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n toolbarContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.createFormProps,\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n objectExtensionContributors.createForm,\r\n createFormContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.editFormProps,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n objectExtensionContributors.editForm,\r\n editFormContributors,\r\n );\r\n }),\r\n mapTo(true),\r\n );\r\n }\r\n}\r\n","import {\r\n AuthGuard, PermissionGuard,\r\n ReplaceableComponents,\r\n ReplaceableRouteContainerComponent, RouterOutletComponent\r\n} from '@abp/ng.core';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { eIdentityComponents } from './enums/components';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\r\n {\r\n path: '',\r\n component: RouterOutletComponent,\r\n canActivate: [AuthGuard, PermissionGuard, IdentityExtensionsGuard],\r\n children: [\r\n {\r\n path: 'roles',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Roles',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Roles,\r\n defaultComponent: RolesComponent,\r\n } as ReplaceableComponents.RouteData<RolesComponent>,\r\n },\r\n },\r\n {\r\n path: 'users',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Users',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Users,\r\n defaultComponent: UsersComponent,\r\n } as ReplaceableComponents.RouteData<UsersComponent>,\r\n },\r\n },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class IdentityRoutingModule {}\r\n","import { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';\r\nimport { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\r\nimport { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\nimport { IdentityRoutingModule } from './identity-routing.module';\r\nimport { IdentityConfigOptions } from './models/config-options';\r\nimport {\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\n\r\n@NgModule({\r\n declarations: [RolesComponent, UsersComponent],\r\n exports: [RolesComponent, UsersComponent],\r\n imports: [\r\n CoreModule,\r\n IdentityRoutingModule,\r\n NgbNavModule,\r\n ThemeSharedModule,\r\n UiExtensionsModule,\r\n NgbDropdownModule,\r\n PermissionManagementModule,\r\n NgxValidateCoreModule,\r\n ],\r\n})\r\nexport class IdentityModule {\r\n static forChild(options: IdentityConfigOptions = {}): ModuleWithProviders<IdentityModule> {\r\n return {\r\n ngModule: IdentityModule,\r\n providers: [\r\n {\r\n provide: IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n useValue: options.entityPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.createFormPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.editFormPropContributors,\r\n },\r\n IdentityExtensionsGuard,\r\n ],\r\n };\r\n }\r\n\r\n static forLazy(options: IdentityConfigOptions = {}): NgModuleFactory<IdentityModule> {\r\n return new LazyModuleFactory(IdentityModule.forChild(options));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;MAyBa,cAAc;IAqBzB,YACkB,IAAiD,EACvD,mBAAwC,EACxC,QAAkB,EAClB,OAA4B;QAHtB,SAAI,GAAJ,IAAI,CAA6C;QACvD,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,aAAQ,GAAR,QAAQ,CAAU;QAClB,YAAO,GAAP,OAAO,CAAqB;QAxBxC,SAAI,GAAoC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAQrE,uBAAkB,GAAG,KAAK,CAAC;QAI3B,cAAS,GAAG,KAAK,CAAC;QAElB,4BAAuB,mFAAwD;QAE/E,8BAAyB,GAAG,KAAK;YAC/B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC,CAAC;KAOE;IAEJ,QAAQ;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACzC;IAED,SAAS;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;IAED,GAAG;QACD,IAAI,CAAC,QAAQ,GAAG,EAAqB,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,IAAI,CAAC,EAAU;QACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG;YAChC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB,CAAC,CAAC;KACJ;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,CAAC,EAAE;cACC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;cACjE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;aAErC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;aAC9C,SAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACjB,CAAC,CAAC;KACN;IAED,MAAM,CAAC,EAAU,EAAE,IAAY;QAC7B,IAAI,CAAC,mBAAmB;aACrB,IAAI,CAAC,8CAA8C,EAAE,yBAAyB,EAAE;YAC/E,yBAAyB,EAAE,CAAC,IAAI,CAAC;SAClC,CAAC;aACD,SAAS,CAAC,CAAC,MAA2B;YACrC,IAAI,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE;gBAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;aAC1D;SACF,CAAC,CAAC;KACN;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;KACjG;IAED,oBAAoB,CAAC,WAAmB;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,UAAU,CAAC;YACT,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAChC,EAAE,CAAC,CAAC,CAAC;KACP;IAED,IAAI,CAAC,IAAI;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KAC3B;;2GAjGU,cAAc;+FAAd,cAAc,oCARd;QACT,WAAW;QACX;YACE,OAAO,EAAE,qBAAqB;YAC9B,QAAQ;SACT;KACF,0BCvBH,+gEA4DA;2FDnCa,cAAc;kBAX1B,SAAS;+BACE,WAAW,aAEV;wBACT,WAAW;wBACX;4BACE,OAAO,EAAE,qBAAqB;4BAC9B,QAAQ;yBACT;qBACF;;;MEcU,cAAc;IAkCzB,YACkB,IAAwC,EAC9C,mBAAwC,EACxC,OAA4B,EAC5B,EAAe,EACf,QAAkB;QAJZ,SAAI,GAAJ,IAAI,CAAoC;QAC9C,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,YAAO,GAAP,OAAO,CAAqB;QAC5B,OAAE,GAAF,EAAE,CAAa;QACf,aAAQ,GAAR,QAAQ,CAAU;QAtC9B,SAAI,GAAoC,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAarE,uBAAkB,GAAG,KAAK,CAAC;QAM3B,cAAS,GAAG,KAAK,CAAC;QAElB,4BAAuB,mFAAwD;QAE/E,cAAS,GAAqC,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QAE7F,8BAAyB,GAAG,KAAK;YAC/B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC,CAAC;KAYE;IAVJ,IAAI,UAAU;QACZ,OAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAe,EAAE,QAAwB,IAAI,EAAE,CAAC;KACnF;IAUD,QAAQ;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE;YACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,WAAW,EACX,IAAI,CAAC,EAAE,CAAC,KAAK,CACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IACjB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBACZ,CAAC,IAAI,CAAC,IAAI,GAAG;oBACX,IAAI,CAAC,QAAQ,CAAC,EAAE;0BACZ,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;0BACnE,IAAI,CAAC,SAAS;iBACnB;aACF,CAAC,CACH,CACF,CACF,CAAC;SACH,CAAC,CAAC;KACJ;IAED,SAAS;QACP,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;IAED,GAAG;QACD,IAAI,CAAC,QAAQ,GAAG,EAAqB,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,EAAuB,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,IAAI,CAAC,EAAU;QACb,IAAI,CAAC,OAAO;aACT,GAAG,CAAC,EAAE,CAAC;aACP,IAAI,CACH,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,EACnC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAC3C;aACA,SAAS,CAAC,QAAQ;YACjB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB,CAAC,CAAC;KACN;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3C,MAAM,eAAe,GACnB,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,EAAE,CAAC;QAEL,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7B,CAAC,EAAE;cACC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE;gBACtB,GAAG,IAAI,CAAC,QAAQ;gBAChB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;gBAClB,SAAS,EAAE,eAAe;aAC3B,CAAC;cACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;aAExE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;aAC9C,SAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACjB,CAAC,CAAC;KACN;IAED,MAAM,CAAC,EAAU,EAAE,QAAgB;QACjC,IAAI,CAAC,mBAAmB;aACrB,IAAI,CAAC,8CAA8C,EAAE,yBAAyB,EAAE;YAC/E,yBAAyB,EAAE,CAAC,QAAQ,CAAC;SACtC,CAAC;aACD,SAAS,CAAC,CAAC,MAA2B;YACrC,IAAI,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE;gBAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;aAC1D;SACF,CAAC,CAAC;KACN;IAED,IAAI,CAAC,IAAI;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;KAC3B;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;KACjG;IAED,oBAAoB,CAAC,WAAmB;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,UAAU,CAAC;YACT,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAChC,EAAE,CAAC,CAAC,CAAC;KACP;;2GAlJU,cAAc;+FAAd,cAAc,oCARd;QACT,WAAW;QACX;YACE,OAAO,EAAE,qBAAqB;YAC9B,QAAQ;SACT;KACF,wICnCH,giHAoGA;2FD/Da,cAAc;kBAX1B,SAAS;+BACE,WAAW,aAEV;wBACT,WAAW;wBACX;4BACE,OAAO,EAAE,qBAAqB;4BAC9B,QAAQ;yBACT;qBACF;yNAMD,YAAY;sBADX,SAAS;uBAAC,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;AEpCvC,MAAM,4BAA4B,GAAG,YAAY,CAAC,UAAU,CAAkB;IACnF;QACE,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAChC;QACD,UAAU,EAAE,0BAA0B;KACvC;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAClD;QACD,UAAU,EAAE,qCAAqC;KAClD;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACpD;QACD,UAAU,EAAE,0BAA0B;QACtC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;KACvC;CACF,CAAC;;ACzBK,MAAM,0BAA0B,GAAG,UAAU,CAAC,UAAU,CAAkB;IAC/E;QACE,IAAI;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE,IAAI;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YAElD,OAAO,EAAE,CACP,eAAe,CAAC,IAAI,CAAC;iBAClB,SAAS;sBACN,oDAAoD,CAAC,CACnD,oCAAoC,CACrC,SAAS;sBACV,EAAE,CAAC;iBACN,QAAQ;sBACL,iDAAiD,CAAC,CAChD,mCAAmC,CACpC,SAAS;sBACV,EAAE,CAAC,CACV,CAAC;SACH;KACF;CACF,CAAC;;AC3BK,MAAM,+BAA+B,GAAG,QAAQ,CAAC,UAAU,CAAkB;IAClF;QACE,IAAI;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,uBAAuB;QACpC,EAAE,EAAE,WAAW;QACf,QAAQ,EAAE,CAAC,IAA+B,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;QAClF,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;KACxC;IACD;QACE,IAAI;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oCAAoC;QACjD,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,KAAK;KACpB;IACD;QACE,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mCAAmC;QAChD,EAAE,EAAE,gBAAgB;QACpB,YAAY,EAAE,KAAK;KACpB;CACF,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAG,+BAA+B;;ACzBrE,MAAM,6BAA6B,GAAG,aAAa,CAAC,UAAU,CAAoB;IACvF;QACE,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,GAAG,EAAE,CAAC;SACjB;QACD,UAAU,EAAE,0BAA0B;QACtC,IAAI,EAAE,YAAY;KACnB;CACF,CAAC;;ACVK,MAAM,4BAA4B,GAAG,YAAY,CAAC,UAAU,CAAkB;IACnF;QACE,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAChC;QACD,UAAU,EAAE,0BAA0B;KACvC;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAChD;QACD,UAAU,EAAE,qCAAqC;KAClD;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC5E;QACD,UAAU,EAAE,0BAA0B;KACvC;CACF,CAAC;;ACxBK,MAAM,0BAA0B,GAAG,UAAU,CAAC,UAAU,CAAkB;IAC/E;QACE,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,IAAI;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElC,MAAM,YAAY,GAAG,aAAa,CAAC,CACjC,yCAAyC,CAC1C,4CAA4C,CAAC;YAE9C,OAAO,EAAE,CACP;UACE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,YAAY,GAAG,EAAE;uBAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,YAAY,GAAG,EAAE,KAAK,eAAe,CAC1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrB,SAAS,CACX,CAAC;SACH;KACF;IACD;QACE,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,GAAG;KACjB;IACD;QACE,IAAI;QACJ,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,GAAG;KACjB;CACF,CAAC;;ACtCK,MAAM,+BAA+B,GAAG,QAAQ,CAAC,UAAU,CAAkB;IAClF;QACE,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uBAAuB;QACpC,EAAE,EAAE,WAAW;QACf,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KACnE;IACD;QACE,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uBAAuB;QACpC,EAAE,EAAE,UAAU;QACd,YAAY,EAAE,cAAc;QAC5B,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,qBAAqB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KAC/F;IACD;QACE,IAAI;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,+BAA+B;QAC5C,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KAC7C;IACD;QACE,IAAI;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,kCAAkC;QAC/C,EAAE,EAAE,SAAS;QACb,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KAC7C;IACD;QACE,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;QACxC,EAAE,EAAE,OAAO;QACX,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;KACrF;IACD;QACE,IAAI;QACJ,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0BAA0B;QACvC,EAAE,EAAE,cAAc;QAClB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;KAC7C;IACD;QACE,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mCAAmC;QAChD,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,IAAI;KACnB;IACD;QACE,IAAI;QACJ,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,yCAAyC;QACtD,EAAE,EAAE,kBAAkB;QACtB,YAAY,EAAE,IAAI;KACnB;CACF,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAG,+BAA+B,CAAC,MAAM,CACjF,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CACjC;;AC/DM,MAAM,6BAA6B,GAAG,aAAa,CAAC,UAAU,CAAoB;IACvF;QACE,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,IAAI;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACnD,SAAS,CAAC,GAAG,EAAE,CAAC;SACjB;QACD,UAAU,EAAE,0BAA0B;QACtC,IAAI,EAAE,YAAY;KACnB;CACF,CAAC;;MCWW,+BAA+B,GAAG;IAC7C,yCAA6B,4BAA4B;IACzD,yCAA6B,4BAA4B;EACzD;MAEW,gCAAgC,GAAG;IAC9C,yCAA6B,6BAA6B;IAC1D,yCAA6B,6BAA6B;EAC1D;MAEW,6BAA6B,GAAG;IAC3C,yCAA6B,0BAA0B;IACvD,yCAA6B,0BAA0B;EACvD;MAEW,kCAAkC,GAAG;IAChD,yCAA6B,+BAA+B;IAC5D,yCAA6B,+BAA+B;EAC5D;MAEW,gCAAgC,GAAG;IAC9C,yCAA6B,6BAA6B;IAC1D,yCAA6B,6BAA6B;EAC1D;MAEW,mCAAmC,GAAG,IAAI,cAAc,CACnE,qCAAqC,EACrC;MAEW,oCAAoC,GAAG,IAAI,cAAc,CACpE,sCAAsC,EACtC;MAEW,iCAAiC,GAAG,IAAI,cAAc,CACjE,mCAAmC,EACnC;MAEW,sCAAsC,GACjD,IAAI,cAAc,CAA6B,wCAAwC,EAAE;MAE9E,oCAAoC,GAAG,IAAI,cAAc,CACpE,sCAAsC;;MChC3B,uBAAuB;IAClC,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;KAAI;IAE1C,WAAW;QACT,MAAM,UAAU,GAAsB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,mBAAmB,GACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,gBAAgB,GACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACnE,MAAM,sBAAsB,GAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACxE,MAAM,oBAAoB,GACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAEtE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC1D,OAAO,mCAAmC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,QAAQ,KAAK;YACf,yCAA6B,QAAQ,CAAC,IAAI;YAC1C,yCAA6B,QAAQ,CAAC,IAAI;SAC3C,CAAC,CAAC,EACH,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,EACrD,GAAG,CAAC,2BAA2B;YAC7B,uBAAuB,CACrB,UAAU,CAAC,aAAa,EACxB,+BAA+B,EAC/B,kBAAkB,CACnB,CAAC;YACF,uBAAuB,CACrB,UAAU,CAAC,cAAc,EACzB,gCAAgC,EAChC,mBAAmB,CACpB,CAAC;YACF,qBAAqB,CACnB,UAAU,CAAC,WAAW,EACtB,6BAA6B,EAC7B,2BAA2B,CAAC,IAAI,EAChC,gBAAgB,CACjB,CAAC;YACF,qBAAqB,CACnB,UAAU,CAAC,eAAe,EAC1B,kCAAkC,EAClC,2BAA2B,CAAC,UAAU,EACtC,sBAAsB,CACvB,CAAC;YACF,qBAAqB,CACnB,UAAU,CAAC,aAAa,EACxB,gCAAgC,EAChC,2BAA2B,CAAC,QAAQ,EACpC,oBAAoB,CACrB,CAAC;SACH,CAAC,EACF,KAAK,CAAC,IAAI,CAAC,CACZ,CAAC;KACH;;oHAvDU,uBAAuB;wHAAvB,uBAAuB;2FAAvB,uBAAuB;kBADnC,UAAU;;;ACrBX,MAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE;IACpD;QACE,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,qBAAqB;QAChC,WAAW,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,uBAAuB,CAAC;QAClE,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,kCAAkC;gBAC7C,IAAI,EAAE;oBACJ,cAAc,EAAE,mBAAmB;oBACnC,oBAAoB,EAAE;wBACpB,GAAG;wBACH,gBAAgB,EAAE,cAAc;qBACkB;iBACrD;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,kCAAkC;gBAC7C,IAAI,EAAE;oBACJ,cAAc,EAAE,mBAAmB;oBACnC,oBAAoB,EAAE;wBACpB,GAAG;wBACH,gBAAgB,EAAE,cAAc;qBACkB;iBACrD;aACF;SACF;KACF;CACF,CAAC;MAMW,qBAAqB;;kHAArB,qBAAqB;mHAArB,qBAAqB,0CAFtB,YAAY;mHAEX,qBAAqB,YAHvB,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC9B,YAAY;2FAEX,qBAAqB;kBAJjC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;iBACxB;;;MCdY,cAAc;IACzB,OAAO,QAAQ,CAAC,UAAiC,EAAE;QACjD,OAAO;YACL,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,mCAAmC;oBAC5C,QAAQ,EAAE,OAAO,CAAC,wBAAwB;iBAC3C;gBACD;oBACE,OAAO,EAAE,oCAAoC;oBAC7C,QAAQ,EAAE,OAAO,CAAC,yBAAyB;iBAC5C;gBACD;oBACE,OAAO,EAAE,iCAAiC;oBAC1C,QAAQ,EAAE,OAAO,CAAC,sBAAsB;iBACzC;gBACD;oBACE,OAAO,EAAE,sCAAsC;oBAC/C,QAAQ,EAAE,OAAO,CAAC,0BAA0B;iBAC7C;gBACD;oBACE,OAAO,EAAE,oCAAoC;oBAC7C,QAAQ,EAAE,OAAO,CAAC,wBAAwB;iBAC3C;gBACD,uBAAuB;aACxB;SACF,CAAC;KACH;IAED,OAAO,OAAO,CAAC,UAAiC,EAAE;QAChD,OAAO,IAAI,iBAAiB,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;KAChE;;2GAhCU,cAAc;4GAAd,cAAc,iBAbV,cAAc,EAAE,cAAc,aAG3C,UAAU;QACV,qBAAqB;QACrB,YAAY;QACZ,iBAAiB;QACjB,kBAAkB;QAClB,iBAAiB;QACjB,0BAA0B;QAC1B,qBAAqB,aATb,cAAc,EAAE,cAAc;4GAY7B,cAAc,YAXhB;YACP,UAAU;YACV,qBAAqB;YACrB,YAAY;YACZ,iBAAiB;YACjB,kBAAkB;YAClB,iBAAiB;YACjB,0BAA0B;YAC1B,qBAAqB;SACtB;2FAEU,cAAc;kBAd1B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;oBAC9C,OAAO,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;oBACzC,OAAO,EAAE;wBACP,UAAU;wBACV,qBAAqB;wBACrB,YAAY;wBACZ,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,0BAA0B;wBAC1B,qBAAqB;qBACtB;iBACF;;;ACjCD;;;;;;"}
1
+ {"version":3,"file":"abp-ng.identity.mjs","sources":["../../../../packages/identity/src/lib/components/roles/roles.component.ts","../../../../packages/identity/src/lib/components/roles/roles.component.html","../../../../packages/identity/src/lib/components/users/users.component.ts","../../../../packages/identity/src/lib/components/users/users.component.html","../../../../packages/identity/src/lib/defaults/default-roles-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-roles-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-form-props.ts","../../../../packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-actions.ts","../../../../packages/identity/src/lib/defaults/default-users-entity-props.ts","../../../../packages/identity/src/lib/defaults/default-users-form-props.ts","../../../../packages/identity/src/lib/defaults/default-users-toolbar-actions.ts","../../../../packages/identity/src/lib/tokens/extensions.token.ts","../../../../packages/identity/src/lib/guards/extensions.guard.ts","../../../../packages/identity/src/lib/identity-routing.module.ts","../../../../packages/identity/src/lib/identity.module.ts","../../../../packages/identity/src/abp-ng.identity.ts"],"sourcesContent":["import { ListService, PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core';\r\nimport { IdentityRoleDto, IdentityRoleService } from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Component, Injector, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-roles',\r\n templateUrl: './roles.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Roles,\r\n },\r\n ],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n data: PagedResultDto<IdentityRoleDto> = { items: [], totalCount: 0 };\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityRoleDto;\r\n\r\n isModalVisible: boolean;\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n constructor(\r\n public readonly list: ListService<PagedAndSortedResultRequestDto>,\r\n protected confirmationService: ConfirmationService,\r\n protected injector: Injector,\r\n protected service: IdentityRoleService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityRoleDto;\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service.get(id).subscribe(res => {\r\n this.selected = res;\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid) return;\r\n this.modalBusy = true;\r\n\r\n const { id } = this.selected;\r\n (id\r\n ? this.service.update(id, { ...this.selected, ...this.form.value })\r\n : this.service.create(this.form.value)\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [name],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string) {\r\n this.providerKey = providerKey;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Roles' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { ListService, PagedResultDto } from '@abp/ng.core';\r\nimport {\r\n GetIdentityUsersInput,\r\n IdentityRoleDto,\r\n IdentityUserDto,\r\n IdentityUserService,\r\n} from '@abp/ng.identity/proxy';\r\nimport { ePermissionManagementComponents } from '@abp/ng.permission-management';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport {\r\n EXTENSIONS_IDENTIFIER,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport {\r\n Component,\r\n Injector,\r\n OnInit,\r\n TemplateRef,\r\n TrackByFunction,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../../enums/components';\r\n\r\n@Component({\r\n selector: 'abp-users',\r\n templateUrl: './users.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eIdentityComponents.Users,\r\n },\r\n ],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n data: PagedResultDto<IdentityUserDto> = { items: [], totalCount: 0 };\r\n\r\n @ViewChild('modalContent', { static: false })\r\n modalContent: TemplateRef<any>;\r\n\r\n form: FormGroup;\r\n\r\n selected: IdentityUserDto;\r\n\r\n selectedUserRoles: IdentityRoleDto[];\r\n\r\n roles: IdentityRoleDto[];\r\n\r\n visiblePermissions = false;\r\n\r\n providerKey: string;\r\n\r\n isModalVisible: boolean;\r\n\r\n modalBusy = false;\r\n\r\n permissionManagementKey = ePermissionManagementComponents.PermissionManagement;\r\n\r\n entityDisplayName: string;\r\n\r\n trackByFn: TrackByFunction<AbstractControl> = (index, item) => Object.keys(item)[0] || index;\r\n\r\n onVisiblePermissionChange = event => {\r\n this.visiblePermissions = event;\r\n };\r\n\r\n get roleGroups(): FormGroup[] {\r\n return ((this.form.get('roleNames') as FormArray)?.controls as FormGroup[]) || [];\r\n }\r\n\r\n constructor(\r\n public readonly list: ListService<GetIdentityUsersInput>,\r\n protected confirmationService: ConfirmationService,\r\n protected service: IdentityUserService,\r\n protected fb: FormBuilder,\r\n protected injector: Injector,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n buildForm() {\r\n const data = new FormPropData(this.injector, this.selected);\r\n this.form = generateFormFromProps(data);\r\n\r\n this.service.getAssignableRoles().subscribe(({ items }) => {\r\n this.roles = items;\r\n this.form.addControl(\r\n 'roleNames',\r\n this.fb.array(\r\n this.roles.map(role =>\r\n this.fb.group({\r\n [role.name]: [\r\n this.selected.id\r\n ? !!this.selectedUserRoles?.find(userRole => userRole.id === role.id)\r\n : role.isDefault,\r\n ],\r\n }),\r\n ),\r\n ),\r\n );\r\n });\r\n }\r\n\r\n openModal() {\r\n this.buildForm();\r\n this.isModalVisible = true;\r\n }\r\n\r\n add() {\r\n this.selected = {} as IdentityUserDto;\r\n this.selectedUserRoles = [] as IdentityRoleDto[];\r\n this.openModal();\r\n }\r\n\r\n edit(id: string) {\r\n this.service\r\n .get(id)\r\n .pipe(\r\n tap(user => (this.selected = user)),\r\n switchMap(() => this.service.getRoles(id)),\r\n )\r\n .subscribe(userRole => {\r\n this.selectedUserRoles = userRole.items || [];\r\n this.openModal();\r\n });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid || this.modalBusy) return;\r\n this.modalBusy = true;\r\n\r\n const { roleNames = [] } = this.form.value;\r\n const mappedRoleNames =\r\n roleNames.filter(role => !!role[Object.keys(role)[0]]).map(role => Object.keys(role)[0]) ||\r\n [];\r\n\r\n const { id } = this.selected;\r\n\r\n (id\r\n ? this.service.update(id, {\r\n ...this.selected,\r\n ...this.form.value,\r\n roleNames: mappedRoleNames,\r\n })\r\n : this.service.create({ ...this.form.value, roleNames: mappedRoleNames })\r\n )\r\n .pipe(finalize(() => (this.modalBusy = false)))\r\n .subscribe(() => {\r\n this.isModalVisible = false;\r\n this.list.get();\r\n });\r\n }\r\n\r\n delete(id: string, userName: string) {\r\n this.confirmationService\r\n .warn('AbpIdentity::UserDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {\r\n messageLocalizationParams: [userName],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.service.delete(id).subscribe(() => this.list.get());\r\n }\r\n });\r\n }\r\n\r\n sort(data) {\r\n const { prop, dir } = data.sorts[0];\r\n this.list.sortKey = prop;\r\n this.list.sortOrder = dir;\r\n }\r\n\r\n private hookToQuery() {\r\n this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));\r\n }\r\n\r\n openPermissionsModal(providerKey: string, entityDisplayName?: string) {\r\n this.providerKey = providerKey;\r\n this.entityDisplayName = entityDisplayName;\r\n setTimeout(() => {\r\n this.visiblePermissions = true;\r\n }, 0);\r\n }\r\n}\r\n","<div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <h5 class=\"card-title\">{{ 'AbpIdentity::Users' | abpLocalization }}</h5>\r\n </div>\r\n <div class=\"text-end col col-md-6\">\r\n <abp-page-toolbar [record]=\"data.items\"></abp-page-toolbar>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div id=\"data-tables-table-filter\" class=\"data-tables-filter\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"list.filter\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewUser') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <ng-template #loaderRef\r\n ><div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\"></i></div\r\n ></ng-template>\r\n\r\n <form *ngIf=\"form; else loaderRef\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::UserInformations' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'AbpIdentity::Roles' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div\r\n *ngFor=\"let roleGroup of roleGroups; let i = index; trackBy: trackByFn\"\r\n class=\"form-check mb-2\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [attr.id]=\"'roles-' + i\"\r\n [formControl]=\"roleGroup.controls[roles[i].name]\"\r\n />\r\n <label class=\"form-check-label\" [attr.for]=\"'roles-' + i\">{{ roles[i].name }}</label>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n\r\n<abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'U' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n [entityDisplayName]=\"entityDisplayName\"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n>\r\n</abp-permission-management>\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_ACTIONS = EntityAction.createMany<IdentityRoleDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Roles.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.openPermissionsModal(data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.delete(data.record.id, data.record.name);\r\n },\r\n permission: 'AbpIdentity.Roles.Delete',\r\n visible: data => !data.record.isStatic,\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_ROLES_ENTITY_PROPS = EntityProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n sortable: true,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n const { isDefault, isPublic, name } = data.record;\r\n\r\n return of(\r\n escapeHtmlChars(name) +\r\n (isDefault\r\n ? `<span class=\"badge rounded-pill bg-success ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsDefault',\r\n )}</span>`\r\n : '') +\r\n (isPublic\r\n ? `<span class=\"badge rounded-pill bg-info ms-1\">${t(\r\n 'AbpIdentity::DisplayName:IsPublic',\r\n )}</span>`\r\n : ''),\r\n );\r\n },\r\n },\r\n]);\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ePropType, FormProp, PropData } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_ROLES_CREATE_FORM_PROPS = FormProp.createMany<IdentityRoleDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::RoleName',\r\n id: 'role-name',\r\n disabled: (data: PropData<IdentityRoleDto>) => data.record && data.record.isStatic,\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isDefault',\r\n displayName: 'AbpIdentity::DisplayName:IsDefault',\r\n id: 'role-is-default',\r\n defaultValue: false,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isPublic',\r\n displayName: 'AbpIdentity::DisplayName:IsPublic',\r\n id: 'role-is-public',\r\n defaultValue: false,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_ROLES_EDIT_FORM_PROPS = DEFAULT_ROLES_CREATE_FORM_PROPS;\r\n","import { IdentityRoleDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { RolesComponent } from '../components/roles/roles.component';\r\n\r\nexport const DEFAULT_ROLES_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityRoleDto[]>([\r\n {\r\n text: 'AbpIdentity::NewRole',\r\n action: data => {\r\n const component = data.getInjected(RolesComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Roles.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_ENTITY_ACTIONS = EntityAction.createMany<IdentityUserDto>([\r\n {\r\n text: 'AbpIdentity::Edit',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.edit(data.record.id);\r\n },\r\n permission: 'AbpIdentity.Users.Update',\r\n },\r\n {\r\n text: 'AbpIdentity::Permissions',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.openPermissionsModal(data.record.id, data.record.userName);\r\n },\r\n permission: 'AbpIdentity.Users.ManagePermissions',\r\n },\r\n {\r\n text: 'AbpIdentity::Delete',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.delete(data.record.id, data.record.name || data.record.userName);\r\n },\r\n permission: 'AbpIdentity.Users.Delete',\r\n },\r\n]);\r\n","import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';\r\nimport { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';\r\nimport { of } from 'rxjs';\r\n\r\nexport const DEFAULT_USERS_ENTITY_PROPS = EntityProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n sortable: true,\r\n columnWidth: 250,\r\n valueResolver: data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const t = l10n.instant.bind(l10n);\r\n\r\n const inactiveIcon = `<i title=\"${t(\r\n 'AbpIdentity::ThisUserIsNotActiveMessage',\r\n )}\" class=\"fas fa-ban text-danger me-1\"></i>`;\r\n\r\n return of(\r\n `\r\n ${!data.record.isActive ? inactiveIcon : ''}\r\n <span class=\"${!data.record.isActive ? 'text-muted' : ''}\">${escapeHtmlChars(\r\n data.record.userName,\r\n )}</span>`,\r\n );\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n]);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { getPasswordValidators } from '@abp/ng.theme.shared';\r\nimport { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_USERS_CREATE_FORM_PROPS = FormProp.createMany<IdentityUserDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'AbpIdentity::UserName',\r\n id: 'user-name',\r\n validators: () => [Validators.required, Validators.maxLength(256)],\r\n },\r\n {\r\n type: ePropType.Password,\r\n name: 'password',\r\n displayName: 'AbpIdentity::Password',\r\n id: 'password',\r\n autocomplete: 'new-password',\r\n validators: data => [Validators.required, ...getPasswordValidators({ get: data.getInjected })],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'AbpIdentity::DisplayName:Name',\r\n id: 'name',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'surname',\r\n displayName: 'AbpIdentity::DisplayName:Surname',\r\n id: 'surname',\r\n validators: () => [Validators.maxLength(64)],\r\n },\r\n {\r\n type: ePropType.Email,\r\n name: 'email',\r\n displayName: 'AbpIdentity::EmailAddress',\r\n id: 'email',\r\n validators: () => [Validators.required, Validators.maxLength(256), Validators.email],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'phoneNumber',\r\n displayName: 'AbpIdentity::PhoneNumber',\r\n id: 'phone-number',\r\n validators: () => [Validators.maxLength(16)],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isActive',\r\n displayName: 'AbpIdentity::DisplayName:IsActive',\r\n id: 'active-checkbox',\r\n defaultValue: true,\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'lockoutEnabled',\r\n displayName: 'AbpIdentity::DisplayName:LockoutEnabled',\r\n id: 'lockout-checkbox',\r\n defaultValue: true,\r\n },\r\n]);\r\n\r\nexport const DEFAULT_USERS_EDIT_FORM_PROPS = DEFAULT_USERS_CREATE_FORM_PROPS.filter(\r\n prop => prop.name !== 'password',\r\n);\r\n","import { IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport { ToolbarAction } from '@abp/ng.theme.shared/extensions';\r\nimport { UsersComponent } from '../components/users/users.component';\r\n\r\nexport const DEFAULT_USERS_TOOLBAR_ACTIONS = ToolbarAction.createMany<IdentityUserDto[]>([\r\n {\r\n text: 'AbpIdentity::NewUser',\r\n action: data => {\r\n const component = data.getInjected(UsersComponent);\r\n component.add();\r\n },\r\n permission: 'AbpIdentity.Users.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { IdentityRoleDto, IdentityUserDto } from '@abp/ng.identity/proxy';\r\nimport {\r\n CreateFormPropContributorCallback,\r\n EditFormPropContributorCallback,\r\n EntityActionContributorCallback,\r\n EntityPropContributorCallback,\r\n ToolbarActionContributorCallback,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { DEFAULT_ROLES_ENTITY_ACTIONS } from '../defaults/default-roles-entity-actions';\r\nimport { DEFAULT_ROLES_ENTITY_PROPS } from '../defaults/default-roles-entity-props';\r\nimport {\r\n DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n} from '../defaults/default-roles-form-props';\r\nimport { DEFAULT_ROLES_TOOLBAR_ACTIONS } from '../defaults/default-roles-toolbar-actions';\r\nimport { DEFAULT_USERS_ENTITY_ACTIONS } from '../defaults/default-users-entity-actions';\r\nimport { DEFAULT_USERS_ENTITY_PROPS } from '../defaults/default-users-entity-props';\r\nimport {\r\n DEFAULT_USERS_CREATE_FORM_PROPS,\r\n DEFAULT_USERS_EDIT_FORM_PROPS,\r\n} from '../defaults/default-users-form-props';\r\nimport { DEFAULT_USERS_TOOLBAR_ACTIONS } from '../defaults/default-users-toolbar-actions';\r\nimport { eIdentityComponents } from '../enums/components';\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_TOOLBAR_ACTIONS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_TOOLBAR_ACTIONS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_ENTITY_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_ENTITY_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_CREATE_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_CREATE_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_CREATE_FORM_PROPS,\r\n};\r\n\r\nexport const DEFAULT_IDENTITY_EDIT_FORM_PROPS = {\r\n [eIdentityComponents.Roles]: DEFAULT_ROLES_EDIT_FORM_PROPS,\r\n [eIdentityComponents.Users]: DEFAULT_USERS_EDIT_FORM_PROPS,\r\n};\r\n\r\nexport const IDENTITY_ENTITY_ACTION_CONTRIBUTORS = new InjectionToken<EntityActionContributors>(\r\n 'IDENTITY_ENTITY_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS = new InjectionToken<ToolbarActionContributors>(\r\n 'IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_ENTITY_PROP_CONTRIBUTORS = new InjectionToken<EntityPropContributors>(\r\n 'IDENTITY_ENTITY_PROP_CONTRIBUTORS',\r\n);\r\n\r\nexport const IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<CreateFormPropContributors>('IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS');\r\n\r\nexport const IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken<EditFormPropContributors>(\r\n 'IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS',\r\n);\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityActionContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityActionContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype ToolbarActionContributors = Partial<{\r\n [eIdentityComponents.Roles]: ToolbarActionContributorCallback<IdentityRoleDto[]>[];\r\n [eIdentityComponents.Users]: ToolbarActionContributorCallback<IdentityUserDto[]>[];\r\n}>;\r\ntype EntityPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EntityPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EntityPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype CreateFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: CreateFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: CreateFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\ntype EditFormPropContributors = Partial<{\r\n [eIdentityComponents.Roles]: EditFormPropContributorCallback<IdentityRoleDto>[];\r\n [eIdentityComponents.Users]: EditFormPropContributorCallback<IdentityUserDto>[];\r\n}>;\r\n","import { ConfigStateService } from '@abp/ng.core';\r\nimport {\r\n ExtensionsService,\r\n getObjectExtensionEntitiesFromStore,\r\n mapEntitiesToContributors,\r\n mergeWithDefaultActions,\r\n mergeWithDefaultProps,\r\n} from '@abp/ng.theme.shared/extensions';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map, mapTo, tap } from 'rxjs/operators';\r\nimport { eIdentityComponents } from '../enums/components';\r\nimport {\r\n IdentityCreateFormPropContributors,\r\n IdentityEditFormPropContributors,\r\n IdentityEntityActionContributors,\r\n IdentityEntityPropContributors,\r\n IdentityToolbarActionContributors,\r\n} from '../models/config-options';\r\nimport {\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from '../tokens/extensions.token';\r\n\r\n@Injectable()\r\nexport class IdentityExtensionsGuard implements CanActivate {\r\n constructor(private injector: Injector) {}\r\n\r\n canActivate(): Observable<boolean> {\r\n const extensions: ExtensionsService = this.injector.get(ExtensionsService);\r\n const actionContributors: IdentityEntityActionContributors =\r\n this.injector.get(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, null) || {};\r\n const toolbarContributors: IdentityToolbarActionContributors =\r\n this.injector.get(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, null) || {};\r\n const propContributors: IdentityEntityPropContributors =\r\n this.injector.get(IDENTITY_ENTITY_PROP_CONTRIBUTORS, null) || {};\r\n const createFormContributors: IdentityCreateFormPropContributors =\r\n this.injector.get(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, null) || {};\r\n const editFormContributors: IdentityEditFormPropContributors =\r\n this.injector.get(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, null) || {};\r\n\r\n const configState = this.injector.get(ConfigStateService);\r\n return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe(\r\n map(entities => ({\r\n [eIdentityComponents.Roles]: entities.Role,\r\n [eIdentityComponents.Users]: entities.User,\r\n })),\r\n mapEntitiesToContributors(configState, 'AbpIdentity'),\r\n tap(objectExtensionContributors => {\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n DEFAULT_IDENTITY_ENTITY_ACTIONS,\r\n actionContributors,\r\n );\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n DEFAULT_IDENTITY_TOOLBAR_ACTIONS,\r\n toolbarContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n DEFAULT_IDENTITY_ENTITY_PROPS,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.createFormProps,\r\n DEFAULT_IDENTITY_CREATE_FORM_PROPS,\r\n objectExtensionContributors.createForm,\r\n createFormContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.editFormProps,\r\n DEFAULT_IDENTITY_EDIT_FORM_PROPS,\r\n objectExtensionContributors.editForm,\r\n editFormContributors,\r\n );\r\n }),\r\n mapTo(true),\r\n );\r\n }\r\n}\r\n","import {\r\n AuthGuard, PermissionGuard,\r\n ReplaceableComponents,\r\n ReplaceableRouteContainerComponent, RouterOutletComponent\r\n} from '@abp/ng.core';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { eIdentityComponents } from './enums/components';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'roles', pathMatch: 'full' },\r\n {\r\n path: '',\r\n component: RouterOutletComponent,\r\n canActivate: [AuthGuard, PermissionGuard, IdentityExtensionsGuard],\r\n children: [\r\n {\r\n path: 'roles',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Roles',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Roles,\r\n defaultComponent: RolesComponent,\r\n } as ReplaceableComponents.RouteData<RolesComponent>,\r\n },\r\n },\r\n {\r\n path: 'users',\r\n component: ReplaceableRouteContainerComponent,\r\n data: {\r\n requiredPolicy: 'AbpIdentity.Users',\r\n replaceableComponent: {\r\n key: eIdentityComponents.Users,\r\n defaultComponent: UsersComponent,\r\n } as ReplaceableComponents.RouteData<UsersComponent>,\r\n },\r\n },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class IdentityRoutingModule {}\r\n","import { CoreModule, LazyModuleFactory } from '@abp/ng.core';\r\nimport { PermissionManagementModule } from '@abp/ng.permission-management';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';\r\nimport { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';\r\nimport { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { RolesComponent } from './components/roles/roles.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { IdentityExtensionsGuard } from './guards/extensions.guard';\r\nimport { IdentityRoutingModule } from './identity-routing.module';\r\nimport { IdentityConfigOptions } from './models/config-options';\r\nimport {\r\n IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n} from './tokens/extensions.token';\r\n\r\n@NgModule({\r\n declarations: [RolesComponent, UsersComponent],\r\n exports: [RolesComponent, UsersComponent],\r\n imports: [\r\n CoreModule,\r\n IdentityRoutingModule,\r\n NgbNavModule,\r\n ThemeSharedModule,\r\n UiExtensionsModule,\r\n NgbDropdownModule,\r\n PermissionManagementModule,\r\n NgxValidateCoreModule,\r\n ],\r\n})\r\nexport class IdentityModule {\r\n static forChild(options: IdentityConfigOptions = {}): ModuleWithProviders<IdentityModule> {\r\n return {\r\n ngModule: IdentityModule,\r\n providers: [\r\n {\r\n provide: IDENTITY_ENTITY_ACTION_CONTRIBUTORS,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: IDENTITY_ENTITY_PROP_CONTRIBUTORS,\r\n useValue: options.entityPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.createFormPropContributors,\r\n },\r\n {\r\n provide: IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.editFormPropContributors,\r\n },\r\n IdentityExtensionsGuard,\r\n ],\r\n };\r\n }\r\n\r\n static forLazy(options: IdentityConfigOptions = {}): NgModuleFactory<IdentityModule> {\r\n return new LazyModuleFactory(IdentityModule.forChild(options));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare class UsersComponent implements OnInit {
22
22
  isModalVisible: boolean;
23
23
  modalBusy: boolean;
24
24
  permissionManagementKey: ePermissionManagementComponents;
25
+ entityDisplayName: string;
25
26
  trackByFn: TrackByFunction<AbstractControl>;
26
27
  onVisiblePermissionChange: (event: any) => void;
27
28
  get roleGroups(): FormGroup[];
@@ -35,7 +36,7 @@ export declare class UsersComponent implements OnInit {
35
36
  delete(id: string, userName: string): void;
36
37
  sort(data: any): void;
37
38
  private hookToQuery;
38
- openPermissionsModal(providerKey: string): void;
39
+ openPermissionsModal(providerKey: string, entityDisplayName?: string): void;
39
40
  static ɵfac: i0.ɵɵFactoryDeclaration<UsersComponent, never>;
40
41
  static ɵcmp: i0.ɵɵComponentDeclaration<UsersComponent, "abp-users", never, {}, {}, never, never>;
41
42
  }
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@abp/ng.identity",
3
- "version": "5.2.0-rc.2",
3
+ "version": "5.2.2",
4
4
  "homepage": "https://abp.io",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/abpframework/abp.git"
8
8
  },
9
9
  "dependencies": {
10
- "@abp/ng.permission-management": "~5.2.0-rc.2",
11
- "@abp/ng.theme.shared": "~5.2.0-rc.2",
10
+ "@abp/ng.permission-management": "~5.2.2",
11
+ "@abp/ng.theme.shared": "~5.2.2",
12
12
  "tslib": "^2.0.0"
13
13
  },
14
14
  "publishConfig": {
@@ -51,6 +51,6 @@
51
51
  },
52
52
  "sideEffects": false,
53
53
  "peerDependencies": {
54
- "@abp/ng.core": "5.2.0-rc.2"
54
+ "@abp/ng.core": "5.2.2"
55
55
  }
56
56
  }