@lanaqi/rsr 0.0.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/access/aaa.d.ts +177 -0
- package/dist/access/addon.d.ts +92 -0
- package/dist/access/blocker.d.ts +94 -0
- package/dist/access/common.d.ts +63 -0
- package/dist/access/context.d.ts +162 -0
- package/dist/access/guarder.d.ts +173 -0
- package/dist/access/handler.d.ts +183 -0
- package/dist/access/index.d.ts +56 -0
- package/dist/access/manager.d.ts +109 -0
- package/dist/access/matcher.d.ts +70 -0
- package/dist/access/navigator.d.ts +33 -0
- package/dist/access/recorder.d.ts +291 -0
- package/dist/access/resource.d.ts +215 -0
- package/dist/access/storer.d.ts +197 -0
- package/dist/access/voter.d.ts +156 -0
- package/dist/addons/index.d.ts +4 -0
- package/dist/addons/micro.d.ts +53 -0
- package/dist/bridge.d.ts +8 -0
- package/dist/builder/blocker.d.ts +24 -0
- package/dist/builder/builder.d.ts +9 -0
- package/dist/builder/context.d.ts +112 -0
- package/dist/builder/guarder.d.ts +54 -0
- package/dist/builder/handler.d.ts +21 -0
- package/dist/builder/index.d.ts +48 -0
- package/dist/builder/manager.d.ts +55 -0
- package/dist/builder/matcher.d.ts +37 -0
- package/dist/builder/navigator.d.ts +22 -0
- package/dist/builder/recorder.d.ts +11 -0
- package/dist/builder/resource.d.ts +101 -0
- package/dist/builder/storer.d.ts +83 -0
- package/dist/builder/voter.d.ts +41 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +1778 -0
- package/dist/security/blocker.d.ts +14 -0
- package/dist/security/index.d.ts +8 -0
- package/dist/security/provider.d.ts +31 -0
- package/dist/support/aaa.d.ts +29 -0
- package/dist/support/blocker.d.ts +28 -0
- package/dist/support/index.d.ts +20 -0
- package/dist/support/permission.d.ts +5 -0
- package/dist/support/signature.d.ts +21 -0
- package/dist/support/user.d.ts +14 -0
- package/dist/warpper/index.d.ts +4 -0
- package/dist/warpper/permission.d.ts +24 -0
- package/package.json +74 -0
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# React Security Router
|
|
2
|
+
|
|
3
|
+
React 安全路由器
|
|
4
|
+
|
|
5
|
+
# 框架说明
|
|
6
|
+
|
|
7
|
+
rsr 是 react security router 的简写,一个基于 react router 实现路由级别控制的安全框架。
|
|
8
|
+
|
|
9
|
+
功能简介:
|
|
10
|
+
|
|
11
|
+
- 认证与授权
|
|
12
|
+
- 权限检测
|
|
13
|
+
- 二次签证(签名:如要求再次输入密码等)
|
|
14
|
+
- 等等
|
|
15
|
+
|
|
16
|
+
# 版本兼容
|
|
17
|
+
|
|
18
|
+
注意:不兼容 react router 7 版本,在 v7 😒 版本上的 `useBlocker` 逻辑变更了,暂时不考虑兼容。
|
|
19
|
+
|
|
20
|
+
# 简单例子
|
|
21
|
+
|
|
22
|
+
``` tsx
|
|
23
|
+
|
|
24
|
+
export default withSecurityBlocker(Root, bundler => {
|
|
25
|
+
return bundler
|
|
26
|
+
.context(builder => {
|
|
27
|
+
return builder
|
|
28
|
+
// 可选层级权限
|
|
29
|
+
// .hierarchy('superadmin>admin;admin>users;users>guest')
|
|
30
|
+
.resource(rb => rb.patterns('/login', '/logout', '/denied', '/signature').anonymous().build())
|
|
31
|
+
.resource(rb => rb.patterns('/sheet').permissions('admin').signatured().build())
|
|
32
|
+
.resource(rb => rb.patterns('/*').authenticated().build())
|
|
33
|
+
.build();
|
|
34
|
+
})
|
|
35
|
+
.manager(builder => {
|
|
36
|
+
return builder
|
|
37
|
+
.behave({
|
|
38
|
+
notAuthenticationPath: '/login',
|
|
39
|
+
notSignaturePath: '/signature',
|
|
40
|
+
accessDeniedPath: '/denied',
|
|
41
|
+
})
|
|
42
|
+
.build();
|
|
43
|
+
})
|
|
44
|
+
// .addons()
|
|
45
|
+
.build()
|
|
46
|
+
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
```
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import type { AccessPermission, AccessPermissions } from './common';
|
|
2
|
+
/**
|
|
3
|
+
* 访问认证
|
|
4
|
+
*/
|
|
5
|
+
export interface AccessAuthentication {
|
|
6
|
+
/**
|
|
7
|
+
* 是否已认证
|
|
8
|
+
*/
|
|
9
|
+
isAuthenticated(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* 设置已认证
|
|
12
|
+
* @param authenticated 已认证
|
|
13
|
+
*/
|
|
14
|
+
setAuthenticated(authenticated: boolean): void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 访问授权
|
|
18
|
+
*/
|
|
19
|
+
export interface AccessAuthorization {
|
|
20
|
+
/**
|
|
21
|
+
* 获取权限集合
|
|
22
|
+
*/
|
|
23
|
+
getPermissions(): Set<AccessPermission>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 访问数据表
|
|
27
|
+
*/
|
|
28
|
+
export interface AccessDatasheet<Datasheet> {
|
|
29
|
+
/**
|
|
30
|
+
* 获取数据表
|
|
31
|
+
*/
|
|
32
|
+
getDatasheet(): Datasheet;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 认证数据表
|
|
36
|
+
*/
|
|
37
|
+
export type AuthenticationDatasheet<P = unknown> = P & {
|
|
38
|
+
/**
|
|
39
|
+
* 已认证
|
|
40
|
+
*/
|
|
41
|
+
readonly authenticated: boolean;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* 授权数据表
|
|
45
|
+
*/
|
|
46
|
+
export type AuthorizationDatasheet<P = unknown> = P & {
|
|
47
|
+
/**
|
|
48
|
+
* 权限集合
|
|
49
|
+
*/
|
|
50
|
+
readonly permissions: AccessPermissions | Set<AccessPermission>;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* 用户数据表
|
|
54
|
+
*/
|
|
55
|
+
export type UserDatasheet<P = unknown> = P & AuthenticationDatasheet<P> & AuthorizationDatasheet<P> & {
|
|
56
|
+
/**
|
|
57
|
+
* 无效的
|
|
58
|
+
*/
|
|
59
|
+
readonly invalid?: boolean;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* 简单认证
|
|
63
|
+
*/
|
|
64
|
+
export declare class SimpleAuthentication<Datasheet> implements AccessAuthentication, AccessDatasheet<AuthenticationDatasheet<Datasheet>> {
|
|
65
|
+
/**
|
|
66
|
+
* 数据表
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
private readonly datasheet;
|
|
70
|
+
/**
|
|
71
|
+
* 已认证
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
private authenticated;
|
|
75
|
+
/**
|
|
76
|
+
* 构造函数
|
|
77
|
+
* @param datasheet 数据表
|
|
78
|
+
*/
|
|
79
|
+
constructor(datasheet: AuthenticationDatasheet<Datasheet>);
|
|
80
|
+
/**
|
|
81
|
+
* 是否已认证
|
|
82
|
+
*/
|
|
83
|
+
isAuthenticated(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* 设置已认证
|
|
86
|
+
* @param authenticated 已认证
|
|
87
|
+
*/
|
|
88
|
+
setAuthenticated(authenticated: boolean): void;
|
|
89
|
+
/**
|
|
90
|
+
* 获取数据表
|
|
91
|
+
*/
|
|
92
|
+
getDatasheet(): AuthenticationDatasheet<Datasheet>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 简单授权
|
|
96
|
+
*/
|
|
97
|
+
export declare class SimpleAuthorization<Datasheet> implements AccessAuthorization, AccessDatasheet<AuthorizationDatasheet<Datasheet>> {
|
|
98
|
+
/**
|
|
99
|
+
* 数据表
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
private readonly datasheet;
|
|
103
|
+
/**
|
|
104
|
+
* 权限集合
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
private readonly permissions;
|
|
108
|
+
/**
|
|
109
|
+
* 构造函数
|
|
110
|
+
* @param datasheet 数据表
|
|
111
|
+
*/
|
|
112
|
+
constructor(datasheet: AuthorizationDatasheet<Datasheet>);
|
|
113
|
+
/**
|
|
114
|
+
* 获取权限集合
|
|
115
|
+
*/
|
|
116
|
+
getPermissions(): Set<AccessPermission>;
|
|
117
|
+
/**
|
|
118
|
+
* 获取数据表
|
|
119
|
+
*/
|
|
120
|
+
getDatasheet(): AuthorizationDatasheet<Datasheet>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 简单用户
|
|
124
|
+
*/
|
|
125
|
+
export declare class SimpleUser<Datasheet> implements AccessAuthentication, AccessAuthorization, AccessDatasheet<UserDatasheet<Datasheet>> {
|
|
126
|
+
/**
|
|
127
|
+
* 数据表
|
|
128
|
+
* @private
|
|
129
|
+
*/
|
|
130
|
+
private readonly datasheet;
|
|
131
|
+
/**
|
|
132
|
+
* 权限集合
|
|
133
|
+
* @private
|
|
134
|
+
*/
|
|
135
|
+
private readonly permissions;
|
|
136
|
+
/**
|
|
137
|
+
* 已认证
|
|
138
|
+
* @private
|
|
139
|
+
*/
|
|
140
|
+
private authenticated;
|
|
141
|
+
/**
|
|
142
|
+
* 无效的
|
|
143
|
+
* @private
|
|
144
|
+
*/
|
|
145
|
+
private invalid;
|
|
146
|
+
/**
|
|
147
|
+
* 构造函数
|
|
148
|
+
* @param datasheet 数据表
|
|
149
|
+
*/
|
|
150
|
+
constructor(datasheet: UserDatasheet<Datasheet>);
|
|
151
|
+
/**
|
|
152
|
+
* 是否已认证
|
|
153
|
+
*/
|
|
154
|
+
isAuthenticated(): boolean;
|
|
155
|
+
/**
|
|
156
|
+
* 设置已认证
|
|
157
|
+
* @param authenticated 已认证
|
|
158
|
+
*/
|
|
159
|
+
setAuthenticated(authenticated: boolean): void;
|
|
160
|
+
/**
|
|
161
|
+
* 获取权限集合
|
|
162
|
+
*/
|
|
163
|
+
getPermissions(): Set<AccessPermission>;
|
|
164
|
+
/**
|
|
165
|
+
* 获取数据表
|
|
166
|
+
*/
|
|
167
|
+
getDatasheet(): UserDatasheet<Datasheet>;
|
|
168
|
+
/**
|
|
169
|
+
* 是否无效的
|
|
170
|
+
*/
|
|
171
|
+
isInvalid(): boolean;
|
|
172
|
+
/**
|
|
173
|
+
* 设置无效的
|
|
174
|
+
* @param invalid 无效的
|
|
175
|
+
*/
|
|
176
|
+
setInvalid(invalid: boolean): void;
|
|
177
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { AccessDecision, AccessPath } from './common';
|
|
2
|
+
import type { AccessContext } from './context';
|
|
3
|
+
import type { AccessManager } from './manager';
|
|
4
|
+
import type { AccessResource } from './resource';
|
|
5
|
+
/**
|
|
6
|
+
* 访问插件
|
|
7
|
+
*/
|
|
8
|
+
export interface AccessAddon {
|
|
9
|
+
/**
|
|
10
|
+
* 守护之前
|
|
11
|
+
* @param context 上下文
|
|
12
|
+
* @param manager 管理器
|
|
13
|
+
* @param currentPath 当前路径
|
|
14
|
+
* @param currentResource 当前资源
|
|
15
|
+
*/
|
|
16
|
+
guardBefore(context: AccessContext, manager: AccessManager, currentPath: AccessPath, currentResource: AccessResource | null): void;
|
|
17
|
+
/**
|
|
18
|
+
* 守护之后
|
|
19
|
+
* @param context 上下文
|
|
20
|
+
* @param manager 管理器
|
|
21
|
+
* @param currentPath 当前路径
|
|
22
|
+
* @param currentResource 当前资源
|
|
23
|
+
* @param currentDecision 当前决策
|
|
24
|
+
*/
|
|
25
|
+
guardAfter(context: AccessContext, manager: AccessManager, currentPath: AccessPath, currentResource: AccessResource | null, currentDecision: AccessDecision): void;
|
|
26
|
+
/**
|
|
27
|
+
* 许可之前
|
|
28
|
+
* @param context 上下文
|
|
29
|
+
* @param manager 管理器
|
|
30
|
+
* @param stayPath 停留路径
|
|
31
|
+
* @param blockPath 阻断路径
|
|
32
|
+
* @param stayResource 停留资源
|
|
33
|
+
* @param blockResource 阻断资源
|
|
34
|
+
*/
|
|
35
|
+
permitBefore(context: AccessContext, manager: AccessManager, stayPath: AccessPath, blockPath: AccessPath, stayResource: AccessResource | null, blockResource: AccessResource | null): void;
|
|
36
|
+
/**
|
|
37
|
+
* 许可之后函数
|
|
38
|
+
* @param context 上下文
|
|
39
|
+
* @param manager 管理器
|
|
40
|
+
* @param stayPath 停留路径
|
|
41
|
+
* @param blockPath 阻断路径
|
|
42
|
+
* @param stayResource 停留资源
|
|
43
|
+
* @param blockResource 阻断资源
|
|
44
|
+
*/
|
|
45
|
+
permitAfter(context: AccessContext, manager: AccessManager, stayPath: AccessPath, blockPath: AccessPath, stayResource: AccessResource | null, blockResource: AccessResource | null): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 访问插件集合
|
|
49
|
+
*/
|
|
50
|
+
export type AccessAddons = AccessAddon[];
|
|
51
|
+
/**
|
|
52
|
+
* 抽象的访问插件
|
|
53
|
+
*/
|
|
54
|
+
export declare abstract class AbstractAddon implements AccessAddon {
|
|
55
|
+
/**
|
|
56
|
+
* 守护之前
|
|
57
|
+
* @param context 上下文
|
|
58
|
+
* @param manager 管理器
|
|
59
|
+
* @param currentPath 当前路径
|
|
60
|
+
* @param currentResource 当前资源
|
|
61
|
+
*/
|
|
62
|
+
guardBefore(context: AccessContext, manager: AccessManager, currentPath: AccessPath, currentResource: AccessResource | null): void;
|
|
63
|
+
/**
|
|
64
|
+
* 守护之后
|
|
65
|
+
* @param context 上下文
|
|
66
|
+
* @param manager 管理器
|
|
67
|
+
* @param currentPath 当前路径
|
|
68
|
+
* @param currentResource 当前资源
|
|
69
|
+
* @param currentDecision 当前决策
|
|
70
|
+
*/
|
|
71
|
+
guardAfter(context: AccessContext, manager: AccessManager, currentPath: AccessPath, currentResource: AccessResource | null, currentDecision: AccessDecision): void;
|
|
72
|
+
/**
|
|
73
|
+
* 许可之前
|
|
74
|
+
* @param context 上下文
|
|
75
|
+
* @param manager 管理器
|
|
76
|
+
* @param stayPath 停留路径
|
|
77
|
+
* @param blockPath 阻断路径
|
|
78
|
+
* @param stayResource 停留资源
|
|
79
|
+
* @param blockResource 阻断资源
|
|
80
|
+
*/
|
|
81
|
+
permitBefore(context: AccessContext, manager: AccessManager, stayPath: AccessPath, blockPath: AccessPath, stayResource: AccessResource | null, blockResource: AccessResource | null): void;
|
|
82
|
+
/**
|
|
83
|
+
* 许可之后函数
|
|
84
|
+
* @param context 上下文
|
|
85
|
+
* @param manager 管理器
|
|
86
|
+
* @param stayPath 停留路径
|
|
87
|
+
* @param blockPath 阻断路径
|
|
88
|
+
* @param stayResource 停留资源
|
|
89
|
+
* @param blockResource 阻断资源
|
|
90
|
+
*/
|
|
91
|
+
permitAfter(context: AccessContext, manager: AccessManager, stayPath: AccessPath, blockPath: AccessPath, stayResource: AccessResource | null, blockResource: AccessResource | null): void;
|
|
92
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { AccessPath } from './common';
|
|
2
|
+
import type { AccessContext } from './context';
|
|
3
|
+
import type { AccessResource } from './resource';
|
|
4
|
+
/**
|
|
5
|
+
* 阻断处理器
|
|
6
|
+
* @param context 上下文
|
|
7
|
+
* @param currentPath 当前路径
|
|
8
|
+
* @param currentResource 当前资源
|
|
9
|
+
*/
|
|
10
|
+
export type BlockHandler = (context: AccessContext, currentPath: AccessPath, currentResource: AccessResource | null) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 访问阻断器
|
|
13
|
+
*/
|
|
14
|
+
export interface AccessBlocker {
|
|
15
|
+
/**
|
|
16
|
+
* 进行阻断
|
|
17
|
+
* @param context 上下文
|
|
18
|
+
* @param currentPath 当前路径
|
|
19
|
+
* @param currentResource 当前资源
|
|
20
|
+
*/
|
|
21
|
+
block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource | null): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 注册处理器
|
|
24
|
+
* @param handler 处理器
|
|
25
|
+
*/
|
|
26
|
+
register(handler: BlockHandler): void;
|
|
27
|
+
/**
|
|
28
|
+
* 注销处理器
|
|
29
|
+
* @param handler 处理器
|
|
30
|
+
*/
|
|
31
|
+
unregister(handler: BlockHandler): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 单一阻断器
|
|
35
|
+
*/
|
|
36
|
+
export declare class SingleBlocker implements AccessBlocker {
|
|
37
|
+
/**
|
|
38
|
+
* 处理器
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private handler?;
|
|
42
|
+
/**
|
|
43
|
+
* 进行阻断
|
|
44
|
+
* @param context 上下文
|
|
45
|
+
* @param currentPath 当前路径
|
|
46
|
+
* @param currentResource 当前资源
|
|
47
|
+
*/
|
|
48
|
+
block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* 注册处理器
|
|
51
|
+
* @param handler 处理器
|
|
52
|
+
*/
|
|
53
|
+
register(handler: BlockHandler): void;
|
|
54
|
+
/**
|
|
55
|
+
* 注销处理器
|
|
56
|
+
* @param handler 处理器
|
|
57
|
+
*/
|
|
58
|
+
unregister(handler: BlockHandler): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 多个阻断器
|
|
62
|
+
*/
|
|
63
|
+
export declare class MultiBlocker implements AccessBlocker {
|
|
64
|
+
/**
|
|
65
|
+
* 处理器集合
|
|
66
|
+
* @private
|
|
67
|
+
*/
|
|
68
|
+
private readonly handlers;
|
|
69
|
+
/**
|
|
70
|
+
* 构造函数
|
|
71
|
+
*/
|
|
72
|
+
constructor();
|
|
73
|
+
/**
|
|
74
|
+
* 进行阻断
|
|
75
|
+
* @param context 上下文
|
|
76
|
+
* @param currentPath 当前路径
|
|
77
|
+
* @param currentResource 当前资源
|
|
78
|
+
*/
|
|
79
|
+
block(context: AccessContext, currentPath: AccessPath, currentResource: AccessResource): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* 注册处理器
|
|
82
|
+
* @param handler 处理器
|
|
83
|
+
*/
|
|
84
|
+
register(handler: BlockHandler): void;
|
|
85
|
+
/**
|
|
86
|
+
* 注销处理器
|
|
87
|
+
* @param handler 处理器
|
|
88
|
+
*/
|
|
89
|
+
unregister(handler: BlockHandler): void;
|
|
90
|
+
/**
|
|
91
|
+
* 清理处理器集合
|
|
92
|
+
*/
|
|
93
|
+
clear(): void;
|
|
94
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Path } from '../bridge';
|
|
2
|
+
/**
|
|
3
|
+
* 访问路径
|
|
4
|
+
*/
|
|
5
|
+
export type AccessPath = Path;
|
|
6
|
+
/**
|
|
7
|
+
* 访问权限
|
|
8
|
+
*/
|
|
9
|
+
export type AccessPermission = string;
|
|
10
|
+
/**
|
|
11
|
+
* 访问权限集合
|
|
12
|
+
*/
|
|
13
|
+
export type AccessPermissions = AccessPermission[];
|
|
14
|
+
/**
|
|
15
|
+
* 访问决策
|
|
16
|
+
*/
|
|
17
|
+
export declare enum AccessDecision {
|
|
18
|
+
/**
|
|
19
|
+
* 没有资源
|
|
20
|
+
*/
|
|
21
|
+
notResource = "notResource",
|
|
22
|
+
/**
|
|
23
|
+
* 没有认证
|
|
24
|
+
*/
|
|
25
|
+
notAuthentication = "notAuthentication",
|
|
26
|
+
/**
|
|
27
|
+
* 无效认证
|
|
28
|
+
*/
|
|
29
|
+
invalidAuthentication = "invalidAuthentication",
|
|
30
|
+
/**
|
|
31
|
+
* 没有授权
|
|
32
|
+
*/
|
|
33
|
+
notAuthorization = "notAuthorization",
|
|
34
|
+
/**
|
|
35
|
+
* 没有签名
|
|
36
|
+
*/
|
|
37
|
+
notSignature = "notSignature",
|
|
38
|
+
/**
|
|
39
|
+
* 访问拒绝
|
|
40
|
+
*/
|
|
41
|
+
accessDenied = "accessDenied",
|
|
42
|
+
/**
|
|
43
|
+
* 允许访问
|
|
44
|
+
*/
|
|
45
|
+
allowAccess = "allowAccess"
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 访问行为
|
|
49
|
+
*/
|
|
50
|
+
export declare enum AccessBehave {
|
|
51
|
+
/**
|
|
52
|
+
* 什么都不做
|
|
53
|
+
*/
|
|
54
|
+
doNothing = "doNothing",
|
|
55
|
+
/**
|
|
56
|
+
* 跳转导航
|
|
57
|
+
*/
|
|
58
|
+
goNavigate = "goNavigate",
|
|
59
|
+
/**
|
|
60
|
+
* 重新决策
|
|
61
|
+
*/
|
|
62
|
+
reDecision = "reDecision"
|
|
63
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import type { AccessMatcher } from './matcher';
|
|
2
|
+
import type { AccessNavigator } from './navigator';
|
|
3
|
+
import type { AccessRecorder } from './recorder';
|
|
4
|
+
import type { AccessStorer } from './storer';
|
|
5
|
+
import type { AccessVoter } from './voter';
|
|
6
|
+
/**
|
|
7
|
+
* 访问上下文
|
|
8
|
+
*/
|
|
9
|
+
export interface AccessContext {
|
|
10
|
+
/**
|
|
11
|
+
* 获取记录器
|
|
12
|
+
*/
|
|
13
|
+
getRecorder(): AccessRecorder;
|
|
14
|
+
/**
|
|
15
|
+
* 设置记录器
|
|
16
|
+
* @param recorder 记录器
|
|
17
|
+
*/
|
|
18
|
+
setRecorder(recorder: AccessRecorder): void;
|
|
19
|
+
/**
|
|
20
|
+
* 获取投票器
|
|
21
|
+
*/
|
|
22
|
+
getVoter(): AccessVoter;
|
|
23
|
+
/**
|
|
24
|
+
* 设置投票器
|
|
25
|
+
* @param voter 投票器
|
|
26
|
+
*/
|
|
27
|
+
setVoter(voter: AccessVoter): void;
|
|
28
|
+
/**
|
|
29
|
+
* 获取存储器
|
|
30
|
+
*/
|
|
31
|
+
getStorer(): AccessStorer;
|
|
32
|
+
/**
|
|
33
|
+
* 设置存储器
|
|
34
|
+
* @param storer 存储器
|
|
35
|
+
*/
|
|
36
|
+
setStorer(storer: AccessStorer): void;
|
|
37
|
+
/**
|
|
38
|
+
* 获取匹配器
|
|
39
|
+
*/
|
|
40
|
+
getMatcher(): AccessMatcher;
|
|
41
|
+
/**
|
|
42
|
+
* 设置匹配器
|
|
43
|
+
* @param matcher 匹配器
|
|
44
|
+
*/
|
|
45
|
+
setMatcher(matcher: AccessMatcher): void;
|
|
46
|
+
/**
|
|
47
|
+
* 获取导航器
|
|
48
|
+
*/
|
|
49
|
+
getNavigator(): AccessNavigator;
|
|
50
|
+
/**
|
|
51
|
+
* 设置导航器
|
|
52
|
+
* @param navigator 导航器
|
|
53
|
+
*/
|
|
54
|
+
setNavigator(navigator: AccessNavigator): void;
|
|
55
|
+
/**
|
|
56
|
+
* 获取父级
|
|
57
|
+
*/
|
|
58
|
+
getParent(): AccessContext | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* 设置父级
|
|
61
|
+
* @param parent 父级
|
|
62
|
+
*/
|
|
63
|
+
setParent(parent: AccessContext): void;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 简单上下文
|
|
67
|
+
*/
|
|
68
|
+
export declare class SimpleContext implements AccessContext {
|
|
69
|
+
/**
|
|
70
|
+
* 记录器
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
private recorder;
|
|
74
|
+
/**
|
|
75
|
+
* 投票器
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
private voter;
|
|
79
|
+
/**
|
|
80
|
+
* 存储器
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
private storer;
|
|
84
|
+
/**
|
|
85
|
+
* 匹配器
|
|
86
|
+
* @private
|
|
87
|
+
*/
|
|
88
|
+
private matcher;
|
|
89
|
+
/**
|
|
90
|
+
* 导航器
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
93
|
+
private navigator;
|
|
94
|
+
/**
|
|
95
|
+
* 父级
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
private parent?;
|
|
99
|
+
/**
|
|
100
|
+
* 构造函数
|
|
101
|
+
* @param recorder 记录器
|
|
102
|
+
* @param voter 投票器
|
|
103
|
+
* @param storer 存储器
|
|
104
|
+
* @param matcher 匹配器
|
|
105
|
+
* @param navigator 导航器
|
|
106
|
+
*/
|
|
107
|
+
constructor(recorder: AccessRecorder, voter: AccessVoter, storer: AccessStorer, matcher: AccessMatcher, navigator: AccessNavigator);
|
|
108
|
+
/**
|
|
109
|
+
* 获取记录器
|
|
110
|
+
*/
|
|
111
|
+
getRecorder(): AccessRecorder;
|
|
112
|
+
/**
|
|
113
|
+
* 设置记录器
|
|
114
|
+
* @param recorder 记录器
|
|
115
|
+
*/
|
|
116
|
+
setRecorder(recorder: AccessRecorder): void;
|
|
117
|
+
/**
|
|
118
|
+
* 获取投票器
|
|
119
|
+
*/
|
|
120
|
+
getVoter(): AccessVoter;
|
|
121
|
+
/**
|
|
122
|
+
* 设置投票器
|
|
123
|
+
* @param voter 投票器
|
|
124
|
+
*/
|
|
125
|
+
setVoter(voter: AccessVoter): void;
|
|
126
|
+
/**
|
|
127
|
+
* 获取存储器
|
|
128
|
+
*/
|
|
129
|
+
getStorer(): AccessStorer;
|
|
130
|
+
/**
|
|
131
|
+
* 设置存储器
|
|
132
|
+
* @param storer 存储器
|
|
133
|
+
*/
|
|
134
|
+
setStorer(storer: AccessStorer): void;
|
|
135
|
+
/**
|
|
136
|
+
* 获取匹配器
|
|
137
|
+
*/
|
|
138
|
+
getMatcher(): AccessMatcher;
|
|
139
|
+
/**
|
|
140
|
+
* 设置匹配器
|
|
141
|
+
* @param matcher 匹配器
|
|
142
|
+
*/
|
|
143
|
+
setMatcher(matcher: AccessMatcher): void;
|
|
144
|
+
/**
|
|
145
|
+
* 获取导航器
|
|
146
|
+
*/
|
|
147
|
+
getNavigator(): AccessNavigator;
|
|
148
|
+
/**
|
|
149
|
+
* 设置导航器
|
|
150
|
+
* @param navigator 导航器
|
|
151
|
+
*/
|
|
152
|
+
setNavigator(navigator: AccessNavigator): void;
|
|
153
|
+
/**
|
|
154
|
+
* 获取父级
|
|
155
|
+
*/
|
|
156
|
+
getParent(): AccessContext | undefined;
|
|
157
|
+
/**
|
|
158
|
+
* 设置父级
|
|
159
|
+
* @param parent 父级
|
|
160
|
+
*/
|
|
161
|
+
setParent(parent?: AccessContext): void;
|
|
162
|
+
}
|