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.
@@ -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
- permittedRole?: string;
52
+ permittedRoles?: string[];
52
53
  action?: MenuItemAction;
53
54
  separator?: boolean;
54
55
  root?: boolean;
@@ -0,0 +1,3 @@
1
+ import { PluginMenuItem } from './interfaces';
2
+ export declare function setRoutePermissions(menuItems: PluginMenuItem[]): void;
3
+ export declare function getRoutePermissions(url: string): string[] | undefined;
@@ -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([...this.router.config, ...routes, { path: '**', component: NotFoundComponent }]);
19
- this.setMenuItems(apps.menuItems);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ04sbUJBQW1CLEVBRW5CLFVBQVUsRUFDVixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdoRSxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVTLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0EwQ2hDO0lBeENBLElBQUksQ0FBQyxVQUFzQixFQUFFLE9BQWU7UUFDM0MsT0FBTyxVQUFVO2FBQ2YsR0FBRyxDQUFVLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO2FBQ3JHLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUVwRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUF1QjtRQUNsQyxNQUFNLE1BQU0sR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUMsT0FBTztnQkFDTixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZDLFNBQVMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyx5QkFBeUI7Z0JBQ3JGLElBQUksRUFBRSxPQUFxQztnQkFDM0MsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF1QjtRQUM3QixVQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDaEcsR0FBRyxLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFzQztRQUMxQyxVQUFXLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQzs4R0ExQ1csZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuXHRXZWJDb21wb25lbnRXcmFwcGVyLFxyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zLFxyXG5cdHN0YXJ0c1dpdGhcclxufSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICdhcmlsL3V0aWwvY3VzdG9tX3BhZ2VzJztcclxuXHJcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XHJcbmltcG9ydCB7IEFwcHNEVE8sIEV4dGVuc2lvbkNvbmZpZywgUGx1Z2luQ29uZmlnLCBQbHVnaW5NZW51SXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNoYWRvd0RPTVdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3Nob3dkb3dET01XcmFwcGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNaWNyb0FwcFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG5cdGluaXQoaHR0cENsaWVudDogSHR0cENsaWVudCwgaG9zdEFQSTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PEFwcHNEVE8+KGlzRGV2TW9kZSgpID8gJy4vYXNzZXRzL2xvY2FsLWNvbmZpZ3MvYXBwLmxvY2FsLmpzb24nIDogaG9zdEFQSSArICcvdWktc2lkZWJhci1jb25maWdzJylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKChhcHBzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCByb3V0ZXMgPSB0aGlzLmJ1aWxkUm91dGVzKFsuLi5hcHBzLm1vZHVsZXMsIC4uLmFwcHMucGx1Z2luc10pO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMucm91dGVyLnJlc2V0Q29uZmlnKFsuLi50aGlzLnJvdXRlci5jb25maWcsIC4uLnJvdXRlcywgeyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1dKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0TWVudUl0ZW1zKGFwcHMubWVudUl0ZW1zKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0UGx1Z2lucyhhcHBzLmV4dGVuc2lvbnMpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIE1pY3JvIEFwcHMgTG9hZGluZycsIGVycik7XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0aW9ucykgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1hdGNoZXI6IHN0YXJ0c1dpdGgob3B0aW9ucy5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdGlvbnMuc2hhZG93RG9tUGFzc2l2ZSA/IFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMgYXMgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0XHRcdFx0Y2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRdXHJcblx0XHRcdH07XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcm91dGVzO1xyXG5cdH1cclxuXHJcblx0c2V0TWVudUl0ZW1zKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5ob3N0TWVudUl0ZW1zLnNldChbXHJcblx0XHRcdHsgcm9vdDogdHJ1ZSwgbGFiZWw6IHsgdHI6ICdBbmFzYXlmYScsIGVuOiAnSG9tZScgfSwgaWNvbjogJ3BpIHBpLWZ3IHBpLWhvbWUnLCByb3V0ZXJMaW5rOiAnLycgfSxcclxuXHRcdFx0Li4uaXRlbXNcclxuXHRcdF0pO1xyXG5cdH1cclxuXHRzZXRQbHVnaW5zKGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+KTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5wbHVnaW5Kc29uID0gaXRlbXMgfHwge307XHJcblx0fVxyXG59XHJcbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBR3RFLE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7OEdBZFcsU0FBUztrSEFBVCxTQUFTLGNBREksTUFBTTs7MkZBQ25CLFNBQVM7a0JBRHJCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0F1dGhHdWFyZCwgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXV0aEd1YXJkIGV4dGVuZHMgS2V5Y2xvYWtBdXRoR3VhcmQge1xyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0c3VwZXIoaW5qZWN0KFJvdXRlciksIGluamVjdChLZXljbG9ha1NlcnZpY2UpKTtcclxuXHR9XHJcblxyXG5cdG92ZXJyaWRlIGFzeW5jIGlzQWNjZXNzQWxsb3dlZChcclxuXHRcdHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG5cdFx0c3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuXHQpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XHJcblx0XHRpZiAoIXRoaXMuYXV0aGVudGljYXRlZCkge1xyXG5cdFx0XHRhd2FpdCB0aGlzLmtleWNsb2FrQW5ndWxhci5sb2dpbih7IHJlZGlyZWN0VXJpOiB3aW5kb3cubG9jYXRpb24uaHJlZiB9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
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/OiBzdHJpbmc7XHJcblx0cmVtb3RlTmFtZTogc3RyaW5nO1xyXG5cdHNoYWRvd0RvbVBhc3NpdmU6IGJvb2xlYW47XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtQWN0aW9uIHtcclxuXHRtZXRob2Q/OiAnR0VUJyB8ICdQT1NUJztcclxuXHR1cmw6IHN0cmluZztcclxuXHRib2R5PzogYW55O1xyXG5cdHN1Y2Nlc3NSb3V0ZTogc3RyaW5nO1xyXG5cdHN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk1lbnVJdGVtIHtcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0bGFiZWw6IHtcclxuXHRcdFtsYW5ndWFnZUNvZGU6IHN0cmluZ106IHN0cmluZztcclxuXHR9O1xyXG5cdGl0ZW1zPzogUGx1Z2luTWVudUl0ZW1bXTtcclxuXHRwZXJtaXR0ZWRSb2xlPzogc3RyaW5nO1xyXG5cdGFjdGlvbj86IE1lbnVJdGVtQWN0aW9uO1xyXG5cclxuXHQvLyBVSSBmaWVsZHNcclxuXHRzZXBhcmF0b3I/OiBib29sZWFuO1xyXG5cdHJvb3Q/OiBib29sZWFuO1xyXG5cdHBhdGg/OiBzdHJpbmc7XHJcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xyXG5cdGNvbW1hbmQ/KGV2ZW50OiBNZW51SXRlbUNvbW1hbmRFdmVudCk6IHZvaWQ7XHJcbn1cclxuIl19
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==