@firestitch/app-acl 9.0.19 → 12.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/acl-entries/acl-entries.component.d.ts +7 -2
- package/app/components/acl-entry/acl-entry.component.d.ts +8 -2
- package/app/components/acl-object-roles/acl-object-roles.component.d.ts +5 -1
- package/app/components/acl-permission-popover/acl-permission-popover.component.d.ts +3 -0
- package/app/components/acl-role/acl-role.component.d.ts +6 -3
- package/app/components/acl-role-popover/acl-role-popover.component.d.ts +4 -1
- package/app/components/acl-roles/acl-roles.component.d.ts +6 -2
- package/app/consts/acl-role-accesses.d.ts +1 -1
- package/app/fs-app-acl.module.d.ts +29 -2
- package/app/services/app-acl.service.d.ts +6 -1
- package/bundles/firestitch-app-acl.umd.js +668 -538
- package/bundles/firestitch-app-acl.umd.js.map +1 -1
- package/esm2015/app/components/acl-entries/acl-entries.component.js +39 -50
- package/esm2015/app/components/acl-entry/acl-entry.component.js +28 -23
- package/esm2015/app/components/acl-object-roles/acl-object-roles.component.js +39 -45
- package/esm2015/app/components/acl-permission-popover/acl-permission-popover.component.js +18 -20
- package/esm2015/app/components/acl-role/acl-role.component.js +40 -29
- package/esm2015/app/components/acl-role-popover/acl-role-popover.component.js +22 -25
- package/esm2015/app/components/acl-roles/acl-roles.component.js +35 -47
- package/esm2015/app/consts/acl-role-accesses.js +2 -2
- package/esm2015/app/enums/acl-role-access.js +1 -1
- package/esm2015/app/fs-app-acl.module.js +81 -39
- package/esm2015/app/injectors/app-acl-config.injector.js +1 -1
- package/esm2015/app/interfaces/acl-entry-data.js +2 -1
- package/esm2015/app/interfaces/acl-entry.js +2 -1
- package/esm2015/app/interfaces/acl-level.js +2 -1
- package/esm2015/app/interfaces/acl-object-entry.js +2 -1
- package/esm2015/app/interfaces/acl-object-role.js +2 -1
- package/esm2015/app/interfaces/acl-object.js +2 -1
- package/esm2015/app/interfaces/acl-permission.js +2 -1
- package/esm2015/app/interfaces/acl-role.js +2 -1
- package/esm2015/app/interfaces/app-acl-config.js +2 -1
- package/esm2015/app/interfaces/name-value.js +2 -1
- package/esm2015/app/services/app-acl.service.js +14 -17
- package/esm2015/firestitch-app-acl.js +1 -7
- package/esm2015/public_api.js +9 -4
- package/fesm2015/firestitch-app-acl.js +293 -302
- package/fesm2015/firestitch-app-acl.js.map +1 -1
- package/firestitch-app-acl.d.ts +1 -7
- package/package.json +8 -9
- package/public_api.d.ts +18 -4
- package/app/components/acl-entry/index.d.ts +0 -1
- package/app/components/acl-permission-popover/index.d.ts +0 -1
- package/app/enums/index.d.ts +0 -1
- package/app/injectors/index.d.ts +0 -1
- package/app/interfaces/index.d.ts +0 -11
- package/app/services/index.d.ts +0 -1
- package/bundles/firestitch-app-acl.umd.min.js +0 -16
- package/bundles/firestitch-app-acl.umd.min.js.map +0 -1
- package/esm2015/app/components/acl-entry/index.js +0 -2
- package/esm2015/app/components/acl-permission-popover/index.js +0 -2
- package/esm2015/app/enums/index.js +0 -4
- package/esm2015/app/injectors/index.js +0 -4
- package/esm2015/app/interfaces/index.js +0 -2
- package/esm2015/app/services/index.js +0 -2
- package/esm5/app/components/acl-entries/acl-entries.component.js +0 -180
- package/esm5/app/components/acl-entry/acl-entry.component.js +0 -93
- package/esm5/app/components/acl-entry/index.js +0 -2
- package/esm5/app/components/acl-object-roles/acl-object-roles.component.js +0 -64
- package/esm5/app/components/acl-permission-popover/acl-permission-popover.component.js +0 -37
- package/esm5/app/components/acl-permission-popover/index.js +0 -2
- package/esm5/app/components/acl-role/acl-role.component.js +0 -201
- package/esm5/app/components/acl-role-popover/acl-role-popover.component.js +0 -43
- package/esm5/app/components/acl-roles/acl-roles.component.js +0 -163
- package/esm5/app/consts/acl-role-accesses.js +0 -8
- package/esm5/app/enums/acl-role-access.js +0 -8
- package/esm5/app/enums/index.js +0 -4
- package/esm5/app/fs-app-acl.module.js +0 -86
- package/esm5/app/injectors/app-acl-config.injector.js +0 -3
- package/esm5/app/injectors/index.js +0 -4
- package/esm5/app/interfaces/acl-entry-data.js +0 -1
- package/esm5/app/interfaces/acl-entry.js +0 -1
- package/esm5/app/interfaces/acl-level.js +0 -1
- package/esm5/app/interfaces/acl-object-entry.js +0 -1
- package/esm5/app/interfaces/acl-object-role.js +0 -1
- package/esm5/app/interfaces/acl-object.js +0 -1
- package/esm5/app/interfaces/acl-permission.js +0 -1
- package/esm5/app/interfaces/acl-role.js +0 -1
- package/esm5/app/interfaces/app-acl-config.js +0 -1
- package/esm5/app/interfaces/index.js +0 -2
- package/esm5/app/interfaces/name-value.js +0 -1
- package/esm5/app/services/app-acl.service.js +0 -86
- package/esm5/app/services/index.js +0 -2
- package/esm5/firestitch-app-acl.js +0 -11
- package/esm5/public_api.js +0 -6
- package/fesm5/firestitch-app-acl.js +0 -919
- package/fesm5/firestitch-app-acl.js.map +0 -1
- package/firestitch-app-acl.metadata.json +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-app-acl.js","sources":["ng://@firestitch/app-acl/app/enums/acl-role-access.ts","ng://@firestitch/app-acl/app/enums/index.ts","ng://@firestitch/app-acl/app/consts/acl-role-accesses.ts","ng://@firestitch/app-acl/app/injectors/app-acl-config.injector.ts","ng://@firestitch/app-acl/app/services/app-acl.service.ts","ng://@firestitch/app-acl/app/components/acl-role/acl-role.component.ts","ng://@firestitch/app-acl/app/components/acl-roles/acl-roles.component.ts","ng://@firestitch/app-acl/app/components/acl-permission-popover/acl-permission-popover.component.ts","ng://@firestitch/app-acl/app/components/acl-role-popover/acl-role-popover.component.ts","ng://@firestitch/app-acl/app/components/acl-entry/acl-entry.component.ts","ng://@firestitch/app-acl/app/components/acl-entries/acl-entries.component.ts","ng://@firestitch/app-acl/app/components/acl-object-roles/acl-object-roles.component.ts","ng://@firestitch/app-acl/app/fs-app-acl.module.ts","ng://@firestitch/app-acl/app/injectors/index.ts","ng://@firestitch/app-acl/firestitch-app-acl.ts"],"sourcesContent":["export enum AclRoleAccess {\n None = 0,\n Read = 5,\n Write = 10,\n Full = 15,\n}\n","// start:ng42.barrel\nexport * from './acl-role-access';\n// end:ng42.barrel\n\n","\nimport { AclRoleAccess } from '../enums';\n\nexport const AclRoleAccesses = [\n { name: 'None', value: AclRoleAccess.None },\n { name: 'Read', value: AclRoleAccess.Read },\n { name: 'Write', value: AclRoleAccess.Write },\n { name: 'Full', value: AclRoleAccess.Full }\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_APP_ACL_CONFIG = new InjectionToken<any[]>('fs-app-acl-config');\n","import { Injectable, Inject } from '@angular/core';\n\nimport { list } from '@firestitch/common';\n\nimport { map } from 'rxjs/operators';\nimport { ReplaySubject } from 'rxjs';\n\nimport { isArray } from 'lodash-es';\n\n\nimport { FS_APP_ACL_CONFIG } from './../injectors/app-acl-config.injector';\nimport { AppAclConfig, AclPermission, AclLevel } from './../interfaces';\n\nimport * as _snakecaseKeys from 'snakecase-keys';\nimport * as _camelcaseKeys from 'camelcase-keys';\n\nconst snakecaseKeys = _snakecaseKeys;\nconst camelcaseKeys = _camelcaseKeys;\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsAppAclService {\n\n private _permissions$: ReplaySubject<AclPermission[]>;\n private _levels$: ReplaySubject<AclLevel[]>;\n\n constructor(\n @Inject(FS_APP_ACL_CONFIG) private _appAclConfig: AppAclConfig,\n ) { }\n\n public getPermissions() {\n\n if (!this._permissions$) {\n this._permissions$ = new ReplaySubject();\n\n this._appAclConfig.permissions\n .pipe(\n map((data) => this.input(data)),\n )\n .subscribe((permissions) => {\n this._permissions$.next(permissions);\n this._permissions$.complete();\n });\n }\n\n return this._permissions$;\n }\n\n public getLevels() {\n\n if (!this._levels$) {\n this._levels$ = new ReplaySubject();\n\n this._appAclConfig.levels\n .pipe(\n map((data) => this.input(data)),\n )\n .subscribe((levels) => {\n this._levels$.next(levels);\n this._levels$.complete();\n });\n }\n\n return this._levels$;\n }\n\n\n public getIndexedLevels() {\n return this.getLevels()\n .pipe(\n map((data) => {\n return list(data, 'name', 'value');\n })\n );\n }\n\n public input(data) {\n if (isArray(data)) {\n return data.map(item => {\n return this._appAclConfig.case === 'snake' ? camelcaseKeys(item, { deep: true }) : item;\n });\n } else {\n return this._appAclConfig.case === 'snake' ? camelcaseKeys(data, { deep: true }) : data;\n }\n }\n\n public output(data) {\n if (isArray(data)) {\n return data.map(item => {\n return this._appAclConfig.case === 'snake' ? snakecaseKeys(item, { deep: true }) : item;\n });\n } else {\n return this._appAclConfig.case === 'snake' ? snakecaseKeys(data, { deep: true }) : data;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { AclRoleAccesses } from './../../consts/acl-role-accesses';\nimport { AclRole } from './../../interfaces';\nimport { map, takeUntil, tap } from 'rxjs/operators';\n\nimport { FsMessage } from '@firestitch/message';\nimport { list } from '@firestitch/common';\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\n\nimport { forkJoin, Observable, of, Subject } from 'rxjs';\nimport { FsAppAclService } from './../../services';\n\n\n@Component({\n templateUrl: './acl-role.component.html',\n styleUrls: ['./acl-role.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsAclRoleComponent implements OnInit, OnDestroy {\n\n @ViewChild(FsListComponent) public list: FsListComponent;\n\n public aclRole: AclRole = null;\n public environment;\n public permissions: any[] = [];\n public listConfig: FsListConfig;\n public levelPermissions = [];\n public AclRoleAccesses = AclRoleAccesses;\n public indexedAccesses = {};\n public aclLevels: any[] = [];\n public indexedAclLevels = {};\n public onlyFullAccess = false;\n public AclLevels = {};\n public aclRoleConfigs = [];\n public levelAclRoleConfigs = [];\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialogRef: MatDialogRef<FsAclRoleComponent>,\n private readonly _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private readonly _data: any,\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n forkJoin(\n this.getRole(),\n this._appAclService.getPermissions(),\n )\n .pipe(takeUntil(this._destroy$))\n .subscribe(([\n aclRole,\n aclPermissions,\n ]) => {\n\n this.permissions = aclPermissions;\n this.aclLevels = this._data.aclLevels;\n\n this.indexedAclLevels = list(this.aclLevels, 'name', 'value');\n this.indexedAccesses = list(AclRoleAccesses, 'name', 'value');\n\n this.aclRole = {\n ...{\n aclPermissions: [],\n allPermissions: true,\n aclRoleConfigs: [],\n permissions: {},\n level: this.aclLevels[0].value,\n },\n ...aclRole,\n };\n\n if (this.aclRole.id) {\n this.permissions.forEach((permission) => {\n let access = 0;\n\n const aclPermission = this.aclRole.aclPermissions.find((item) => {\n return item.permission === permission.value;\n });\n\n if (aclPermission) {\n access = aclPermission.access;\n }\n\n this.aclRole.permissions[permission.value] = access;\n });\n }\n\n if (this.aclRole.allPermissions) {\n this._applyMaxPermissionAccess();\n }\n\n this._updatePermissions();\n this._updateAclRoleConfigs();\n\n this._cdRef.markForCheck();\n });\n\n this.listConfig = {\n status: false,\n paging: false,\n noResults: {\n message: '',\n },\n group: {\n initialExpand: true,\n groupBy: (data) => {\n return data;\n },\n compareBy: (data) => {\n return data.category || 'General';\n },\n },\n fetch: () => {\n return of({\n data: this.levelPermissions.sort((a, b) => {\n a = a.name.toUpperCase();\n b = b.name.toUpperCase();\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n\n return 0;\n }),\n });\n },\n };\n }\n\n public levelChange(): void {\n this._updatePermissions();\n this._updateAclRoleConfigs();\n setTimeout(() => {\n this.list.reload();\n });\n }\n\n public getRole(): Observable<any> {\n if (!this._data.aclRole.id) {\n return of(this._data.aclRole);\n }\n\n const query: any = {\n aclPermissions: true,\n aclRoleConfigs: true,\n };\n\n if (!this.environment) {\n query.environmentId = null;\n }\n\n return this._data.loadAclRole(this._data.aclRole, query)\n .pipe(\n map((data) => this._appAclService.input(data)),\n );\n }\n\n public save = (): Observable<any> => {\n const aclRole = {\n ...this.aclRole,\n permissions: this.levelPermissions.map((permission) => {\n return {\n value: permission.value,\n access: this.aclRole.permissions[permission.value] || 0,\n };\n }),\n aclRoleConfigs: this.levelAclRoleConfigs.map((item) => {\n return {\n id: item.id,\n value: item.value,\n data: item.data,\n };\n }),\n };\n\n return this._data.saveAclRole(this._appAclService.output(aclRole))\n .pipe(\n tap((response) => {\n this._message.success('Saved Changes');\n this.close(response);\n }),\n );\n }\n\n public close(data: any = null): void {\n this._dialogRef.close(data);\n }\n\n public allPermissionsChange(all: boolean): void {\n this._updatePermissions();\n if (all) {\n this._applyMaxPermissionAccess();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _updatePermissions(): void {\n this.levelPermissions = this.permissions.filter((permission) => {\n return permission.levels.some((item) => {\n return item === this.aclRole.level;\n });\n });\n }\n\n private _updateAclRoleConfigs(): void {\n this.levelAclRoleConfigs = this.aclRoleConfigs.filter((item) => {\n return this.aclRole.level === item.level;\n });\n }\n\n private _applyMaxPermissionAccess(): void {\n this.permissions.forEach((permission) => {\n this.aclRole.permissions[permission.value] = Math.max(...permission.accesses);\n });\n }\n\n}\n","import { takeUntil, filter, map } from 'rxjs/operators';\nimport { Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, ChangeDetectorRef, ViewChildren, QueryList } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { FsListComponent, FsListConfig } from '@firestitch/list';\nimport { ItemType } from '@firestitch/filter';\nimport { list } from '@firestitch/common';\n\nimport { Subject, Observable } from 'rxjs';\n\nimport { AclRole, AclLevel } from './../../interfaces';\nimport { FsAclRoleComponent } from '../acl-role/acl-role.component';\nimport { FsAppAclService } from '../../services';\n\n@Component({\n selector: 'fs-acl-roles',\n templateUrl: 'acl-roles.component.html',\n styleUrls: [ 'acl-roles.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsAclRolesComponent implements OnInit, OnDestroy {\n\n @Input() deleteAclRole: (aclRole: AclRole) => Observable<AclRole>;\n @Input() saveAclRole: (aclRole: AclRole) => Observable<AclRole>;\n @Input() loadAclRoles: (query: any) => Observable<{ data: AclRole[], paging: any }>;\n @Input() loadAclRole: (aclRole: AclRole, query) => Observable<AclRole>;\n @Input() aclLevels: AclLevel[] = [];\n\n @ViewChildren(FsListComponent)\n public list = new QueryList<FsListComponent>();\n\n public listConfig: FsListConfig;\n public permissions;\n public indexedAclRoleLevels: { [value: string]: string } = {};\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialog: MatDialog,\n private readonly _cdRef: ChangeDetectorRef,\n ) { }\n\n public ngOnInit(): void {\n\n new Observable(observer => {\n\n if (this.aclLevels.length) {\n observer.next(this.aclLevels);\n observer.complete();\n } else {\n\n this._appAclService.getLevels()\n .subscribe((aclLevels: AclLevel[]) => {\n observer.next(aclLevels);\n observer.complete();\n });\n }\n })\n .subscribe((aclLevels: AclLevel[]) => {\n this.aclLevels = aclLevels;\n this.indexedAclRoleLevels = list(this.aclLevels, 'name', 'value');\n this._loadListConfig();\n });\n }\n\n public openDialog(aclRole: AclRole = { id: null }): void {\n\n const dialogRef = this._dialog.open(FsAclRoleComponent, {\n width: '70%',\n data: {\n aclRole,\n aclLevels: this.aclLevels,\n loadAclRole: this.loadAclRole,\n saveAclRole: this.saveAclRole,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n filter((response) => !!response),\n )\n .subscribe((response) => {\n this.list.forEach((list: FsListComponent) => {\n list.reload();\n });\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n private _loadListConfig() {\n this.listConfig = {\n sort: { value: 'hierarchy' },\n filters: [\n {\n name: 'keyword',\n type: ItemType.Keyword,\n label: 'Search',\n },\n {\n name: 'level',\n label: 'Level',\n type: ItemType.Select,\n values: this.aclLevels,\n hide: this.aclLevels.length <= 1\n },\n {\n name: 'state',\n label: 'Show Deleted',\n type: ItemType.Checkbox,\n unchecked: 'active',\n checked: 'deleted',\n },\n ],\n actions: [\n {\n click: (event) => {\n this.openDialog();\n },\n label: 'Create',\n },\n ],\n rowActions: [\n {\n click: (data) => {\n return this.deleteAclRole(this._appAclService.output(data));\n },\n remove: {\n title: 'Confirm',\n template: 'Are you sure you would like to delete this role?',\n },\n menu: true,\n label: 'Delete',\n show: (row) => row.state !== 'deleted',\n },\n ],\n fetch: (query) => {\n query.permissions = true;\n return this.loadAclRoles(query)\n .pipe(\n map((data) => this._appAclService.input(data))\n );\n },\n };\n }\n\n}\n","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { FsAppAclService } from './../../services/app-acl.service';\n\n@Component({\n selector: 'acl-permission-popover',\n templateUrl: './acl-permission-popover.component.html',\n styleUrls: ['./acl-permission-popover.component.scss']\n})\nexport class FsAclPermissionPopoverComponent implements OnInit {\n\n @Input() permission;\n\n public description;\n\n public constructor(\n private _appAclService: FsAppAclService\n ) { }\n\n public ngOnInit() {\n this._appAclService.getPermissions()\n .subscribe(permissions => {\n this.description = permissions.filter(item => {\n return item.value === this.permission.value;\n }).map(item => {\n return item.description;\n })[0];\n });\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FsAppAclService } from './../../services';\n\n@Component({\n selector: 'fs-acl-role-popover',\n templateUrl: './acl-role-popover.component.html',\n styleUrls: ['./acl-role-popover.component.scss']\n})\nexport class FsAclRolePopoverComponent implements OnInit {\n\n @Input() aclRole;\n @Input() objectName;\n\n public permissions = [];\n\n public constructor(\n private readonly _appAclService: FsAppAclService,\n ) {}\n\n public ngOnInit() {\n const aclRolePermissions = this.aclRole.permissions || [];\n\n this._appAclService.getPermissions()\n .subscribe((response) => {\n this.permissions = response.filter(item => {\n return aclRolePermissions.some(permission => {\n return item.value === permission.value;\n });\n });\n });\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\n\nimport { map } from 'rxjs/operators';\nimport { forkJoin } from 'rxjs';\n\nimport { AclRole, AclEntryData, AclObjectRole, AclObjectEntry, AclEntry } from './../../interfaces';\nimport { FsAppAclService } from './../../services';\n\n\n@Component({\n templateUrl: './acl-entry.component.html',\n styleUrls: ['./acl-entry.component.scss'],\n})\nexport class FsAclEntryComponent implements OnInit {\n\n public aclRoles: AclRole[] = [];\n public aclObjectEntry: AclObjectEntry;\n public aclObjectRole: AclObjectRole;\n public indexedAclRoleLevels = {};\n public titleEdit = 'Edit Roles';\n public titleAdd = 'Assign Roles';\n public required = true;\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialogRef: MatDialogRef<FsAclEntryComponent>,\n private readonly _message: FsMessage,\n @Inject(MAT_DIALOG_DATA) private readonly _data: AclEntryData\n ) {\n this.aclObjectEntry = { ..._data.aclObjectEntry };\n this.required = _data.required ?? true;\n\n if (_data.titleEdit) {\n this.titleEdit = _data.titleEdit;\n }\n\n if (_data.titleAdd) {\n this.titleAdd = _data.titleAdd;\n }\n }\n\n public save = () => {\n return this._data.saveAclObjectEntry(this._appAclService.output(this.aclObjectEntry))\n .subscribe((data) => {\n this._message.success('Saved Changes');\n this.close(data);\n })\n }\n\n public ngOnInit() {\n forkJoin(\n this._data.loadAclRoles({\n level: this.aclObjectEntry.level,\n environmentId: this.aclObjectEntry.environmentId,\n })\n .pipe(\n map((data) => this._appAclService.input(data)),\n ),\n this._appAclService.getIndexedLevels()\n )\n .subscribe(([\n aclRoles,\n levels,\n ]) => {\n\n this.aclRoles = aclRoles;\n this.indexedAclRoleLevels = levels;\n\n this.aclObjectRole = {\n object: this.aclObjectEntry.object,\n aclRoles: this.aclObjectEntry.aclEntries\n .map((aclEntry: AclEntry) => {\n return aclEntry.aclRole;\n })\n };\n });\n }\n\n public aclObjectRoleChange(aclObjectRoles: AclObjectRole[]) {\n\n this.aclObjectEntry.aclEntries = aclObjectRoles.reduce((aclEntries, aclObjectRole) => {\n aclObjectRole.aclRoles.forEach(aclRole => {\n aclEntries.push({\n aclRoleId: aclRole.id,\n aclRole: aclRole,\n objectId: aclObjectRole.object ? aclObjectRole.object.id : null,\n object: aclObjectRole.object || null\n });\n });\n\n return aclEntries;\n }, []);\n }\n\n public close(data = null) {\n this._dialogRef.close(data);\n }\n\n}\n","import { takeUntil, map } from 'rxjs/operators';\nimport { Component, OnInit, ViewChild, OnDestroy, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Subject, Observable } from 'rxjs';\n\nimport { sortBy, groupBy, forOwn } from 'lodash-es';\n\nimport { FsListAction, FsListComponent, FsListConfig } from '@firestitch/list';\nimport { FsAppAclService } from '../../services';\nimport { AclEntry, AclEntryData, AclRole, AclObjectEntry } from '../../interfaces';\nimport { FsAclEntryComponent } from '../acl-entry';\nimport { FsPrompt } from '@firestitch/prompt';\n\n\n@Component({\n selector: 'fs-acl-entries',\n templateUrl: './acl-entries.component.html',\n styleUrls: ['./acl-entries.component.scss']\n})\nexport class FsAclEntriesComponent implements OnInit, OnDestroy {\n\n @Input() public loadAclEntries: (query: any) => Observable<AclEntry[]>;\n @Input() public loadAclRoles: (query: any) => Observable<AclRole[]>;\n @Input() public saveAclObjectEntry: (aclObjectEntry: AclObjectEntry) => Observable<any>;\n @Input() public environmentShow = true;\n @Input() public environmentLabel = 'Environment';\n @Input() public actions: FsListAction[] = [];\n\n @ViewChild(FsListComponent)\n public aclEntriesList: FsListComponent = null;\n\n public aclEntriesConfig: FsListConfig = null;\n public permissions: any[] = [];\n\n private _destroy$ = new Subject();\n\n constructor(\n private readonly _appAclService: FsAppAclService,\n private readonly _dialog: MatDialog,\n private _confirm: FsPrompt,\n ) {}\n\n public ngOnInit(): void {\n this._appAclService.getPermissions()\n .subscribe(response => {\n this.permissions = response;\n });\n\n this.aclEntriesConfig = {\n status: false,\n paging: false,\n actions: this.actions,\n rowActions: [\n {\n label: 'Remove All Roles',\n click: (aclObjectEntry: AclObjectEntry) => {\n this._confirm\n .confirm({\n title: 'Remove All Roles',\n template: 'Are you sure you would like to remove all roles?',\n }).subscribe(() => {\n const data = this._appAclService.output({ ...aclObjectEntry, aclEntries: [] });\n this.saveAclObjectEntry(data)\n .subscribe(() => {\n this.aclEntriesList.reload();\n });\n });\n }\n }\n ],\n fetch: () => {\n return new Observable((observer) => {\n this.loadAclEntries({\n aclRoles: true,\n aclRolePermissions: true,\n objects: true,\n aclRoleState: 'active',\n })\n .pipe(\n map((response) => this._appAclService.input(response)),\n )\n .subscribe((aclEntries: AclEntry[]) => {\n const objects = aclEntries.reduce((items, item) => {\n if (item.object) {\n items[item.object.id] = item.object;\n }\n return items;\n }, {});\n\n const environments = aclEntries.reduce((items, item) => {\n if (item.environment) {\n items[item.environment.id] = item.environment;\n }\n return items;\n }, {});\n\n let aclObjectEntry: AclObjectEntry[] = [];\n const grouped = groupBy(aclEntries, (item) => {\n return [item.aclRole.level, item.environmentId, item.objectId];\n });\n\n forOwn(grouped, (group, key) => {\n key = key.split(',');\n aclObjectEntry.push({\n object: objects[key[2]],\n level: key[0],\n environmentId: key[1] ? parseInt(key[1]) : null,\n environment: environments[key[1]],\n aclEntries: group,\n });\n });\n\n const hasApp = aclObjectEntry.some((item) => {\n return item.aclEntries.some((entry) => {\n return !entry.objectId;\n });\n });\n\n if (!hasApp) {\n aclObjectEntry.unshift({\n object: null, aclEntries: [],\n level: 'app',\n environmentId: null,\n });\n }\n\n aclObjectEntry = sortBy(aclObjectEntry, (item: AclObjectEntry) => {\n return item.object ? item.level : '';\n });\n\n observer.next({ data: aclObjectEntry });\n observer.complete();\n });\n });\n },\n };\n }\n\n public update(aclObjectEntry: AclObjectEntry) {\n\n const data: AclEntryData = {\n aclObjectEntry: aclObjectEntry,\n required: false,\n loadAclRoles: this.loadAclRoles,\n saveAclObjectEntry: this.saveAclObjectEntry\n }\n\n this._dialog.open(FsAclEntryComponent, {\n data: data\n })\n .afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.aclEntriesList.reload();\n });\n }\n\n public ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public reload(): void {\n this.aclEntriesList.reload();\n }\n\n}\n","import { ControlContainer, NgForm } from '@angular/forms';\nimport { Component, Input, EventEmitter, Output } from '@angular/core';\n\nimport { AclObjectRole, AclRole } from '../../interfaces';\n\n\n@Component({\n selector: 'fs-acl-object-roles',\n templateUrl: './acl-object-roles.component.html',\n styleUrls: ['./acl-object-roles.component.scss'],\n viewProviders: [ { provide: ControlContainer, useExisting: NgForm } ]\n})\nexport class FsAclObjectRolesComponent {\n\n @Input() aclRoles: AclRole[] = [];\n @Input() required = false;\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() aclObjectRoles: AclObjectRole[] = [];\n @Input() rolesLabel = 'Roles';\n @Input() levelLabel = '';\n @Output() change = new EventEmitter<AclObjectRole[]>();\n\n public compareAclRole = (o1: any, o2: any) => {\n return o1 && o2 && o1.id === o2.id;\n }\n\n public changed() {\n this.change.emit(this.aclObjectRoles);\n }\n}\n","import { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { AppAclConfig } from './interfaces/app-acl-config';\nimport { FS_APP_ACL_CONFIG } from './injectors/app-acl-config.injector';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsPopoverModule } from '@firestitch/popover';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsBadgeModule } from '@firestitch/badge';\nimport { FsCheckboxGroupModule } from '@firestitch/checkboxgroup';\n\nimport { FsAclRolesComponent } from './components/acl-roles/acl-roles.component';\nimport { FsAclPermissionPopoverComponent } from './components/acl-permission-popover';\nimport { FsAclRolePopoverComponent } from './components/acl-role-popover/acl-role-popover.component';\nimport { FsAclEntriesComponent } from './components/acl-entries/acl-entries.component';\nimport { FsAclRoleComponent } from './components/acl-role/acl-role.component';\nimport { FsAclObjectRolesComponent } from './components/acl-object-roles/acl-object-roles.component';\nimport { FsAclEntryComponent } from './components/acl-entry/acl-entry.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatDialogModule,\n MatFormFieldModule,\n MatCheckboxModule,\n MatSelectModule,\n MatButtonModule,\n MatRadioModule,\n MatInputModule,\n FlexLayoutModule,\n\n FsListModule,\n FsPopoverModule,\n FsDialogModule,\n FsFormModule,\n FsLabelModule,\n FsRadioGroupModule,\n FsBadgeModule,\n FsCheckboxGroupModule,\n ],\n declarations: [\n FsAclRolesComponent,\n FsAclPermissionPopoverComponent,\n FsAclRoleComponent,\n FsAclEntriesComponent,\n FsAclRolePopoverComponent,\n FsAclObjectRolesComponent,\n FsAclEntryComponent,\n ],\n exports: [\n FsAclRolesComponent,\n FsAclPermissionPopoverComponent,\n FsAclRoleComponent,\n FsAclEntriesComponent,\n FsAclRolePopoverComponent,\n FsAclObjectRolesComponent,\n FsAclEntryComponent,\n ],\n entryComponents: [\n FsAclRoleComponent\n ]\n})\nexport class FsAppAclModule {\n static forRoot(): ModuleWithProviders<FsAppAclModule> {\n return {\n ngModule: FsAppAclModule,\n // providers: [\n // { provide: FS_APP_ACL_CONFIG, useValue: config || {} }\n // ]\n };\n }\n}\n","// start:ng42.barrel\nexport * from './app-acl-config.injector';\n// end:ng42.barrel\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {FsAclEntryComponent as ɵf} from './app/components/acl-entry/acl-entry.component';\nexport {FsAclObjectRolesComponent as ɵe} from './app/components/acl-object-roles/acl-object-roles.component';\nexport {FsAclPermissionPopoverComponent as ɵb} from './app/components/acl-permission-popover';\nexport {FsAclRolePopoverComponent as ɵd} from './app/components/acl-role-popover/acl-role-popover.component';\nexport {FsAclRoleComponent as ɵc} from './app/components/acl-role/acl-role.component';\nexport {AclEntryData as ɵg} from './app/interfaces';\nexport {FsAppAclService as ɵa} from './app/services';"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"exports":[{"from":"./app/app-acl-config.injector"},{"from":"./app/acl-role"},{"from":"./app/app-acl-config"},{"from":"./app/acl-permission"},{"from":"./app/acl-level"},{"from":"./app/acl-entry"},{"from":"./app/acl-entry-data"},{"from":"./app/acl-object-role"},{"from":"./app/acl-object"},{"from":"./app/acl-object-entry"}],"metadata":{"FsAppAclModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":32,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":34,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":35,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":37,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":38,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":39,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":40,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":41,"character":4},{"__symbolic":"reference","module":"@angular/material/radio","name":"MatRadioModule","line":42,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":43,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":44,"character":4},{"__symbolic":"reference","module":"@firestitch/list","name":"FsListModule","line":46,"character":4},{"__symbolic":"reference","module":"@firestitch/popover","name":"FsPopoverModule","line":47,"character":4},{"__symbolic":"reference","module":"@firestitch/dialog","name":"FsDialogModule","line":48,"character":4},{"__symbolic":"reference","module":"@firestitch/form","name":"FsFormModule","line":49,"character":4},{"__symbolic":"reference","module":"@firestitch/label","name":"FsLabelModule","line":50,"character":4},{"__symbolic":"reference","module":"@firestitch/radiogroup","name":"FsRadioGroupModule","line":51,"character":4},{"__symbolic":"reference","module":"@firestitch/badge","name":"FsBadgeModule","line":52,"character":4},{"__symbolic":"reference","module":"@firestitch/checkboxgroup","name":"FsCheckboxGroupModule","line":53,"character":4}],"declarations":[{"__symbolic":"reference","name":"FsAclRolesComponent"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"FsAclEntriesComponent"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"}],"exports":[{"__symbolic":"reference","name":"FsAclRolesComponent"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"FsAclEntriesComponent"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"}],"entryComponents":[{"__symbolic":"reference","name":"ɵc"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"FsAppAclModule"}}}}},"FsAclEntriesComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"fs-acl-entries","template":"\n<fs-list [config]=\"aclEntriesConfig\">\n <fs-list-column>\n <ng-template fs-list-header>Context</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div\n *ngIf=\"row.object; else elseObject\"\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n fxLayoutGap=\"10px\">\n <fs-badge *ngIf=\"row.object.imageUrl\" shape=\"circle\" image=\"{{ row.object.imageUrl }}\"></fs-badge>\n <span>\n <div><small>{{ row.object.className }}</small></div>\n <a (click)=\"update(row)\">{{ row.object.name }}</a>\n </span>\n </div>\n\n <ng-template #elseObject>\n <a (click)=\"update(row)\">App</a>\n </ng-template>\n </ng-template>\n </fs-list-column>\n\n <fs-list-column [show]=\"environmentShow\">\n <ng-template fs-list-header>{{environmentLabel}}</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n {{row.environment?.name}}\n </ng-template>\n </fs-list-column>\n\n <fs-list-column>\n <ng-template fs-list-header>Roles</ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <div div *ngFor=\"let aclEntry of row.aclEntries\">\n <ng-container [ngSwitch]=\"row.level\">\n <ng-container *ngSwitchCase=\"'app'\">\n <fs-acl-role-popover [aclRole]=\"aclEntry.aclRole\" objectName=\"App\">{{aclEntry.aclRole.name}}</fs-acl-role-popover>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container *ngIf=\"row.object\">\n <fs-acl-role-popover [aclRole]=\"aclEntry.aclRole\">{{aclEntry.aclRole.name}}</fs-acl-role-popover>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n","styles":[""]}]}],"members":{"loadAclEntries":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"loadAclRoles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"saveAclObjectEntry":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"environmentShow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"environmentLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"actions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"aclEntriesList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":29,"character":3},"arguments":[{"__symbolic":"reference","module":"@firestitch/list","name":"FsListComponent","line":29,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":39,"character":30},{"__symbolic":"reference","module":"@firestitch/prompt","name":"FsPrompt","line":40,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}]}},"FsAclRolesComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"fs-acl-roles","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":19,"character":19},"member":"OnPush"},"template":"<fs-list [config]=\"listConfig\" *ngIf=\"listConfig\">\n <fs-list-column title=\"Name\" name=\"name\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <a (click)=\"openDialog(row)\">{{ row.name }}</a>\n </ng-template>\n </fs-list-column>\n <fs-list-column name=\"hierarchy\" title=\"Level\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ indexedAclRoleLevels[row.level] }}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Permissions\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"permissions\">\n <ng-container *ngFor=\"let permission of row.permissions\">\n <span *ngIf=\"permission.access\" class=\"permission\">\n <acl-permission-popover [permission]=\"permission\">{{permission.name}}</acl-permission-popover>\n </span>\n </ng-container>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>\n","styles":[".permissions .permission+.permission::before{content:\", \"}"]}]}],"members":{"deleteAclRole":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"saveAclRole":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"loadAclRoles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"loadAclRole":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"aclLevels":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":29,"character":3},"arguments":[{"__symbolic":"reference","module":"@firestitch/list","name":"FsListComponent","line":29,"character":16}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":40,"character":30},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":41,"character":29}]}],"ngOnInit":[{"__symbolic":"method"}],"openDialog":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_loadListConfig":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":26,"character":19},"member":"OnPush"},"template":"<form fsForm [submit]=\"save\">\n <fs-dialog>\n <ng-container *ngIf=\"aclRole\">\n <div mat-dialog-title>{{ aclRole.id ? 'Edit' : 'Create' }} Role</div>\n <mat-dialog-content>\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap=\"40px\" fxLayoutGap.lt-md=\"0\">\n <div fxLayout=\"column\" fxFlex fxFlex.lt-md=\"0\">\n <mat-form-field>\n <input matInput placeholder=\"Name\" [(ngModel)]=\"aclRole.name\" name=\"name\" fsFormRequired>\n </mat-form-field>\n\n <fs-label-field *ngIf=\"aclRole.id || aclLevels.length === 1; else levels\">\n <fs-label>Level</fs-label>\n {{indexedAclLevels[aclRole.level]}}\n </fs-label-field>\n\n <ng-template #levels>\n <div class=\"level\">\n <fs-radio-group\n [(ngModel)]=\"aclRole.level\"\n (ngModelChange)=\"levelChange()\"\n fsFormRequired\n label=\"Level\"\n orientation=\"vertical\"\n name=\"level\">\n <mat-radio-button\n *ngFor=\"let item of aclLevels\"\n [value]=\"item.value\"\n [disabled]=\"!!aclRole.protected\">\n {{ item.name }}\n </mat-radio-button>\n </fs-radio-group>\n </div>\n </ng-template>\n\n <fs-label-field *ngIf=\"levelPermissions.length\">\n <fs-label>All Permissions</fs-label>\n <mat-checkbox\n [(ngModel)]=\"aclRole.allPermissions\"\n (ngModelChange)=\"allPermissionsChange($event)\"\n [disabled]=\"!!aclRole.protected\"\n name=\"allPermissions\">\n </mat-checkbox>\n </fs-label-field>\n\n <div fxLayout=\"column\" *ngFor=\"let config of levelAclRoleConfigs\">\n <fs-label-field *ngIf=\"config.interface === 'checkbox'\">\n <fs-label>{{config.name}}</fs-label>\n <mat-checkbox\n [(ngModel)]=\"config.data\"\n [name]=\"config.name\">\n </mat-checkbox>\n <fs-label-message>\n <mat-hint>{{config.description}}</mat-hint>\n </fs-label-message>\n </fs-label-field>\n\n <mat-form-field *ngIf=\"config.interface === 'select'\">\n <mat-select\n [(ngModel)]=\"config.data\"\n [name]=\"config.value\"\n [required]=\"config.required\"\n [placeholder]=\"config.name\">\n <mat-option\n *ngFor=\"let item of config.values\"\n [value]=\"item.value\">\n {{ item.name }}\n </mat-option>\n </mat-select>\n <mat-hint>{{config.description}}</mat-hint>\n </mat-form-field>\n </div>\n </div>\n\n <div fxLayout=\"column\" fxFlex=\"65\" fxFlex.lt-md=\"0\" *ngIf=\"aclRole.level\" [hidden]=\"!levelPermissions.length\" class=\"permissions\">\n\n <fs-list [config]=\"listConfig\">\n <fs-list-column title=\"Permissions\">\n <ng-template colspan=\"2\" fs-list-group-cell let-row=\"row\" class=\"permission-group\">\n <small><b>{{row.category || 'General'}}</b></small>\n </ng-template>\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"permission\">{{ row.name }}</div>\n <div class=\"description small\">{{ row.description }}</div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Access\" width=\"1%\" class=\"access\">\n <ng-template fs-list-cell let-row=\"permission\" let-permission=\"row\">\n <span *ngIf=\"aclRole.allPermissions; else elseAll\">\n {{ indexedAccesses[aclRole.permissions[permission.value]] }}\n </span>\n <ng-template #elseAll>\n <mat-form-field>\n <mat-select\n [(ngModel)]=\"aclRole.permissions[permission.value]\"\n [disabled]=\"!!aclRole.protected\"\n fsFormRequired\n name=\"access-{{ permission.value }}\">\n <ng-container *ngFor=\"let access of AclRoleAccesses\">\n <mat-option\n *ngIf=\"access.value === 0 || permission.accesses.indexOf(access.value) !== -1\"\n [value]=\"access.value\">\n {{ access.name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </ng-template>\n </ng-template>\n </fs-list-column>\n </fs-list>\n </div>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"submit\" color=\"primary\">{{ aclRole.id ? 'Save' : 'Create' }}</button>\n <button mat-button [mat-dialog-close]=\"null\" type=\"button\">Cancel</button>\n </mat-dialog-actions>\n </ng-container>\n </fs-dialog>\n</form>\n","styles":[":host .permissions ::ng-deep .fs-list-row-group{background-color:#f6f6f6}:host .permissions ::ng-deep fs-list .access{white-space:nowrap}:host .permissions ::ng-deep .mat-form-field{width:100px}:host .permissions ::ng-deep .mat-form-field .mat-form-field-wrapper{padding-bottom:0}:host .permissions ::ng-deep .mat-form-field .mat-form-field-infix{border-top:0}:host .permissions ::ng-deep .mat-form-field .mat-form-field-underline{bottom:0}:host ::ng-deep fs-radio-group{width:100%}:host ::ng-deep fs-label-field{width:100%}:host .level{width:100%}"]}]}],"members":{"list":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":30,"character":3},"arguments":[{"__symbolic":"reference","module":"@firestitch/list","name":"FsListComponent","line":30,"character":13}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":52,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵc"}]},{"__symbolic":"reference","module":"@firestitch/message","name":"FsMessage","line":51,"character":31},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":53,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"levelChange":[{"__symbolic":"method"}],"getRole":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"allPermissionsChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_updatePermissions":[{"__symbolic":"method"}],"_updateAclRoleConfigs":[{"__symbolic":"method"}],"_applyMaxPermissionAccess":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"fs-acl-role-popover","template":"\n<fs-popover [template]=\"popover\" maxWidth=\"400\">\n <ng-content></ng-content>\n</fs-popover>\n\n<ng-template #popover>\n <div class=\"name small\">{{aclRole.name}}<span *ngIf=\"objectName\">: {{objectName}}</span></div>\n\n <ng-container *ngIf=\"permissions.length; else nonePermission\">\n <div *ngFor=\"let permission of permissions\" class=\"permission\">\n <div>{{permission.name}}</div>\n <div class=\"small\">{{permission.description}}</div>\n </div>\n </ng-container>\n\n <ng-template #nonePermission>\n None\n </ng-template>\n</ng-template>\n","styles":[".name{padding-bottom:10px}.permission+.permission{padding-top:5px}:host{cursor:pointer}"]}]}],"members":{"aclRole":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"objectName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"fs-acl-object-roles","viewProviders":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"ControlContainer","line":10,"character":30},"useExisting":{"__symbolic":"reference","module":"@angular/forms","name":"NgForm","line":10,"character":61}}],"template":"<ng-container *ngIf=\"!multiple\">\n <ng-container *ngFor=\"let aclObjectRole of aclObjectRoles\">\n <fs-checkbox-group\n [(ngModel)]=\"aclObjectRole.aclRoles\"\n (ngModelChange)=\"changed()\"\n name=\"roles\"\n [compareWith]=\"compareAclRole\"\n [disabled]=\"disabled\"\n [label]=\"rolesLabel\"\n [fsFormRequired]=\"required\"\n orientation=\"vertical\">\n <mat-checkbox [disabled]=\"disabled\" *ngFor=\"let aclRole of aclRoles\" [value]=\"aclRole\">\n {{ aclRole.name }}\n </mat-checkbox>\n </fs-checkbox-group>\n </ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"multiple\">\n <table>\n <tr>\n <td>\n <small>{{levelLabel}}</small>\n </td>\n <td>\n <small>{{rolesLabel}}</small>\n </td>\n </tr>\n <tr *ngFor=\"let aclObjectRole of aclObjectRoles\">\n <td>{{aclObjectRole.object.name}}</td>\n <td>\n <mat-form-field class=\"form-field-padless\">\n <mat-select\n [(ngModel)]=\"aclObjectRole.aclRoles\"\n multiple=\"true\"\n [disabled]=\"disabled\"\n [compareWith]=\"compareAclRole\"\n (ngModelChange)=\"changed()\"\n name=\"aclRole_{{ aclObjectRole.object.id }}\">\n <mat-option *ngFor=\"let aclRole of aclRoles\" [value]=\"aclRole\">\n {{ aclRole.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </td>\n </tr>\n </table>\n</ng-container>\n","styles":["table tr td:first-child{padding-right:15px}"]}]}],"members":{"aclRoles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"aclObjectRoles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"rolesLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"levelLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"change":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":21,"character":3}}]}],"changed":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"template":"<form fsForm [submit]=\"save\">\n <fs-dialog>\n <div mat-dialog-title>{{ titleEdit? titleEdit : titleAdd }}</div>\n <mat-dialog-content>\n <div *ngIf=\"aclObjectRole\">\n <fs-label-field *ngIf=\"aclObjectEntry.object\">\n <fs-label>{{indexedAclRoleLevels[aclObjectEntry.level]}}</fs-label>\n {{aclObjectEntry.object.name}}\n </fs-label-field>\n\n <fs-acl-object-roles\n [aclRoles]=\"aclRoles\"\n [aclObjectRoles]=\"[aclObjectRole]\"\n [required]=\"required\"\n (change)=\"aclObjectRoleChange($event)\">\n </fs-acl-object-roles>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"submit\" color=\"primary\">Save</button>\n <button mat-button mat-dialog-close type=\"button\">Cancel</button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","styles":["::ng-deep .account-roles-autocomplete-panel .mat-option{line-height:normal}::ng-deep .account-roles-autocomplete-panel .mat-option .mat-option-text{display:flex;flex-direction:row;align-items:center}::ng-deep .account-roles-autocomplete-panel .mat-option .mat-option-text fs-badge{margin-right:5px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":30,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵf"}]},{"__symbolic":"reference","module":"@firestitch/message","name":"FsMessage","line":29,"character":31},{"__symbolic":"reference","name":"ɵg"}]}],"ngOnInit":[{"__symbolic":"method"}],"aclObjectRoleChange":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}]}}},"origins":{"FsAppAclModule":"./app/fs-app-acl.module","FsAclEntriesComponent":"./app/components/acl-entries/acl-entries.component","FsAclRolesComponent":"./app/components/acl-roles/acl-roles.component","ɵa":"./app/services","ɵb":"./app/components/acl-permission-popover","ɵc":"./app/components/acl-role/acl-role.component","ɵd":"./app/components/acl-role-popover/acl-role-popover.component","ɵe":"./app/components/acl-object-roles/acl-object-roles.component","ɵf":"./app/components/acl-entry/acl-entry.component","ɵg":"./app/interfaces"},"importAs":"@firestitch/app-acl"}
|