@reskin/core 0.0.16 → 0.0.17

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.
@@ -1,16 +1,31 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Inject, Injectable, InjectionToken } from '@angular/core';
2
2
  import { filter, map, catchError } from 'rxjs/operators';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@reskin/core/services";
5
5
  import * as i2 from "@angular/router";
6
+ /**
7
+ * 路由守卫配置注入令牌
8
+ */
9
+ export const RK_ROUTER_GUARD_CONFIG = new InjectionToken('router_guard_config');
10
+ /**
11
+ * 路由守卫提供者配置函数
12
+ *
13
+ * @param urls - 路由守卫配置数组,包含需要保护的路由配置信息
14
+ * @returns 返回Angular依赖注入的Provider数组,用于配置路由守卫
15
+ */
16
+ export function providerRouterGuard(urls) {
17
+ return [
18
+ // 路由守卫配置
19
+ { provide: RK_ROUTER_GUARD_CONFIG, useValue: urls },
20
+ ];
21
+ }
6
22
  export class RkAuthGuard {
7
- constructor(menu, router, activatedRoute) {
23
+ constructor(config, menu, router) {
24
+ this.config = config;
8
25
  this.menu = menu;
9
26
  this.router = router;
10
- this.activatedRoute = activatedRoute;
11
27
  }
12
28
  canActivateChild(childRoute, state) {
13
- console.log(this.router);
14
29
  return this.menu.requestData().pipe(filter((json) => json.code === 0), map((json) => json.data), map((menus) => this.checkAccess(menus, childRoute, state.url)), catchError(() => {
15
30
  this.handleNoAccess(state.url);
16
31
  return [false];
@@ -20,16 +35,17 @@ export class RkAuthGuard {
20
35
  if (!menus.length) {
21
36
  throw new Error(`此账号无任何功能权限.`);
22
37
  }
23
- const cleanUrl = url.replace(/\?.*/, '');
38
+ const routerUrl = url.replace(/\?.*/, '');
24
39
  const authRoutes = new Set(menus.map((m) => m.SYSTEM_RESOURCE_URL));
25
- if (authRoutes.has(cleanUrl)) {
40
+ if (authRoutes.has(routerUrl)) {
26
41
  return true;
27
42
  }
28
- const { extendAuth, extendRoutes } = this.routeData(this.activatedRoute.snapshot);
29
- if (extendAuth && extendRoutes) {
30
- const hasWildcardMatch = extendRoutes.some((route) => route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl);
31
- if (hasWildcardMatch) {
32
- return true;
43
+ if (this.config && this.config.length > 0) {
44
+ const extendRoutes = this.config.filter((item) => {
45
+ return item.extends.some((route) => (route.includes('**') ? this.match(route, routerUrl) : route === routerUrl));
46
+ });
47
+ if (extendRoutes.length > 0) {
48
+ return extendRoutes.some((item) => authRoutes.has(item.url));
33
49
  }
34
50
  }
35
51
  this.handleNoAccess(url);
@@ -43,28 +59,16 @@ export class RkAuthGuard {
43
59
  console.error(`无权限访问路由地址: ${url}`);
44
60
  this.router.navigate(['/errors/401']).then();
45
61
  }
46
- routeData(childRoute) {
47
- // 直接检查当前路由的数据
48
- if (childRoute.data && childRoute.data['extendAuth'] !== undefined) {
49
- return childRoute.data;
50
- }
51
- // 遍历子路由查找
52
- for (const child of childRoute.children) {
53
- const result = this.routeData(child);
54
- if (result.extendAuth !== undefined) {
55
- return result;
56
- }
57
- }
58
- // 没有找到时返回默认值
59
- return { extendAuth: false, extendRoutes: [] };
60
- }
61
62
  }
62
- RkAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, deps: [{ token: i1.RkMenuService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ RkAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, deps: [{ token: RK_ROUTER_GUARD_CONFIG }, { token: i1.RkMenuService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
63
64
  RkAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, providedIn: 'root' });
64
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, decorators: [{
65
66
  type: Injectable,
66
67
  args: [{
67
68
  providedIn: 'root',
68
69
  }]
69
- }], ctorParameters: function () { return [{ type: i1.RkMenuService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXpELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQ1ksSUFBbUIsRUFDbkIsTUFBYyxFQUNkLGNBQThCO1FBRjlCLFNBQUksR0FBSixJQUFJLENBQWU7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUN2QyxDQUFDO0lBRUosZ0JBQWdCLENBQ1osVUFBa0MsRUFDbEMsS0FBMEI7UUFFMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDL0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUNqQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDeEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBWSxFQUFFLFVBQWtDLEVBQUUsR0FBVztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEM7UUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRTVFLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEYsSUFBSSxVQUFVLElBQUksWUFBWSxFQUFFO1lBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQ3pELEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUMxRSxDQUFDO1lBQ0YsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDbEIsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sS0FBSyxDQUFDLE9BQWUsRUFBRSxJQUFZO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQVc7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTyxTQUFTLENBQUMsVUFBa0M7UUFDaEQsY0FBYztRQUNkLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNoRSxPQUFPLFVBQVUsQ0FBQyxJQUF1RCxDQUFDO1NBQzdFO1FBRUQsVUFBVTtRQUNWLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7Z0JBQ2pDLE9BQU8sTUFBTSxDQUFDO2FBQ2pCO1NBQ0o7UUFFRCxhQUFhO1FBQ2IsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELENBQUM7O3lHQTNFUSxXQUFXOzZHQUFYLFdBQVcsY0FGUixNQUFNOzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQWN0aXZhdGVkUm91dGUsXHJcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgQ2FuQWN0aXZhdGVDaGlsZCxcclxuICAgIFJvdXRlcixcclxuICAgIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgICBVcmxUcmVlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJrTWVudVNlcnZpY2UgfSBmcm9tICdAcmVza2luL2NvcmUvc2VydmljZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmtBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZUNoaWxkIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgbWVudTogUmtNZW51U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgKSB7fVxyXG5cclxuICAgIGNhbkFjdGl2YXRlQ2hpbGQoXHJcbiAgICAgICAgY2hpbGRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICAgICk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5yb3V0ZXIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1lbnUucmVxdWVzdERhdGEoKS5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIoKGpzb24pID0+IGpzb24uY29kZSA9PT0gMCksXHJcbiAgICAgICAgICAgIG1hcCgoanNvbikgPT4ganNvbi5kYXRhKSxcclxuICAgICAgICAgICAgbWFwKChtZW51cykgPT4gdGhpcy5jaGVja0FjY2VzcyhtZW51cywgY2hpbGRSb3V0ZSwgc3RhdGUudXJsKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0FjY2VzcyhzdGF0ZS51cmwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtmYWxzZV07XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0FjY2VzcyhtZW51czogYW55W10sIGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nKTogYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgICAgIGlmICghbWVudXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg5q2k6LSm5Y+35peg5Lu75L2V5Yqf6IO95p2D6ZmQLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2xlYW5VcmwgPSB1cmwucmVwbGFjZSgvXFw/LiovLCAnJyk7XHJcbiAgICAgICAgY29uc3QgYXV0aFJvdXRlcyA9IG5ldyBTZXQ8c3RyaW5nPihtZW51cy5tYXAoKG0pID0+IG0uU1lTVEVNX1JFU09VUkNFX1VSTCkpO1xyXG5cclxuICAgICAgICBpZiAoYXV0aFJvdXRlcy5oYXMoY2xlYW5VcmwpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgeyBleHRlbmRBdXRoLCBleHRlbmRSb3V0ZXMgfSA9IHRoaXMucm91dGVEYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QpO1xyXG4gICAgICAgIGlmIChleHRlbmRBdXRoICYmIGV4dGVuZFJvdXRlcykge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNXaWxkY2FyZE1hdGNoID0gZXh0ZW5kUm91dGVzLnNvbWUoKHJvdXRlOiBzdHJpbmcpID0+XHJcbiAgICAgICAgICAgICAgICByb3V0ZS5pbmNsdWRlcygnKionKSA/IHRoaXMubWF0Y2gocm91dGUsIGNsZWFuVXJsKSA6IHJvdXRlID09PSBjbGVhblVybCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGhhc1dpbGRjYXJkTWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZU5vQWNjZXNzKHVybCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWF0Y2gocGF0dGVybjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZWdleFBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKlxcKi9nLCAnLionKTtcclxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7cmVnZXhQYXR0ZXJufSRgKS50ZXN0KHBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlTm9BY2Nlc3ModXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGDml6DmnYPpmZDorr/pl67ot6/nlLHlnLDlnYA6ICR7dXJsfWApO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Vycm9ycy80MDEnXSkudGhlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcm91dGVEYXRhKGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiB7IGV4dGVuZEF1dGg6IGJvb2xlYW47IGV4dGVuZFJvdXRlczogc3RyaW5nW10gfSB7XHJcbiAgICAgICAgLy8g55u05o6l5qOA5p+l5b2T5YmN6Lev55Sx55qE5pWw5o2uXHJcbiAgICAgICAgaWYgKGNoaWxkUm91dGUuZGF0YSAmJiBjaGlsZFJvdXRlLmRhdGFbJ2V4dGVuZEF1dGgnXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjaGlsZFJvdXRlLmRhdGEgYXMgeyBleHRlbmRBdXRoOiBib29sZWFuOyBleHRlbmRSb3V0ZXM6IHN0cmluZ1tdIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDpgY3ljoblrZDot6/nlLHmn6Xmib5cclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkUm91dGUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5yb3V0ZURhdGEoY2hpbGQpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmV4dGVuZEF1dGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5rKh5pyJ5om+5Yiw5pe26L+U5Zue6buY6K6k5YC8XHJcbiAgICAgICAgcmV0dXJuIHsgZXh0ZW5kQXV0aDogZmFsc2UsIGV4dGVuZFJvdXRlczogW10gfTtcclxuICAgIH1cclxufVxyXG4iXX0=
70
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
71
+ type: Inject,
72
+ args: [RK_ROUTER_GUARD_CONFIG]
73
+ }] }, { type: i1.RkMenuService }, { type: i2.Router }]; } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFHN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHekQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBZ0JoRjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUEwQjtJQUMxRCxPQUFPO1FBQ0gsU0FBUztRQUNULEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7S0FDdEQsQ0FBQztBQUNOLENBQUM7QUFLRCxNQUFNLE9BQU8sV0FBVztJQUNwQixZQUM0QyxNQUE0QixFQUM1RCxJQUFtQixFQUNuQixNQUFjO1FBRmtCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVELFNBQUksR0FBSixJQUFJLENBQWU7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUN2QixDQUFDO0lBRUosZ0JBQWdCLENBQ1osVUFBa0MsRUFDbEMsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDL0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUNqQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDeEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBWSxFQUFFLFVBQWtDLEVBQUUsR0FBVztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEM7UUFFRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRTVFLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM3QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM3SCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNoRTtTQUNKO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sS0FBSyxDQUFDLE9BQWUsRUFBRSxJQUFZO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQVc7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pELENBQUM7O3lHQXZEUSxXQUFXLGtCQUVSLHNCQUFzQjs2R0FGekIsV0FBVyxjQUZSLE1BQU07NEZBRVQsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUdRLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmtNZW51U2VydmljZSB9IGZyb20gJ0ByZXNraW4vY29yZS9zZXJ2aWNlcyc7XHJcblxyXG4vKipcclxuICog6Lev55Sx5a6I5Y2r6YWN572u5rOo5YWl5Luk54mMXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUktfUk9VVEVSX0dVQVJEX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbigncm91dGVyX2d1YXJkX2NvbmZpZycpO1xyXG5cclxuLyoqXHJcbiAqIOi3r+eUseWuiOWNq+mFjee9rlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUm91dGVyR3VhcmRDb25maWcge1xyXG4gICAgLyoqXHJcbiAgICAgKiDot6/nlLHlnLDlnYBcclxuICAgICAqL1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIOe7p+aJv+eahOadg+mZkFxyXG4gICAgICovXHJcbiAgICBleHRlbmRzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIOi3r+eUseWuiOWNq+aPkOS+m+iAhemFjee9ruWHveaVsFxyXG4gKlxyXG4gKiBAcGFyYW0gdXJscyAtIOi3r+eUseWuiOWNq+mFjee9ruaVsOe7hO+8jOWMheWQq+mcgOimgeS/neaKpOeahOi3r+eUsemFjee9ruS/oeaBr1xyXG4gKiBAcmV0dXJucyDov5Tlm55Bbmd1bGFy5L6d6LWW5rOo5YWl55qEUHJvdmlkZXLmlbDnu4TvvIznlKjkuo7phY3nva7ot6/nlLHlrojljatcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlclJvdXRlckd1YXJkKHVybHM6IElSb3V0ZXJHdWFyZENvbmZpZ1tdKTogUHJvdmlkZXJbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIC8vIOi3r+eUseWuiOWNq+mFjee9rlxyXG4gICAgICAgIHsgcHJvdmlkZTogUktfUk9VVEVSX0dVQVJEX0NPTkZJRywgdXNlVmFsdWU6IHVybHMgfSxcclxuICAgIF07XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJrQXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGVDaGlsZCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KFJLX1JPVVRFUl9HVUFSRF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBJUm91dGVyR3VhcmRDb25maWdbXSxcclxuICAgICAgICBwcml2YXRlIG1lbnU6IFJrTWVudVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICkge31cclxuXHJcbiAgICBjYW5BY3RpdmF0ZUNoaWxkKFxyXG4gICAgICAgIGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1lbnUucmVxdWVzdERhdGEoKS5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIoKGpzb24pID0+IGpzb24uY29kZSA9PT0gMCksXHJcbiAgICAgICAgICAgIG1hcCgoanNvbikgPT4ganNvbi5kYXRhKSxcclxuICAgICAgICAgICAgbWFwKChtZW51cykgPT4gdGhpcy5jaGVja0FjY2VzcyhtZW51cywgY2hpbGRSb3V0ZSwgc3RhdGUudXJsKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0FjY2VzcyhzdGF0ZS51cmwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtmYWxzZV07XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0FjY2VzcyhtZW51czogYW55W10sIGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nKTogYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgICAgIGlmICghbWVudXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg5q2k6LSm5Y+35peg5Lu75L2V5Yqf6IO95p2D6ZmQLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgcm91dGVyVXJsID0gdXJsLnJlcGxhY2UoL1xcPy4qLywgJycpO1xyXG4gICAgICAgIGNvbnN0IGF1dGhSb3V0ZXMgPSBuZXcgU2V0PHN0cmluZz4obWVudXMubWFwKChtKSA9PiBtLlNZU1RFTV9SRVNPVVJDRV9VUkwpKTtcclxuXHJcbiAgICAgICAgaWYgKGF1dGhSb3V0ZXMuaGFzKHJvdXRlclVybCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBleHRlbmRSb3V0ZXMgPSB0aGlzLmNvbmZpZy5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmV4dGVuZHMuc29tZSgocm91dGU6IHN0cmluZykgPT4gKHJvdXRlLmluY2x1ZGVzKCcqKicpID8gdGhpcy5tYXRjaChyb3V0ZSwgcm91dGVyVXJsKSA6IHJvdXRlID09PSByb3V0ZXJVcmwpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChleHRlbmRSb3V0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4dGVuZFJvdXRlcy5zb21lKChpdGVtKSA9PiBhdXRoUm91dGVzLmhhcyhpdGVtLnVybCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZU5vQWNjZXNzKHVybCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWF0Y2gocGF0dGVybjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZWdleFBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKlxcKi9nLCAnLionKTtcclxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7cmVnZXhQYXR0ZXJufSRgKS50ZXN0KHBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlTm9BY2Nlc3ModXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGDml6DmnYPpmZDorr/pl67ot6/nlLHlnLDlnYA6ICR7dXJsfWApO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Vycm9ycy80MDEnXSkudGhlbigpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -79,4 +79,4 @@ export function providerAppConfig(environment) {
79
79
  },
80
80
  ];
81
81
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9zZXJ2aWNlcy9hcHAuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJcEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7QUFLaEUsTUFBTSxPQUFPLFNBQVM7SUFNbEIsWUFDb0MsR0FBUSxFQUNoQyxLQUFZO1FBRFksUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQ3JCLENBQUM7SUFFSjs7Ozs7O09BTUc7SUFDRyxNQUFNOztZQUNSLHVCQUF1QjtZQUN2QixNQUFNLEdBQUcsR0FBRyxpRUFBaUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNsSCxVQUFVO1lBQ1YsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsV0FBVztZQUNYLE1BQU0sSUFBSSxHQUFNLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLG9CQUFvQjtZQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM3QjtZQUNELFlBQVk7WUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ2hHLHVCQUF1QjtZQUN2QixNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDO1lBQ2pELGdCQUFnQjtZQUNoQixTQUFTLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUM1QixTQUFTO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRCxTQUFTO1lBQ1QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUFBOzt1R0F2Q1EsU0FBUyxrQkFPTixjQUFjOzJHQVBqQixTQUFTLGNBRk4sTUFBTTs0RkFFVCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUVEsTUFBTTsyQkFBQyxjQUFjOztBQW1DOUI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsV0FBZ0I7SUFDOUMsT0FBTztRQUNILDJDQUEyQztRQUMzQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtRQUNsRCx3QkFBd0I7UUFDeEIsU0FBUztRQUNULDhEQUE4RDtRQUM5RCx1QkFBdUI7UUFDdkI7WUFDSSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzlELElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNqQixLQUFLLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtTQUN6QztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEVudiwgUiwgV0MgfSBmcm9tICdAcmVza2luL2NvcmUvZW50aXR5JztcclxuXHJcbi8qKlxyXG4gKiDpobnnm67njq/looPlj5jph4/phY3nva4gVG9rZW5cclxuICovXHJcbmV4cG9ydCBjb25zdCBSS19FTlZJUk9OTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbignZW52aXJvbm1lbnQnKTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcENvbmZpZyB7XHJcbiAgICAvKipcclxuICAgICAqIOmhueebrumFjee9rumhuVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgc2V0dGluZ3M6IFdDO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoUktfRU5WSVJPTk1FTlQpIHByaXZhdGUgZW52OiBFbnYsXHJcbiAgICAgICAgcHJpdmF0ZSB0aXRsZTogVGl0bGUsXHJcbiAgICApIHt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlvILmraXliqDovb3phY3nva7mlbDmja5cclxuICAgICAqIOmAmui/h+iwg+eUqEFQSeerr+eCueiOt+WPluezu+e7n+WPguaVsO+8jOino+aekOW5tuW6lOeUqOi/meS6m+WPguaVsFxyXG4gICAgICog5aaC5p6c6I635Y+W5Y+C5pWw5aSx6LSl5oiW5Y+C5pWw5LiN5q2j56Gu77yM5YiZ5oqb5Ye66ZSZ6K+vXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge1Byb21pc2U8V0M+fSDov5Tlm57phY3nva7mlbDmja7nmoRQcm9taXNlXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIG9uTG9hZCgpOiBQcm9taXNlPFdDPiB7XHJcbiAgICAgICAgLy8g5a6a5LmJQVBJ6K+35rGC55qEVVJM77yM55So5LqO6I635Y+W57O757uf5Y+C5pWwXHJcbiAgICAgICAgY29uc3QgdXJsID0gYGFwaS9nbC1zZXJ2aWNlLXN5cy1jb3JlL3YxL2NvcmUvc3lzdGVtL3BhcmFtZXRlci9nZXRPbmVCeUNvZGUvJHt0aGlzLmVudi5jb25maWcuUFJPSkVDVF9DT05GSUdfS0VZfWA7XHJcbiAgICAgICAgLy8g5Y+R6LW3QVBJ6K+35rGCXHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpO1xyXG4gICAgICAgIC8vIOino+aekEpTT07lk43lupRcclxuICAgICAgICBjb25zdCBqc29uOiBSID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICAgIC8vIOajgOafpeWTjeW6lOegge+8jOWmguaenOS4jeS4ujDvvIzliJnmipvlh7rplJnor69cclxuICAgICAgICBpZiAoanNvbi5jb2RlICE9PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihqc29uLm1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOino+aekOW5tuWkhOeQhumFjee9ruaVsOaNrlxyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGpzb24uZGF0YS5TWVNURU1fUEFSQU1FVEVSX1ZBTFVFICYmIEpTT04ucGFyc2UoanNvbi5kYXRhLlNZU1RFTV9QQVJBTUVURVJfVkFMVUUpO1xyXG4gICAgICAgIC8vIOWwhnByb2R1Y3Rpb27lrZfnrKbkuLLovazmjaLkuLrluIPlsJTlgLxcclxuICAgICAgICBjb25maWcucHJvZHVjdGlvbiA9IGNvbmZpZy5wcm9kdWN0aW9uID09PSAndHJ1ZSc7XHJcbiAgICAgICAgLy8g5bCG6YWN572u5pWw5o2u5bqU55So5Yiw5bqU55So6YWN572u5LitXHJcbiAgICAgICAgQXBwQ29uZmlnLnNldHRpbmdzID0gY29uZmlnO1xyXG4gICAgICAgIC8vIOiuvue9rumhueebruagh+mimFxyXG4gICAgICAgIHRoaXMudGl0bGUuc2V0VGl0bGUoY29uZmlnLmluc2lnaHRzLlBST0pFQ1RfTkFNRSk7XHJcbiAgICAgICAgLy8g6L+U5Zue6YWN572u5pWw5o2uXHJcbiAgICAgICAgcmV0dXJuIGNvbmZpZztcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOmFjee9ruW6lOeUqOeahOaPkOS+m+iAheWSjOWIneWni+WMluWHveaVsFxyXG4gKlxyXG4gKiDmraTlh73mlbDnlKjkuo7phY3nva7lupTnlKjnqIvluo/nmoTmj5DkvpvogIXlkozmnI3liqHliJ3lp4vljJbpgLvovpHlroPpgJrov4fkvp3otZbms6jlhaXmnLrliLbvvIxcclxuICog5bCG546v5aKD6YWN572u5ZKM5bqU55So6YWN572u5a+56LGh5o+Q5L6b57uZ5bqU55So77yM5bm25Zyo5bqU55So5ZCv5Yqo5pe25omn6KGM5LiA5Liq5Yqg6L295Ye95pWwXHJcbiAqXHJcbiAqIEBwYXJhbSBlbnZpcm9ubWVudCDlupTnlKjnjq/looPnmoTphY3nva7lr7nosaHvvIzljIXlkKvov5DooYzml7bnmoTlkITnp43njq/looPlj5jph4/lkozphY3nva5cclxuICogQHJldHVybnMg6L+U5Zue5LiA5Liq5YyF5ZCr5o+Q5L6b6ICF6YWN572u55qE5pWw57uE77yM55So5LqOIEFwcE1vZHVsZSDnmoTmj5DkvpvogIXliJfooahcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlckFwcENvbmZpZyhlbnZpcm9ubWVudDogRW52KSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIC8vIOaPkOS+m+eOr+Wig+mFjee9rueahOaPkOS+m+iAhe+8jOWwhueOr+Wig+WvueixoeS9nOS4uuWAvOaPkOS+m+e7mSBSS19FTlZJUk9OTUVOVCDku6TniYxcclxuICAgICAgICB7IHByb3ZpZGU6IFJLX0VOVklST05NRU5ULCB1c2VWYWx1ZTogZW52aXJvbm1lbnQgfSxcclxuICAgICAgICAvLyDlsIYgQXBwQ29uZmlnIOacjeWKoeacrOi6q+S9nOS4uuaPkOS+m+iAhVxyXG4gICAgICAgIEFwcENvbmZpZyxcclxuICAgICAgICAvLyDphY3nva4gQVBQX0lOSVRJQUxJWkVSIOaPkOS+m+iAhe+8jOS9v+eUqOW3peWOguWHveaVsOWcqOW6lOeUqOWQr+WKqOaXtuiwg+eUqCBhcHBDb25maWcg55qEIG9uTG9hZCDmlrnms5VcclxuICAgICAgICAvLyDov5nlhYHorrjlnKjlupTnlKjlkK/liqjlrozmiJDlkI7miafooYzkuIDkupvliJ3lp4vljJbpgLvovpFcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGFwcENvbmZpZzogQXBwQ29uZmlnKSA9PiAoKSA9PiBhcHBDb25maWcub25Mb2FkKCksXHJcbiAgICAgICAgICAgIGRlcHM6IFtBcHBDb25maWddLCAvLyDmjIflrprkvp3otZYgQXBwQ29uZmlnIHNlcnZpY2VzXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLCAvLyDmoIforrDmraTliJ3lp4vljJblh73mlbDkuLrlpJrlgLzvvIzlj6/ku6XmnInlpJrkuKrliJ3lp4vljJblh73mlbBcclxuICAgICAgICB9LFxyXG4gICAgXTtcclxufVxyXG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9zZXJ2aWNlcy9hcHAuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDOzs7QUFJOUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7QUFLaEUsTUFBTSxPQUFPLFNBQVM7SUFNbEIsWUFDb0MsR0FBUSxFQUNoQyxLQUFZO1FBRFksUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFPO0lBQ3JCLENBQUM7SUFFSjs7Ozs7O09BTUc7SUFDRyxNQUFNOztZQUNSLHVCQUF1QjtZQUN2QixNQUFNLEdBQUcsR0FBRyxpRUFBaUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNsSCxVQUFVO1lBQ1YsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsV0FBVztZQUNYLE1BQU0sSUFBSSxHQUFNLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLG9CQUFvQjtZQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM3QjtZQUNELFlBQVk7WUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ2hHLHVCQUF1QjtZQUN2QixNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDO1lBQ2pELGdCQUFnQjtZQUNoQixTQUFTLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUM1QixTQUFTO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRCxTQUFTO1lBQ1QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUFBOzt1R0F2Q1EsU0FBUyxrQkFPTixjQUFjOzJHQVBqQixTQUFTLGNBRk4sTUFBTTs0RkFFVCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUVEsTUFBTTsyQkFBQyxjQUFjOztBQW1DOUI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsV0FBZ0I7SUFDOUMsT0FBTztRQUNILDJDQUEyQztRQUMzQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtRQUNsRCx3QkFBd0I7UUFDeEIsU0FBUztRQUNULDhEQUE4RDtRQUM5RCx1QkFBdUI7UUFDdkI7WUFDSSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzlELElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNqQixLQUFLLEVBQUUsSUFBSSxFQUFFLHlCQUF5QjtTQUN6QztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBFbnYsIFIsIFdDIH0gZnJvbSAnQHJlc2tpbi9jb3JlL2VudGl0eSc7XHJcblxyXG4vKipcclxuICog6aG555uu546v5aKD5Y+Y6YeP6YWN572uIFRva2VuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUktfRU5WSVJPTk1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ2Vudmlyb25tZW50Jyk7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb25maWcge1xyXG4gICAgLyoqXHJcbiAgICAgKiDpobnnm67phY3nva7poblcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNldHRpbmdzOiBXQztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KFJLX0VOVklST05NRU5UKSBwcml2YXRlIGVudjogRW52LFxyXG4gICAgICAgIHByaXZhdGUgdGl0bGU6IFRpdGxlLFxyXG4gICAgKSB7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5byC5q2l5Yqg6L296YWN572u5pWw5o2uXHJcbiAgICAgKiDpgJrov4fosIPnlKhBUEnnq6/ngrnojrflj5bns7vnu5/lj4LmlbDvvIzop6PmnpDlubblupTnlKjov5nkupvlj4LmlbBcclxuICAgICAqIOWmguaenOiOt+WPluWPguaVsOWksei0peaIluWPguaVsOS4jeato+ehru+8jOWImeaKm+WHuumUmeivr1xyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPFdDPn0g6L+U5Zue6YWN572u5pWw5o2u55qEUHJvbWlzZVxyXG4gICAgICovXHJcbiAgICBhc3luYyBvbkxvYWQoKTogUHJvbWlzZTxXQz4ge1xyXG4gICAgICAgIC8vIOWumuS5iUFQSeivt+axgueahFVSTO+8jOeUqOS6juiOt+WPluezu+e7n+WPguaVsFxyXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvZ2wtc2VydmljZS1zeXMtY29yZS92MS9jb3JlL3N5c3RlbS9wYXJhbWV0ZXIvZ2V0T25lQnlDb2RlLyR7dGhpcy5lbnYuY29uZmlnLlBST0pFQ1RfQ09ORklHX0tFWX1gO1xyXG4gICAgICAgIC8vIOWPkei1t0FQSeivt+axglxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTtcclxuICAgICAgICAvLyDop6PmnpBKU09O5ZON5bqUXHJcbiAgICAgICAgY29uc3QganNvbjogUiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgICAvLyDmo4Dmn6Xlk43lupTnoIHvvIzlpoLmnpzkuI3kuLow77yM5YiZ5oqb5Ye66ZSZ6K+vXHJcbiAgICAgICAgaWYgKGpzb24uY29kZSAhPT0gMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoanNvbi5tc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDop6PmnpDlubblpITnkIbphY3nva7mlbDmja5cclxuICAgICAgICBjb25zdCBjb25maWcgPSBqc29uLmRhdGEuU1lTVEVNX1BBUkFNRVRFUl9WQUxVRSAmJiBKU09OLnBhcnNlKGpzb24uZGF0YS5TWVNURU1fUEFSQU1FVEVSX1ZBTFVFKTtcclxuICAgICAgICAvLyDlsIZwcm9kdWN0aW9u5a2X56ym5Liy6L2s5o2i5Li65biD5bCU5YC8XHJcbiAgICAgICAgY29uZmlnLnByb2R1Y3Rpb24gPSBjb25maWcucHJvZHVjdGlvbiA9PT0gJ3RydWUnO1xyXG4gICAgICAgIC8vIOWwhumFjee9ruaVsOaNruW6lOeUqOWIsOW6lOeUqOmFjee9ruS4rVxyXG4gICAgICAgIEFwcENvbmZpZy5zZXR0aW5ncyA9IGNvbmZpZztcclxuICAgICAgICAvLyDorr7nva7pobnnm67moIfpophcclxuICAgICAgICB0aGlzLnRpdGxlLnNldFRpdGxlKGNvbmZpZy5pbnNpZ2h0cy5QUk9KRUNUX05BTUUpO1xyXG4gICAgICAgIC8vIOi/lOWbnumFjee9ruaVsOaNrlxyXG4gICAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDphY3nva7lupTnlKjnmoTmj5DkvpvogIXlkozliJ3lp4vljJblh73mlbBcclxuICpcclxuICog5q2k5Ye95pWw55So5LqO6YWN572u5bqU55So56iL5bqP55qE5o+Q5L6b6ICF5ZKM5pyN5Yqh5Yid5aeL5YyW6YC76L6R5a6D6YCa6L+H5L6d6LWW5rOo5YWl5py65Yi277yMXHJcbiAqIOWwhueOr+Wig+mFjee9ruWSjOW6lOeUqOmFjee9ruWvueixoeaPkOS+m+e7meW6lOeUqO+8jOW5tuWcqOW6lOeUqOWQr+WKqOaXtuaJp+ihjOS4gOS4quWKoOi9veWHveaVsFxyXG4gKlxyXG4gKiBAcGFyYW0gZW52aXJvbm1lbnQg5bqU55So546v5aKD55qE6YWN572u5a+56LGh77yM5YyF5ZCr6L+Q6KGM5pe255qE5ZCE56eN546v5aKD5Y+Y6YeP5ZKM6YWN572uXHJcbiAqIEByZXR1cm5zIOi/lOWbnuS4gOS4quWMheWQq+aPkOS+m+iAhemFjee9rueahOaVsOe7hO+8jOeUqOS6jiBBcHBNb2R1bGUg55qE5o+Q5L6b6ICF5YiX6KGoXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZXJBcHBDb25maWcoZW52aXJvbm1lbnQ6IEVudik6IFByb3ZpZGVyW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICAvLyDmj5Dkvpvnjq/looPphY3nva7nmoTmj5DkvpvogIXvvIzlsIbnjq/looPlr7nosaHkvZzkuLrlgLzmj5Dkvpvnu5kgUktfRU5WSVJPTk1FTlQg5Luk54mMXHJcbiAgICAgICAgeyBwcm92aWRlOiBSS19FTlZJUk9OTUVOVCwgdXNlVmFsdWU6IGVudmlyb25tZW50IH0sXHJcbiAgICAgICAgLy8g5bCGIEFwcENvbmZpZyDmnI3liqHmnKzouqvkvZzkuLrmj5DkvpvogIVcclxuICAgICAgICBBcHBDb25maWcsXHJcbiAgICAgICAgLy8g6YWN572uIEFQUF9JTklUSUFMSVpFUiDmj5DkvpvogIXvvIzkvb/nlKjlt6XljoLlh73mlbDlnKjlupTnlKjlkK/liqjml7bosIPnlKggYXBwQ29uZmlnIOeahCBvbkxvYWQg5pa55rOVXHJcbiAgICAgICAgLy8g6L+Z5YWB6K645Zyo5bqU55So5ZCv5Yqo5a6M5oiQ5ZCO5omn6KGM5LiA5Lqb5Yid5aeL5YyW6YC76L6RXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChhcHBDb25maWc6IEFwcENvbmZpZykgPT4gKCkgPT4gYXBwQ29uZmlnLm9uTG9hZCgpLFxyXG4gICAgICAgICAgICBkZXBzOiBbQXBwQ29uZmlnXSwgLy8g5oyH5a6a5L6d6LWWIEFwcENvbmZpZyBzZXJ2aWNlc1xyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSwgLy8g5qCH6K6w5q2k5Yid5aeL5YyW5Ye95pWw5Li65aSa5YC877yM5Y+v5Lul5pyJ5aSa5Liq5Yid5aeL5YyW5Ye95pWwXHJcbiAgICAgICAgfSxcclxuICAgIF07XHJcbn1cclxuIl19
@@ -1,17 +1,32 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable } from '@angular/core';
2
+ import { InjectionToken, Injectable, Inject } from '@angular/core';
3
3
  import { filter, map, catchError } from 'rxjs/operators';
4
4
  import * as i1 from '@reskin/core/services';
5
5
  import * as i2 from '@angular/router';
6
6
 
7
+ /**
8
+ * 路由守卫配置注入令牌
9
+ */
10
+ const RK_ROUTER_GUARD_CONFIG = new InjectionToken('router_guard_config');
11
+ /**
12
+ * 路由守卫提供者配置函数
13
+ *
14
+ * @param urls - 路由守卫配置数组,包含需要保护的路由配置信息
15
+ * @returns 返回Angular依赖注入的Provider数组,用于配置路由守卫
16
+ */
17
+ function providerRouterGuard(urls) {
18
+ return [
19
+ // 路由守卫配置
20
+ { provide: RK_ROUTER_GUARD_CONFIG, useValue: urls },
21
+ ];
22
+ }
7
23
  class RkAuthGuard {
8
- constructor(menu, router, activatedRoute) {
24
+ constructor(config, menu, router) {
25
+ this.config = config;
9
26
  this.menu = menu;
10
27
  this.router = router;
11
- this.activatedRoute = activatedRoute;
12
28
  }
13
29
  canActivateChild(childRoute, state) {
14
- console.log(this.router);
15
30
  return this.menu.requestData().pipe(filter((json) => json.code === 0), map((json) => json.data), map((menus) => this.checkAccess(menus, childRoute, state.url)), catchError(() => {
16
31
  this.handleNoAccess(state.url);
17
32
  return [false];
@@ -21,16 +36,17 @@ class RkAuthGuard {
21
36
  if (!menus.length) {
22
37
  throw new Error(`此账号无任何功能权限.`);
23
38
  }
24
- const cleanUrl = url.replace(/\?.*/, '');
39
+ const routerUrl = url.replace(/\?.*/, '');
25
40
  const authRoutes = new Set(menus.map((m) => m.SYSTEM_RESOURCE_URL));
26
- if (authRoutes.has(cleanUrl)) {
41
+ if (authRoutes.has(routerUrl)) {
27
42
  return true;
28
43
  }
29
- const { extendAuth, extendRoutes } = this.routeData(this.activatedRoute.snapshot);
30
- if (extendAuth && extendRoutes) {
31
- const hasWildcardMatch = extendRoutes.some((route) => route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl);
32
- if (hasWildcardMatch) {
33
- return true;
44
+ if (this.config && this.config.length > 0) {
45
+ const extendRoutes = this.config.filter((item) => {
46
+ return item.extends.some((route) => (route.includes('**') ? this.match(route, routerUrl) : route === routerUrl));
47
+ });
48
+ if (extendRoutes.length > 0) {
49
+ return extendRoutes.some((item) => authRoutes.has(item.url));
34
50
  }
35
51
  }
36
52
  this.handleNoAccess(url);
@@ -44,34 +60,22 @@ class RkAuthGuard {
44
60
  console.error(`无权限访问路由地址: ${url}`);
45
61
  this.router.navigate(['/errors/401']).then();
46
62
  }
47
- routeData(childRoute) {
48
- // 直接检查当前路由的数据
49
- if (childRoute.data && childRoute.data['extendAuth'] !== undefined) {
50
- return childRoute.data;
51
- }
52
- // 遍历子路由查找
53
- for (const child of childRoute.children) {
54
- const result = this.routeData(child);
55
- if (result.extendAuth !== undefined) {
56
- return result;
57
- }
58
- }
59
- // 没有找到时返回默认值
60
- return { extendAuth: false, extendRoutes: [] };
61
- }
62
63
  }
63
- RkAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, deps: [{ token: i1.RkMenuService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
64
+ RkAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, deps: [{ token: RK_ROUTER_GUARD_CONFIG }, { token: i1.RkMenuService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
64
65
  RkAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, providedIn: 'root' });
65
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, decorators: [{
66
67
  type: Injectable,
67
68
  args: [{
68
69
  providedIn: 'root',
69
70
  }]
70
- }], ctorParameters: function () { return [{ type: i1.RkMenuService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
71
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
72
+ type: Inject,
73
+ args: [RK_ROUTER_GUARD_CONFIG]
74
+ }] }, { type: i1.RkMenuService }, { type: i2.Router }]; } });
71
75
 
72
76
  /**
73
77
  * Generated bundle index. Do not edit.
74
78
  */
75
79
 
76
- export { RkAuthGuard };
80
+ export { RK_ROUTER_GUARD_CONFIG, RkAuthGuard, providerRouterGuard };
77
81
  //# sourceMappingURL=reskin-core-guards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-guards.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n CanActivateChild,\r\n Router,\r\n RouterStateSnapshot,\r\n UrlTree,\r\n} from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, catchError } from 'rxjs/operators';\r\nimport { RkMenuService } from '@reskin/core/services';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAuthGuard implements CanActivateChild {\r\n constructor(\r\n private menu: RkMenuService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n ) {}\r\n\r\n canActivateChild(\r\n childRoute: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n console.log(this.router);\r\n return this.menu.requestData().pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n map((menus) => this.checkAccess(menus, childRoute, state.url)),\r\n catchError(() => {\r\n this.handleNoAccess(state.url);\r\n return [false];\r\n }),\r\n );\r\n }\r\n\r\n private checkAccess(menus: any[], childRoute: ActivatedRouteSnapshot, url: string): boolean | UrlTree {\r\n if (!menus.length) {\r\n throw new Error(`此账号无任何功能权限.`);\r\n }\r\n\r\n const cleanUrl = url.replace(/\\?.*/, '');\r\n const authRoutes = new Set<string>(menus.map((m) => m.SYSTEM_RESOURCE_URL));\r\n\r\n if (authRoutes.has(cleanUrl)) {\r\n return true;\r\n }\r\n\r\n const { extendAuth, extendRoutes } = this.routeData(this.activatedRoute.snapshot);\r\n if (extendAuth && extendRoutes) {\r\n const hasWildcardMatch = extendRoutes.some((route: string) =>\r\n route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl,\r\n );\r\n if (hasWildcardMatch) {\r\n return true;\r\n }\r\n }\r\n\r\n this.handleNoAccess(url);\r\n return false;\r\n }\r\n\r\n private match(pattern: string, path: string): boolean {\r\n const regexPattern = pattern.replace(/\\*\\*/g, '.*');\r\n return new RegExp(`^${regexPattern}$`).test(path);\r\n }\r\n\r\n private handleNoAccess(url: string): void {\r\n console.error(`无权限访问路由地址: ${url}`);\r\n this.router.navigate(['/errors/401']).then();\r\n }\r\n\r\n private routeData(childRoute: ActivatedRouteSnapshot): { extendAuth: boolean; extendRoutes: string[] } {\r\n // 直接检查当前路由的数据\r\n if (childRoute.data && childRoute.data['extendAuth'] !== undefined) {\r\n return childRoute.data as { extendAuth: boolean; extendRoutes: string[] };\r\n }\r\n\r\n // 遍历子路由查找\r\n for (const child of childRoute.children) {\r\n const result = this.routeData(child);\r\n if (result.extendAuth !== undefined) {\r\n return result;\r\n }\r\n }\r\n\r\n // 没有找到时返回默认值\r\n return { extendAuth: false, extendRoutes: [] };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reskin-core-guards.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Provider } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, catchError } from 'rxjs/operators';\r\nimport { RkMenuService } from '@reskin/core/services';\r\n\r\n/**\r\n * 路由守卫配置注入令牌\r\n */\r\nexport const RK_ROUTER_GUARD_CONFIG = new InjectionToken('router_guard_config');\r\n\r\n/**\r\n * 路由守卫配置\r\n */\r\nexport interface IRouterGuardConfig {\r\n /**\r\n * 路由地址\r\n */\r\n url: string;\r\n /**\r\n * 继承的权限\r\n */\r\n extends: string[];\r\n}\r\n\r\n/**\r\n * 路由守卫提供者配置函数\r\n *\r\n * @param urls - 路由守卫配置数组,包含需要保护的路由配置信息\r\n * @returns 返回Angular依赖注入的Provider数组,用于配置路由守卫\r\n */\r\nexport function providerRouterGuard(urls: IRouterGuardConfig[]): Provider[] {\r\n return [\r\n // 路由守卫配置\r\n { provide: RK_ROUTER_GUARD_CONFIG, useValue: urls },\r\n ];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAuthGuard implements CanActivateChild {\r\n constructor(\r\n @Inject(RK_ROUTER_GUARD_CONFIG) private config: IRouterGuardConfig[],\r\n private menu: RkMenuService,\r\n private router: Router,\r\n ) {}\r\n\r\n canActivateChild(\r\n childRoute: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return this.menu.requestData().pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n map((menus) => this.checkAccess(menus, childRoute, state.url)),\r\n catchError(() => {\r\n this.handleNoAccess(state.url);\r\n return [false];\r\n }),\r\n );\r\n }\r\n\r\n private checkAccess(menus: any[], childRoute: ActivatedRouteSnapshot, url: string): boolean | UrlTree {\r\n if (!menus.length) {\r\n throw new Error(`此账号无任何功能权限.`);\r\n }\r\n\r\n const routerUrl = url.replace(/\\?.*/, '');\r\n const authRoutes = new Set<string>(menus.map((m) => m.SYSTEM_RESOURCE_URL));\r\n\r\n if (authRoutes.has(routerUrl)) {\r\n return true;\r\n }\r\n\r\n if (this.config && this.config.length > 0) {\r\n const extendRoutes = this.config.filter((item) => {\r\n return item.extends.some((route: string) => (route.includes('**') ? this.match(route, routerUrl) : route === routerUrl));\r\n });\r\n if (extendRoutes.length > 0) {\r\n return extendRoutes.some((item) => authRoutes.has(item.url));\r\n }\r\n }\r\n\r\n this.handleNoAccess(url);\r\n return false;\r\n }\r\n\r\n private match(pattern: string, path: string): boolean {\r\n const regexPattern = pattern.replace(/\\*\\*/g, '.*');\r\n return new RegExp(`^${regexPattern}$`).test(path);\r\n }\r\n\r\n private handleNoAccess(url: string): void {\r\n console.error(`无权限访问路由地址: ${url}`);\r\n this.router.navigate(['/errors/401']).then();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}