@reskin/core 0.0.15 → 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.
- package/bundles/reskin-core-guards.umd.js +35 -16
- package/bundles/reskin-core-guards.umd.js.map +1 -1
- package/bundles/reskin-core-services.umd.js.map +1 -1
- package/esm2015/guards/auth.guard.js +33 -18
- package/esm2015/services/app.config.js +1 -1
- package/fesm2015/reskin-core-guards.js +33 -18
- package/fesm2015/reskin-core-guards.js.map +1 -1
- package/fesm2015/reskin-core-services.js.map +1 -1
- package/guards/auth.guard.d.ts +27 -2
- package/package.json +1 -1
- package/services/app.config.d.ts +2 -14
|
@@ -26,8 +26,25 @@
|
|
|
26
26
|
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
|
|
27
27
|
var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* 路由守卫配置注入令牌
|
|
31
|
+
*/
|
|
32
|
+
var RK_ROUTER_GUARD_CONFIG = new i0.InjectionToken('router_guard_config');
|
|
33
|
+
/**
|
|
34
|
+
* 路由守卫提供者配置函数
|
|
35
|
+
*
|
|
36
|
+
* @param urls - 路由守卫配置数组,包含需要保护的路由配置信息
|
|
37
|
+
* @returns 返回Angular依赖注入的Provider数组,用于配置路由守卫
|
|
38
|
+
*/
|
|
39
|
+
function providerRouterGuard(urls) {
|
|
40
|
+
return [
|
|
41
|
+
// 路由守卫配置
|
|
42
|
+
{ provide: RK_ROUTER_GUARD_CONFIG, useValue: urls },
|
|
43
|
+
];
|
|
44
|
+
}
|
|
29
45
|
var RkAuthGuard = /** @class */ (function () {
|
|
30
|
-
function RkAuthGuard(menu, router) {
|
|
46
|
+
function RkAuthGuard(config, menu, router) {
|
|
47
|
+
this.config = config;
|
|
31
48
|
this.menu = menu;
|
|
32
49
|
this.router = router;
|
|
33
50
|
}
|
|
@@ -43,16 +60,17 @@
|
|
|
43
60
|
if (!menus.length) {
|
|
44
61
|
throw new Error("\u6B64\u8D26\u53F7\u65E0\u4EFB\u4F55\u529F\u80FD\u6743\u9650.");
|
|
45
62
|
}
|
|
46
|
-
var
|
|
63
|
+
var routerUrl = url.replace(/\?.*/, '');
|
|
47
64
|
var authRoutes = new Set(menus.map(function (m) { return m.SYSTEM_RESOURCE_URL; }));
|
|
48
|
-
if (authRoutes.has(
|
|
65
|
+
if (authRoutes.has(routerUrl)) {
|
|
49
66
|
return true;
|
|
50
67
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
68
|
+
if (this.config && this.config.length > 0) {
|
|
69
|
+
var extendRoutes = this.config.filter(function (item) {
|
|
70
|
+
return item.extends.some(function (route) { return (route.includes('**') ? _this.match(route, routerUrl) : route === routerUrl); });
|
|
71
|
+
});
|
|
72
|
+
if (extendRoutes.length > 0) {
|
|
73
|
+
return extendRoutes.some(function (item) { return authRoutes.has(item.url); });
|
|
56
74
|
}
|
|
57
75
|
}
|
|
58
76
|
this.handleNoAccess(url);
|
|
@@ -66,28 +84,29 @@
|
|
|
66
84
|
console.error("\u65E0\u6743\u9650\u8BBF\u95EE\u8DEF\u7531\u5730\u5740: " + url);
|
|
67
85
|
this.router.navigate(['/errors/401']).then();
|
|
68
86
|
};
|
|
69
|
-
RkAuthGuard.prototype.routeData = function (childRoute) {
|
|
70
|
-
if (childRoute.data && childRoute.data['extendAuth']) {
|
|
71
|
-
return childRoute.data;
|
|
72
|
-
}
|
|
73
|
-
return childRoute.parent ? this.routeData(childRoute.parent) : {};
|
|
74
|
-
};
|
|
75
87
|
return RkAuthGuard;
|
|
76
88
|
}());
|
|
77
|
-
RkAuthGuard.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: RkAuthGuard, deps: [{ token: i1__namespace.RkMenuService }, { token: i2__namespace.Router }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
89
|
+
RkAuthGuard.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: RkAuthGuard, deps: [{ token: RK_ROUTER_GUARD_CONFIG }, { token: i1__namespace.RkMenuService }, { token: i2__namespace.Router }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
|
|
78
90
|
RkAuthGuard.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: RkAuthGuard, providedIn: 'root' });
|
|
79
91
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: RkAuthGuard, decorators: [{
|
|
80
92
|
type: i0.Injectable,
|
|
81
93
|
args: [{
|
|
82
94
|
providedIn: 'root',
|
|
83
95
|
}]
|
|
84
|
-
}], ctorParameters: function () {
|
|
96
|
+
}], ctorParameters: function () {
|
|
97
|
+
return [{ type: undefined, decorators: [{
|
|
98
|
+
type: i0.Inject,
|
|
99
|
+
args: [RK_ROUTER_GUARD_CONFIG]
|
|
100
|
+
}] }, { type: i1__namespace.RkMenuService }, { type: i2__namespace.Router }];
|
|
101
|
+
} });
|
|
85
102
|
|
|
86
103
|
/**
|
|
87
104
|
* Generated bundle index. Do not edit.
|
|
88
105
|
*/
|
|
89
106
|
|
|
107
|
+
exports.RK_ROUTER_GUARD_CONFIG = RK_ROUTER_GUARD_CONFIG;
|
|
90
108
|
exports.RkAuthGuard = RkAuthGuard;
|
|
109
|
+
exports.providerRouterGuard = providerRouterGuard;
|
|
91
110
|
|
|
92
111
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
93
112
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reskin-core-guards.umd.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Injectable } 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@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 ) {}\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
|
|
1
|
+
{"version":3,"file":"reskin-core-guards.umd.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":["InjectionToken","filter","map","catchError","i0","i1","i2","Injectable","Inject"],"mappings":"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"}
|