aril 1.1.92 → 1.1.94
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/boot/config/apps/src/apps.service.d.ts +5 -1
- package/boot/config/apps/src/interfaces.d.ts +2 -1
- package/boot/config/apps/src/route-permissions.d.ts +3 -0
- package/esm2022/boot/config/apps/src/apps.service.mjs +37 -4
- package/esm2022/boot/config/apps/src/auth.guard.mjs +9 -1
- package/esm2022/boot/config/apps/src/interfaces.mjs +1 -1
- package/esm2022/boot/config/apps/src/route-permissions.mjs +21 -0
- package/esm2022/ui/table/src/table.component.mjs +3 -3
- package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +2 -2
- package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +7 -3
- package/esm2022/util/custom_pages/index.mjs +2 -1
- package/esm2022/util/custom_pages/src/forbidden.component.mjs +71 -0
- package/fesm2022/aril-boot-config-apps.mjs +63 -4
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-ui-business-enumPicker.mjs +6 -2
- package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +2 -2
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-translate-input.mjs +1 -1
- package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
- package/fesm2022/aril-util-custom_pages.mjs +66 -1
- package/fesm2022/aril-util-custom_pages.mjs.map +1 -1
- package/package.json +181 -181
- package/ui-business/enumPicker/src/enum-picker.component.d.ts +2 -1
- package/util/custom_pages/index.d.ts +1 -0
- package/util/custom_pages/src/forbidden.component.d.ts +5 -0
|
@@ -3,11 +3,15 @@ import { Routes } from '@angular/router';
|
|
|
3
3
|
import { AppsDTO, ExtensionConfig, PluginConfig, PluginMenuItem } from './interfaces';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class MicroAppService {
|
|
6
|
-
private router;
|
|
6
|
+
private readonly router;
|
|
7
|
+
private readonly keycloak;
|
|
8
|
+
private userRoles;
|
|
7
9
|
init(httpClient: HttpClient, hostAPI: string): import("rxjs").Observable<AppsDTO>;
|
|
8
10
|
buildRoutes(options: PluginConfig[]): Routes;
|
|
9
11
|
setMenuItems(items: PluginMenuItem[]): void;
|
|
10
12
|
setPlugins(items: Record<string, ExtensionConfig>): void;
|
|
13
|
+
private filterMenuItemsByRole;
|
|
14
|
+
private hasPermission;
|
|
11
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<MicroAppService, never>;
|
|
12
16
|
static ɵprov: i0.ɵɵInjectableDeclaration<MicroAppService>;
|
|
13
17
|
}
|
|
@@ -33,6 +33,7 @@ export type PluginConfig = WebComponentWrapperOptions & {
|
|
|
33
33
|
id?: string;
|
|
34
34
|
remoteName: string;
|
|
35
35
|
shadowDomPassive: boolean;
|
|
36
|
+
permittedRoles?: string[];
|
|
36
37
|
};
|
|
37
38
|
export interface MenuItemAction {
|
|
38
39
|
method?: 'GET' | 'POST';
|
|
@@ -48,7 +49,7 @@ export interface PluginMenuItem {
|
|
|
48
49
|
[languageCode: string]: string;
|
|
49
50
|
};
|
|
50
51
|
items?: PluginMenuItem[];
|
|
51
|
-
|
|
52
|
+
permittedRoles?: string[];
|
|
52
53
|
action?: MenuItemAction;
|
|
53
54
|
separator?: boolean;
|
|
54
55
|
root?: boolean;
|
|
@@ -1,22 +1,33 @@
|
|
|
1
1
|
import { Injectable, inject, isDevMode } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { WebComponentWrapper, startsWith } from '@angular-architects/module-federation-tools';
|
|
4
|
+
import { KeycloakService } from 'keycloak-angular';
|
|
4
5
|
import { catchError, of, tap } from 'rxjs';
|
|
5
|
-
import { NotFoundComponent } from 'aril/util/custom_pages';
|
|
6
|
+
import { ForbiddenComponent, NotFoundComponent } from 'aril/util/custom_pages';
|
|
6
7
|
import { AuthGuard } from './auth.guard';
|
|
8
|
+
import { setRoutePermissions } from './route-permissions';
|
|
7
9
|
import { ShadowDOMWrapperComponent } from './showdowDOMWrapper';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
export class MicroAppService {
|
|
10
12
|
constructor() {
|
|
11
13
|
this.router = inject(Router);
|
|
14
|
+
this.keycloak = inject(KeycloakService);
|
|
15
|
+
this.userRoles = [];
|
|
12
16
|
}
|
|
13
17
|
init(httpClient, hostAPI) {
|
|
18
|
+
this.userRoles = this.keycloak.getUserRoles();
|
|
14
19
|
return httpClient
|
|
15
20
|
.get(isDevMode() ? './assets/local-configs/app.local.json' : hostAPI + '/ui-sidebar-configs')
|
|
16
21
|
.pipe(tap((apps) => {
|
|
22
|
+
setRoutePermissions(apps.menuItems);
|
|
17
23
|
const routes = this.buildRoutes([...apps.modules, ...apps.plugins]);
|
|
18
|
-
this.router.resetConfig([
|
|
19
|
-
|
|
24
|
+
this.router.resetConfig([
|
|
25
|
+
...this.router.config,
|
|
26
|
+
...routes,
|
|
27
|
+
{ path: 'forbidden', component: ForbiddenComponent },
|
|
28
|
+
{ path: '**', component: NotFoundComponent }
|
|
29
|
+
]);
|
|
30
|
+
this.setMenuItems(this.filterMenuItemsByRole(apps.menuItems));
|
|
20
31
|
this.setPlugins(apps.extensions);
|
|
21
32
|
}), catchError((err) => {
|
|
22
33
|
console.log('Error Micro Apps Loading', err);
|
|
@@ -43,6 +54,28 @@ export class MicroAppService {
|
|
|
43
54
|
setPlugins(items) {
|
|
44
55
|
globalThis.pluginJson = items || {};
|
|
45
56
|
}
|
|
57
|
+
filterMenuItemsByRole(items) {
|
|
58
|
+
return items.reduce((acc, item) => {
|
|
59
|
+
if (!this.hasPermission(item.permittedRoles)) {
|
|
60
|
+
return acc;
|
|
61
|
+
}
|
|
62
|
+
const filteredItem = { ...item };
|
|
63
|
+
if (filteredItem.items?.length) {
|
|
64
|
+
filteredItem.items = this.filterMenuItemsByRole(filteredItem.items);
|
|
65
|
+
if (!filteredItem.items.length && !filteredItem.routerLink) {
|
|
66
|
+
return acc;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
acc.push(filteredItem);
|
|
70
|
+
return acc;
|
|
71
|
+
}, []);
|
|
72
|
+
}
|
|
73
|
+
hasPermission(permittedRoles) {
|
|
74
|
+
if (!permittedRoles?.length) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return permittedRoles.some((role) => this.userRoles.includes(role));
|
|
78
|
+
}
|
|
46
79
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
80
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, providedIn: 'root' }); }
|
|
48
81
|
}
|
|
@@ -50,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
50
83
|
type: Injectable,
|
|
51
84
|
args: [{ providedIn: 'root' }]
|
|
52
85
|
}] });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ04sbUJBQW1CLEVBRW5CLFVBQVUsRUFDVixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFa0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVDLGNBQVMsR0FBYSxFQUFFLENBQUM7S0E2RWpDO0lBM0VBLElBQUksQ0FBQyxVQUFzQixFQUFFLE9BQWU7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlDLE9BQU8sVUFBVTthQUNmLEdBQUcsQ0FBVSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENB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QUFVLEVBQUUsQ0FBQztvQkFDNUQsT0FBTyxHQUFHLENBQUM7Z0JBQ1osQ0FBQztZQUNGLENBQUM7WUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUF5QjtRQUM5QyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzhHQWhGVyxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXIsXHJcblx0V2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0c3RhcnRzV2l0aFxyXG59IGZyb20gJ0Bhbmd1bGFyLWFyY2hpdGVjdHMvbW9kdWxlLWZlZGVyYXRpb24tdG9vbHMnO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRm9yYmlkZGVuQ29tcG9uZW50LCBOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdXRpbC9jdXN0b21fcGFnZXMnO1xyXG5cclxuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9hdXRoLmd1YXJkJztcclxuaW1wb3J0IHsgQXBwc0RUTywgRXh0ZW5zaW9uQ29uZmlnLCBQbHVnaW5Db25maWcsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgc2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93ZG93RE9NV3JhcHBlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWljcm9BcHBTZXJ2aWNlIHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWsgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHJcblx0cHJpdmF0ZSB1c2VyUm9sZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdGluaXQoaHR0cENsaWVudDogSHR0cENsaWVudCwgaG9zdEFQSTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnVzZXJSb2xlcyA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlclJvbGVzKCk7XHJcblx0XHRyZXR1cm4gaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PEFwcHNEVE8+KGlzRGV2TW9kZSgpID8gJy4vYXNzZXRzL2xvY2FsLWNvbmZpZ3MvYXBwLmxvY2FsLmpzb24nIDogaG9zdEFQSSArICcvdWktc2lkZWJhci1jb25maWdzJylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKChhcHBzKSA9PiB7XHJcblx0XHRcdFx0XHRzZXRSb3V0ZVBlcm1pc3Npb25zKGFwcHMubWVudUl0ZW1zKTtcclxuXHRcdFx0XHRcdGNvbnN0IHJvdXRlcyA9IHRoaXMuYnVpbGRSb3V0ZXMoWy4uLmFwcHMubW9kdWxlcywgLi4uYXBwcy5wbHVnaW5zXSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5yb3V0ZXIucmVzZXRDb25maWcoW1xyXG5cdFx0XHRcdFx0XHQuLi50aGlzLnJvdXRlci5jb25maWcsXHJcblx0XHRcdFx0XHRcdC4uLnJvdXRlcyxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnZm9yYmlkZGVuJywgY29tcG9uZW50OiBGb3JiaWRkZW5Db21wb25lbnQgfSxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1cclxuXHRcdFx0XHRcdF0pO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRNZW51SXRlbXModGhpcy5maWx0ZXJNZW51SXRlbXNCeVJvbGUoYXBwcy5tZW51SXRlbXMpKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0UGx1Z2lucyhhcHBzLmV4dGVuc2lvbnMpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIE1pY3JvIEFwcHMgTG9hZGluZycsIGVycik7XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0aW9ucykgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1hdGNoZXI6IHN0YXJ0c1dpdGgob3B0aW9ucy5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdGlvbnMuc2hhZG93RG9tUGFzc2l2ZSA/IFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMgYXMgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0XHRcdFx0Y2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRdXHJcblx0XHRcdH07XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcm91dGVzO1xyXG5cdH1cclxuXHJcblx0c2V0TWVudUl0ZW1zKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5ob3N0TWVudUl0ZW1zLnNldChbXHJcblx0XHRcdHsgcm9vdDogdHJ1ZSwgbGFiZWw6IHsgdHI6ICdBbmFzYXlmYScsIGVuOiAnSG9tZScgfSwgaWNvbjogJ3BpIHBpLWZ3IHBpLWhvbWUnLCByb3V0ZXJMaW5rOiAnLycgfSxcclxuXHRcdFx0Li4uaXRlbXNcclxuXHRcdF0pO1xyXG5cdH1cclxuXHRzZXRQbHVnaW5zKGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+KTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5wbHVnaW5Kc29uID0gaXRlbXMgfHwge307XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck1lbnVJdGVtc0J5Um9sZShpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zLnJlZHVjZTxQbHVnaW5NZW51SXRlbVtdPigoYWNjLCBpdGVtKSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKGl0ZW0ucGVybWl0dGVkUm9sZXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgZmlsdGVyZWRJdGVtID0geyAuLi5pdGVtIH07XHJcblxyXG5cdFx0XHRpZiAoZmlsdGVyZWRJdGVtLml0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRmaWx0ZXJlZEl0ZW0uaXRlbXMgPSB0aGlzLmZpbHRlck1lbnVJdGVtc0J5Um9sZShmaWx0ZXJlZEl0ZW0uaXRlbXMpO1xyXG5cclxuXHRcdFx0XHRpZiAoIWZpbHRlcmVkSXRlbS5pdGVtcy5sZW5ndGggJiYgIWZpbHRlcmVkSXRlbS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0YWNjLnB1c2goZmlsdGVyZWRJdGVtKTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIFtdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaGFzUGVybWlzc2lvbihwZXJtaXR0ZWRSb2xlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIXBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcGVybWl0dGVkUm9sZXMuc29tZSgocm9sZSkgPT4gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Injectable, inject } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';
|
|
4
|
+
import { getRoutePermissions } from './route-permissions';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export class AuthGuard extends KeycloakAuthGuard {
|
|
6
7
|
constructor() {
|
|
@@ -10,6 +11,13 @@ export class AuthGuard extends KeycloakAuthGuard {
|
|
|
10
11
|
if (!this.authenticated) {
|
|
11
12
|
await this.keycloakAngular.login({ redirectUri: window.location.href });
|
|
12
13
|
}
|
|
14
|
+
const permittedRoles = getRoutePermissions(state.url);
|
|
15
|
+
if (permittedRoles?.length) {
|
|
16
|
+
const hasRole = permittedRoles.some((role) => this.roles.includes(role));
|
|
17
|
+
if (!hasRole) {
|
|
18
|
+
return this.router.createUrlTree(['/forbidden']);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
13
21
|
return this.authenticated;
|
|
14
22
|
}
|
|
15
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -19,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
19
27
|
type: Injectable,
|
|
20
28
|
args: [{ providedIn: 'root' }]
|
|
21
29
|
}], ctorParameters: () => [] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRELElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7OEdBdkJXLFNBQVM7a0hBQVQsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtBdXRoR3VhcmQsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgZ2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBleHRlbmRzIEtleWNsb2FrQXV0aEd1YXJkIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKGluamVjdChSb3V0ZXIpLCBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKSk7XHJcblx0fVxyXG5cclxuXHRvdmVycmlkZSBhc3luYyBpc0FjY2Vzc0FsbG93ZWQoXHJcblx0XHRyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuXHRcdHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcblx0KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xyXG5cdFx0aWYgKCF0aGlzLmF1dGhlbnRpY2F0ZWQpIHtcclxuXHRcdFx0YXdhaXQgdGhpcy5rZXljbG9ha0FuZ3VsYXIubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGVybWl0dGVkUm9sZXMgPSBnZXRSb3V0ZVBlcm1pc3Npb25zKHN0YXRlLnVybCk7XHJcblxyXG5cdFx0aWYgKHBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaGFzUm9sZSA9IHBlcm1pdHRlZFJvbGVzLnNvbWUoKHJvbGUpID0+IHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdFx0XHRpZiAoIWhhc1JvbGUpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9mb3JiaWRkZW4nXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -18,4 +18,4 @@ export var Apps;
|
|
|
18
18
|
Apps["LGC"] = "lgc";
|
|
19
19
|
Apps["DMS"] = "dms";
|
|
20
20
|
})(Apps || (Apps = {}));
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQU4sSUFBWSxJQWtCWDtBQWxCRCxXQUFZLElBQUk7SUFDZixxQkFBYSxDQUFBO0lBQ2IsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQixxQkFBYSxDQUFBO0lBQ2IsaUJBQVMsQ0FBQTtJQUNULHFCQUFhLENBQUE7SUFDYixtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLHVDQUErQixDQUFBO0lBQy9CLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0FBQ1osQ0FBQyxFQWxCVyxJQUFJLEtBQUosSUFBSSxRQWtCZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtQ29tbWFuZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuXHJcbmV4cG9ydCBlbnVtIEFwcHMge1xyXG5cdFRIT1IgPSAndGhvcicsXHJcblx0Q1JNID0gJ2NybScsXHJcblx0V0RNID0gJ3dkbScsXHJcblx0QklMTElORyA9ICdiaWxsaW5nJyxcclxuXHRQQVlNRU5UID0gJ3BheW1lbnQnLFxyXG5cdFlFQVAgPSAneWVhcCcsXHJcblx0TVcgPSAnbXcnLFxyXG5cdExFTkEgPSAnbGVuYScsXHJcblx0SEVTID0gJ2hlcycsXHJcblx0Q1RTID0gJ2N0cycsXHJcblx0U0lTID0gJ3NpcycsXHJcblx0TU5HID0gJ21uZycsXHJcblx0TURNID0gJ21kbScsXHJcblx0U1RBVEVfTUFDSElORSA9ICdzdGF0ZS1tYWNoaW5lJyxcclxuXHRSRVBPUlQgPSAncmVwb3J0JyxcclxuXHRMR0MgPSAnbGdjJyxcclxuXHRETVMgPSAnZG1zJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHNEVE8ge1xyXG5cdHZlcnNpb246IG51bWJlcjtcclxuXHRtb2R1bGVzOiBQbHVnaW5Db25maWdbXTtcclxuXHRwbHVnaW5zOiBQbHVnaW5Db25maWdbXTtcclxuXHRleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+O1xyXG5cdG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Db25maWcge1xyXG5cdG9wdGlvbnM6IFBsdWdpbkNvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnID0gV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgJiB7XHJcblx0aWQ/
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQU4sSUFBWSxJQWtCWDtBQWxCRCxXQUFZLElBQUk7SUFDZixxQkFBYSxDQUFBO0lBQ2IsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQixxQkFBYSxDQUFBO0lBQ2IsaUJBQVMsQ0FBQTtJQUNULHFCQUFhLENBQUE7SUFDYixtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLHVDQUErQixDQUFBO0lBQy9CLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0FBQ1osQ0FBQyxFQWxCVyxJQUFJLEtBQUosSUFBSSxRQWtCZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtQ29tbWFuZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuXHJcbmV4cG9ydCBlbnVtIEFwcHMge1xyXG5cdFRIT1IgPSAndGhvcicsXHJcblx0Q1JNID0gJ2NybScsXHJcblx0V0RNID0gJ3dkbScsXHJcblx0QklMTElORyA9ICdiaWxsaW5nJyxcclxuXHRQQVlNRU5UID0gJ3BheW1lbnQnLFxyXG5cdFlFQVAgPSAneWVhcCcsXHJcblx0TVcgPSAnbXcnLFxyXG5cdExFTkEgPSAnbGVuYScsXHJcblx0SEVTID0gJ2hlcycsXHJcblx0Q1RTID0gJ2N0cycsXHJcblx0U0lTID0gJ3NpcycsXHJcblx0TU5HID0gJ21uZycsXHJcblx0TURNID0gJ21kbScsXHJcblx0U1RBVEVfTUFDSElORSA9ICdzdGF0ZS1tYWNoaW5lJyxcclxuXHRSRVBPUlQgPSAncmVwb3J0JyxcclxuXHRMR0MgPSAnbGdjJyxcclxuXHRETVMgPSAnZG1zJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHNEVE8ge1xyXG5cdHZlcnNpb246IG51bWJlcjtcclxuXHRtb2R1bGVzOiBQbHVnaW5Db25maWdbXTtcclxuXHRwbHVnaW5zOiBQbHVnaW5Db25maWdbXTtcclxuXHRleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+O1xyXG5cdG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Db25maWcge1xyXG5cdG9wdGlvbnM6IFBsdWdpbkNvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnID0gV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgJiB7XHJcblx0aWQ/OiBzdHJpbmc7XHJcblx0cmVtb3RlTmFtZTogc3RyaW5nO1xyXG5cdHNoYWRvd0RvbVBhc3NpdmU6IGJvb2xlYW47XHJcblx0cGVybWl0dGVkUm9sZXM/OiBzdHJpbmdbXTtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW1BY3Rpb24ge1xyXG5cdG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnO1xyXG5cdHVybDogc3RyaW5nO1xyXG5cdGJvZHk/OiBhbnk7XHJcblx0c3VjY2Vzc1JvdXRlOiBzdHJpbmc7XHJcblx0c3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luTWVudUl0ZW0ge1xyXG5cdHJvdXRlckxpbms/OiBzdHJpbmc7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRsYWJlbDoge1xyXG5cdFx0W2xhbmd1YWdlQ29kZTogc3RyaW5nXTogc3RyaW5nO1xyXG5cdH07XHJcblx0aXRlbXM/OiBQbHVnaW5NZW51SXRlbVtdO1xyXG5cdHBlcm1pdHRlZFJvbGVzPzogc3RyaW5nW107XHJcblx0YWN0aW9uPzogTWVudUl0ZW1BY3Rpb247XHJcblxyXG5cdC8vIFVJIGZpZWxkc1xyXG5cdHNlcGFyYXRvcj86IGJvb2xlYW47XHJcblx0cm9vdD86IGJvb2xlYW47XHJcblx0cGF0aD86IHN0cmluZztcclxuXHRkaXNhYmxlZD86IGJvb2xlYW47XHJcblx0Y29tbWFuZD8oZXZlbnQ6IE1lbnVJdGVtQ29tbWFuZEV2ZW50KTogdm9pZDtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const routePermissions = new Map();
|
|
2
|
+
export function setRoutePermissions(menuItems) {
|
|
3
|
+
routePermissions.clear();
|
|
4
|
+
buildPermissionsMap(menuItems);
|
|
5
|
+
}
|
|
6
|
+
export function getRoutePermissions(url) {
|
|
7
|
+
const normalizedUrl = url.split('?')[0].replace(/^\//, '');
|
|
8
|
+
return routePermissions.get(normalizedUrl);
|
|
9
|
+
}
|
|
10
|
+
function buildPermissionsMap(items) {
|
|
11
|
+
for (const item of items) {
|
|
12
|
+
if (item.routerLink && item.permittedRoles?.length) {
|
|
13
|
+
const normalized = item.routerLink.replace(/^\//, '');
|
|
14
|
+
routePermissions.set(normalized, item.permittedRoles);
|
|
15
|
+
}
|
|
16
|
+
if (item.items?.length) {
|
|
17
|
+
buildPermissionsMap(item.items);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGVybWlzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL3JvdXRlLXBlcm1pc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7QUFFckQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQTJCO0lBQzlELGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBVztJQUM5QyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsS0FBdUI7SUFDbkQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNGLENBQUM7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuY29uc3Qgcm91dGVQZXJtaXNzaW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRSb3V0ZVBlcm1pc3Npb25zKG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQge1xyXG5cdHJvdXRlUGVybWlzc2lvbnMuY2xlYXIoKTtcclxuXHRidWlsZFBlcm1pc3Npb25zTWFwKG1lbnVJdGVtcyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVBlcm1pc3Npb25zKHVybDogc3RyaW5nKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xyXG5cdGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSB1cmwuc3BsaXQoJz8nKVswXS5yZXBsYWNlKC9eXFwvLywgJycpO1xyXG4gIHJldHVybiByb3V0ZVBlcm1pc3Npb25zLmdldChub3JtYWxpemVkVXJsKTtcclxufVxyXG5cclxuZnVuY3Rpb24gYnVpbGRQZXJtaXNzaW9uc01hcChpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQge1xyXG5cdGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG5cdFx0aWYgKGl0ZW0ucm91dGVyTGluayAmJiBpdGVtLnBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3Qgbm9ybWFsaXplZCA9IGl0ZW0ucm91dGVyTGluay5yZXBsYWNlKC9eXFwvLywgJycpO1xyXG5cdFx0XHRyb3V0ZVBlcm1pc3Npb25zLnNldChub3JtYWxpemVkLCBpdGVtLnBlcm1pdHRlZFJvbGVzKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaXRlbS5pdGVtcz8ubGVuZ3RoKSB7XHJcblx0XHRcdGJ1aWxkUGVybWlzc2lvbnNNYXAoaXRlbS5pdGVtcyk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
|