ez-react-antd 0.2.0 → 0.2.2
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/LICENSE +0 -0
- package/README.md +0 -0
- package/dist/ButtonAuth/ButtonAuth.d.ts +72 -0
- package/dist/ButtonAuth/ButtonAuth.d.ts.map +1 -0
- package/dist/ButtonAuth/index.d.ts +3 -0
- package/dist/ButtonAuth/index.d.ts.map +1 -0
- package/dist/ConfigProvider/ConfigProvider.d.ts +106 -0
- package/dist/ConfigProvider/ConfigProvider.d.ts.map +1 -0
- package/dist/ConfigProvider/defaults.d.ts +7 -0
- package/dist/ConfigProvider/defaults.d.ts.map +1 -0
- package/dist/ConfigProvider/index.d.ts +4 -145
- package/dist/ConfigProvider/index.d.ts.map +1 -1
- package/dist/ConfigProvider/types.d.ts +247 -0
- package/dist/ConfigProvider/types.d.ts.map +1 -0
- package/dist/ConfigProvider/utils.d.ts +123 -0
- package/dist/ConfigProvider/utils.d.ts.map +1 -0
- package/dist/ErrorPage/ErrorPage.d.ts +3 -1
- package/dist/ErrorPage/ErrorPage.d.ts.map +1 -1
- package/dist/IconSelect/IconShow/IconShow.d.ts.map +1 -1
- package/dist/NoFoundPage/NoFoundPage.d.ts +3 -1
- package/dist/NoFoundPage/NoFoundPage.d.ts.map +1 -1
- package/dist/NotAuthorizedPage/NotAuthorizedPage.d.ts +3 -1
- package/dist/NotAuthorizedPage/NotAuthorizedPage.d.ts.map +1 -1
- package/dist/RemoteSelect/RemoteSelect.d.ts +13 -0
- package/dist/RemoteSelect/RemoteSelect.d.ts.map +1 -1
- package/dist/RemoteTree/RemoteTree.d.ts +9 -3
- package/dist/RemoteTree/RemoteTree.d.ts.map +1 -1
- package/dist/SearchBar/SearchBar.d.ts +8 -2
- package/dist/SearchBar/SearchBar.d.ts.map +1 -1
- package/dist/TableActions/ActionButton/ActionButton.d.ts +20 -3
- package/dist/TableActions/ActionButton/ActionButton.d.ts.map +1 -1
- package/dist/TableActions/TableActions.d.ts +44 -24
- package/dist/TableActions/TableActions.d.ts.map +1 -1
- package/dist/ez-react-antd.es.js +4532 -4343
- package/dist/hoc/withAuth.d.ts +27 -0
- package/dist/hoc/withAuth.d.ts.map +1 -0
- package/dist/hoc/withEzAntdConfig.d.ts +53 -0
- package/dist/hoc/withEzAntdConfig.d.ts.map +1 -0
- package/dist/hoc/withRedux.d.ts +31 -0
- package/dist/hoc/withRedux.d.ts.map +1 -0
- package/dist/hoc/withRoute.d.ts +19 -1
- package/dist/hoc/withRoute.d.ts.map +1 -1
- package/dist/hoc/withRouteAuth.d.ts +60 -0
- package/dist/hoc/withRouteAuth.d.ts.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/package.json +15 -13
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
File without changes
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 按钮权限控制组件属性接口
|
|
4
|
+
*/
|
|
5
|
+
export interface ButtonAuthProps {
|
|
6
|
+
/** 按钮编码,用于查询所需权限 */
|
|
7
|
+
code: string;
|
|
8
|
+
/** 子组件 */
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 按钮权限控制组件
|
|
13
|
+
* 根据按钮编码从配置中查询所需权限,并验证用户是否拥有该权限
|
|
14
|
+
*
|
|
15
|
+
* 权限验证规则:
|
|
16
|
+
* - 未配置 - 默认不需要登录和授权,可以公开显示
|
|
17
|
+
* - requiresAuthentication: false - 公开显示,不需要登录
|
|
18
|
+
* - requiresAuthentication: true + permissionIds: undefined - 需要登录,不需要权限
|
|
19
|
+
* - requiresAuthentication: true + permissionIds: string/array - 需要登录且需要权限
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // 基本用法 - 需要权限
|
|
23
|
+
* <ButtonAuth code="user.create">
|
|
24
|
+
* <Button>创建用户</Button>
|
|
25
|
+
* </ButtonAuth>
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // 多个权限(满足任一即可)
|
|
29
|
+
* // 配置: getButtonPermissions: () => ({
|
|
30
|
+
* // 'user.delete': {
|
|
31
|
+
* // requiresAuthentication: true,
|
|
32
|
+
* // permissionIds: ['user.delete', 'user.manage']
|
|
33
|
+
* // }
|
|
34
|
+
* // })
|
|
35
|
+
* <ButtonAuth code="user.delete">
|
|
36
|
+
* <Button>删除用户</Button>
|
|
37
|
+
* </ButtonAuth>
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* // 配合 ConfigProvider 使用(函数形式)
|
|
41
|
+
* <ConfigProvider value={{
|
|
42
|
+
* getButtonPermissions: () => {
|
|
43
|
+
* // 从 sessionStorage 动态获取
|
|
44
|
+
* const cached = sessionStorage.getItem('buttonPermissions');
|
|
45
|
+
* return cached ? JSON.parse(cached) : {
|
|
46
|
+
* 'user.create': {
|
|
47
|
+
* requiresAuthentication: true,
|
|
48
|
+
* permissionIds: 'user.create'
|
|
49
|
+
* },
|
|
50
|
+
* 'user.delete': {
|
|
51
|
+
* requiresAuthentication: true,
|
|
52
|
+
* permissionIds: ['user.delete', 'user.manage'] // 拥有任一权限即可
|
|
53
|
+
* },
|
|
54
|
+
* 'user.export': {
|
|
55
|
+
* requiresAuthentication: true // 需要登录,不需要权限
|
|
56
|
+
* },
|
|
57
|
+
* 'public.view': {
|
|
58
|
+
* requiresAuthentication: false // 公开显示
|
|
59
|
+
* }
|
|
60
|
+
* };
|
|
61
|
+
* },
|
|
62
|
+
* hasPermission: (permission) => checkPermission(permission),
|
|
63
|
+
* isAuthenticated: () => !!sessionStorage.getItem('token')
|
|
64
|
+
* }}>
|
|
65
|
+
* <ButtonAuth code="user.create">
|
|
66
|
+
* <Button>创建用户</Button>
|
|
67
|
+
* </ButtonAuth>
|
|
68
|
+
* </ConfigProvider>
|
|
69
|
+
*/
|
|
70
|
+
declare const ButtonAuth: React.FC<ButtonAuthProps>;
|
|
71
|
+
export default ButtonAuth;
|
|
72
|
+
//# sourceMappingURL=ButtonAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonAuth.d.ts","sourceRoot":"","sources":["../../src/ButtonAuth/ButtonAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgBzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ButtonAuth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { EzAntdConfig } from './types';
|
|
3
|
+
/** 全局配置 Context */
|
|
4
|
+
export declare const ConfigContext: React.Context<EzAntdConfig>;
|
|
5
|
+
/** 更新配置的方法类型 */
|
|
6
|
+
export type UpdateConfigFunction = (newConfig: Partial<EzAntdConfig>) => void;
|
|
7
|
+
/**
|
|
8
|
+
* 获取全局配置的 Hook
|
|
9
|
+
* @returns 全局配置对象
|
|
10
|
+
* @example
|
|
11
|
+
* const { request, responseIsSuccess } = useConfig();
|
|
12
|
+
*/
|
|
13
|
+
export declare const useConfig: () => EzAntdConfig;
|
|
14
|
+
/**
|
|
15
|
+
* 获取更新配置方法的 Hook
|
|
16
|
+
* @returns 更新配置的函数
|
|
17
|
+
* @example
|
|
18
|
+
* const updateConfig = useUpdateConfig();
|
|
19
|
+
* updateConfig({ buttonPermissions: {...} });
|
|
20
|
+
*/
|
|
21
|
+
export declare const useUpdateConfig: () => UpdateConfigFunction;
|
|
22
|
+
/**
|
|
23
|
+
* 全局配置提供者组件
|
|
24
|
+
* 用于为整个应用提供全局配置,支持动态更新配置
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* // 基本用法
|
|
28
|
+
* import { ConfigProvider } from 'ez-react-antd';
|
|
29
|
+
* import request from './utils/request';
|
|
30
|
+
* import session from './utils/session';
|
|
31
|
+
*
|
|
32
|
+
* <ConfigProvider value={{
|
|
33
|
+
* request: request,
|
|
34
|
+
* isAuthenticated: () => session.isAuthenticated(),
|
|
35
|
+
* hasPermission: (permission) => session.hasPermission(permission),
|
|
36
|
+
* hasRole: (role) => session.hasRole(role),
|
|
37
|
+
* loginPath: '/login',
|
|
38
|
+
* forbiddenPath: '/403',
|
|
39
|
+
* }}>
|
|
40
|
+
* <App />
|
|
41
|
+
* </ConfigProvider>
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* // 方案 1:应用启动时加载权限配置(适合已登录用户刷新页面)
|
|
45
|
+
* import { ConfigProvider } from 'ez-react-antd';
|
|
46
|
+
*
|
|
47
|
+
* <ConfigProvider value={{
|
|
48
|
+
* isAuthenticated: () => session.isAuthenticated(),
|
|
49
|
+
* hasPermission: (permission) => session.hasPermission(permission),
|
|
50
|
+
* // 使用函数形式,从 sessionStorage 动态获取
|
|
51
|
+
* getRoutePermissions: () => {
|
|
52
|
+
* const cached = sessionStorage.getItem('routePermissions');
|
|
53
|
+
* return cached ? JSON.parse(cached) : {};
|
|
54
|
+
* },
|
|
55
|
+
* getButtonPermissions: () => {
|
|
56
|
+
* const cached = sessionStorage.getItem('buttonPermissions');
|
|
57
|
+
* return cached ? JSON.parse(cached) : {};
|
|
58
|
+
* },
|
|
59
|
+
* }}>
|
|
60
|
+
* <App />
|
|
61
|
+
* </ConfigProvider>
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* // 方案 2:登录后保存权限配置到 sessionStorage
|
|
65
|
+
* import { useUpdateConfig } from 'ez-react-antd';
|
|
66
|
+
*
|
|
67
|
+
* function LoginPage() {
|
|
68
|
+
* const handleLogin = async (values) => {
|
|
69
|
+
* // 1. 登录
|
|
70
|
+
* await loginAPI(values);
|
|
71
|
+
*
|
|
72
|
+
* // 2. 加载权限配置
|
|
73
|
+
* const routePermissions = await loadRoutePermissions();
|
|
74
|
+
* const buttonPermissions = await loadButtonPermissions();
|
|
75
|
+
*
|
|
76
|
+
* // 3. 保存到 sessionStorage(页面刷新时可恢复)
|
|
77
|
+
* sessionStorage.setItem('routePermissions', JSON.stringify(routePermissions));
|
|
78
|
+
* sessionStorage.setItem('buttonPermissions', JSON.stringify(buttonPermissions));
|
|
79
|
+
*
|
|
80
|
+
* // 4. 跳转
|
|
81
|
+
* navigate('/dashboard');
|
|
82
|
+
* };
|
|
83
|
+
*
|
|
84
|
+
* return <LoginForm onSubmit={handleLogin} />;
|
|
85
|
+
* }
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* // 退出登录时清空权限配置
|
|
89
|
+
* function UserMenu() {
|
|
90
|
+
* const handleLogout = () => {
|
|
91
|
+
* session.clearUserInfo();
|
|
92
|
+
* sessionStorage.removeItem('routePermissions');
|
|
93
|
+
* sessionStorage.removeItem('buttonPermissions');
|
|
94
|
+
* navigate('/login');
|
|
95
|
+
* };
|
|
96
|
+
*
|
|
97
|
+
* return <Button onClick={handleLogout}>退出登录</Button>;
|
|
98
|
+
* }
|
|
99
|
+
*/
|
|
100
|
+
export declare const ConfigProvider: React.FC<{
|
|
101
|
+
/** 子组件 */
|
|
102
|
+
children: React.ReactNode;
|
|
103
|
+
/** 初始配置对象 */
|
|
104
|
+
value: EzAntdConfig;
|
|
105
|
+
}>;
|
|
106
|
+
//# sourceMappingURL=ConfigProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigProvider.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/ConfigProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,mBAAmB;AACnB,eAAO,MAAM,aAAa,6BAA6C,CAAC;AAExE,gBAAgB;AAChB,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;AAO9E;;;;;GAKG;AACH,eAAO,MAAM,SAAS,oBAAkC,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,4BAAwC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IACpC,UAAU;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa;IACb,KAAK,EAAE,YAAY,CAAC;CACrB,CAsBA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA+B,MAAM,SAAS,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,YAqC3B,CAAC"}
|
|
@@ -1,146 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export interface RequestConfig {
|
|
6
|
-
/** 请求头 */
|
|
7
|
-
headers?: {
|
|
8
|
-
[name: string]: string;
|
|
9
|
-
};
|
|
10
|
-
/** 其他配置项 */
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* 请求参数接口
|
|
15
|
-
*/
|
|
16
|
-
export interface RequestParam {
|
|
17
|
-
[name: string]: any;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Axios 响应接口
|
|
21
|
-
* 模拟 Axios 的响应结构
|
|
22
|
-
*/
|
|
23
|
-
export interface AxiosResponse<T = any> {
|
|
24
|
-
/** 响应数据 */
|
|
25
|
-
data: T;
|
|
26
|
-
/** HTTP 状态码 */
|
|
27
|
-
status: number;
|
|
28
|
-
/** HTTP 状态文本 */
|
|
29
|
-
statusText: string;
|
|
30
|
-
/** 原始请求对象 */
|
|
31
|
-
request?: any;
|
|
32
|
-
/** 其他属性 */
|
|
33
|
-
[key: string]: any;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* 请求方法接口
|
|
37
|
-
* 定义基本的 HTTP 请求方法
|
|
38
|
-
*/
|
|
39
|
-
export interface Request {
|
|
40
|
-
/**
|
|
41
|
-
* GET 请求
|
|
42
|
-
* @param url 请求 URL
|
|
43
|
-
* @param params 查询参数
|
|
44
|
-
* @param config 请求配置
|
|
45
|
-
* @returns Promise 响应
|
|
46
|
-
*/
|
|
47
|
-
getRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
48
|
-
/**
|
|
49
|
-
* PUT 请求
|
|
50
|
-
* @param url 请求 URL
|
|
51
|
-
* @param data 请求体数据
|
|
52
|
-
* @param config 请求配置
|
|
53
|
-
* @returns Promise 响应
|
|
54
|
-
*/
|
|
55
|
-
putRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
56
|
-
/**
|
|
57
|
-
* DELETE 请求
|
|
58
|
-
* @param url 请求 URL
|
|
59
|
-
* @param params 查询参数
|
|
60
|
-
* @param config 请求配置
|
|
61
|
-
* @returns Promise 响应
|
|
62
|
-
*/
|
|
63
|
-
deleteRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
64
|
-
/**
|
|
65
|
-
* POST 请求
|
|
66
|
-
* @param url 请求 URL
|
|
67
|
-
* @param data 请求体数据
|
|
68
|
-
* @param config 请求配置
|
|
69
|
-
* @returns Promise 响应
|
|
70
|
-
*/
|
|
71
|
-
postRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* EzAntd 全局配置接口
|
|
75
|
-
* 用于配置组件库的全局行为
|
|
76
|
-
*/
|
|
77
|
-
export interface EzAntdConfig {
|
|
78
|
-
/** 全局请求方法对象,提供 GET/POST/PUT/DELETE 方法 */
|
|
79
|
-
request?: Request;
|
|
80
|
-
/**
|
|
81
|
-
* 判断请求响应是否成功
|
|
82
|
-
* @param response 响应对象
|
|
83
|
-
* @returns 是否成功
|
|
84
|
-
*/
|
|
85
|
-
responseIsSuccess?: (response: any) => boolean;
|
|
86
|
-
/**
|
|
87
|
-
* 文件上传方法
|
|
88
|
-
* @param url 上传 URL
|
|
89
|
-
* @param formData 表单数据
|
|
90
|
-
* @returns Promise 响应
|
|
91
|
-
*/
|
|
92
|
-
upload?: (url: string, formData: FormData) => Promise<any>;
|
|
93
|
-
/**
|
|
94
|
-
* 判断用户是否已登录
|
|
95
|
-
* @returns 是否已登录
|
|
96
|
-
*/
|
|
97
|
-
isAuthenticated?: () => boolean;
|
|
98
|
-
/**
|
|
99
|
-
* 判断是否拥有权限
|
|
100
|
-
* @param permission 权限标识,支持单个权限、权限数组、undefined 或 null
|
|
101
|
-
* @returns 是否拥有权限
|
|
102
|
-
*/
|
|
103
|
-
hasPermission?: (permission: string | string[] | undefined | null) => boolean;
|
|
104
|
-
/**
|
|
105
|
-
* 判断是否拥有角色
|
|
106
|
-
* @param role 角色标识,支持单个角色、角色数组、undefined 或 null
|
|
107
|
-
* @returns 是否拥有角色
|
|
108
|
-
*/
|
|
109
|
-
hasRole?: (role: string | string[] | undefined | null) => boolean;
|
|
110
|
-
}
|
|
111
|
-
/** 全局配置 Context */
|
|
112
|
-
export declare const ConfigContext: React.Context<EzAntdConfig>;
|
|
113
|
-
/**
|
|
114
|
-
* 获取全局配置的 Hook
|
|
115
|
-
* @returns 全局配置对象
|
|
116
|
-
* @example
|
|
117
|
-
* const { request, responseIsSuccess } = useConfig();
|
|
118
|
-
*/
|
|
119
|
-
export declare const useConfig: () => EzAntdConfig;
|
|
120
|
-
/**
|
|
121
|
-
* 全局配置提供者组件
|
|
122
|
-
* 用于为整个应用提供全局配置
|
|
123
|
-
*
|
|
124
|
-
* @example
|
|
125
|
-
* import { ConfigProvider } from 'ez-react-antd';
|
|
126
|
-
* import request from './utils/request';
|
|
127
|
-
* import { isAuthenticated, hasPermission, hasRole } from './utils/auth';
|
|
128
|
-
*
|
|
129
|
-
* <ConfigProvider value={{
|
|
130
|
-
* request: request,
|
|
131
|
-
* responseIsSuccess: (res) => res.status === 200 && res.data.code === 0,
|
|
132
|
-
* upload: (url, formData) => request.postRequest(url, formData),
|
|
133
|
-
* isAuthenticated: () => isAuthenticated(),
|
|
134
|
-
* hasPermission: (permission) => hasPermission(permission),
|
|
135
|
-
* hasRole: (role) => hasRole(role)
|
|
136
|
-
* }}>
|
|
137
|
-
* <App />
|
|
138
|
-
* </ConfigProvider>
|
|
139
|
-
*/
|
|
140
|
-
export declare const ConfigProvider: React.FC<{
|
|
141
|
-
/** 子组件 */
|
|
142
|
-
children: React.ReactNode;
|
|
143
|
-
/** 配置对象 */
|
|
144
|
-
value: EzAntdConfig;
|
|
145
|
-
}>;
|
|
1
|
+
export type { RequestConfig, RequestParam, AxiosResponse, Request, EzAntdConfig, RoutePermissionMap, ButtonPermissionMap, } from './types';
|
|
2
|
+
export { defaultConfig } from './defaults';
|
|
3
|
+
export { ConfigProvider, ConfigContext, useConfig, useUpdateConfig, type UpdateConfigFunction } from './ConfigProvider';
|
|
4
|
+
export { getRoutePermission, getButtonPermission, getFirstAccessibleRoute, hasButtonPermission, hasRoutePermission } from './utils';
|
|
146
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/index.
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP 请求配置接口
|
|
3
|
+
*/
|
|
4
|
+
export interface RequestConfig {
|
|
5
|
+
/** 请求头 */
|
|
6
|
+
headers?: {
|
|
7
|
+
[name: string]: string;
|
|
8
|
+
};
|
|
9
|
+
/** 其他配置项 */
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 请求参数接口
|
|
14
|
+
*/
|
|
15
|
+
export interface RequestParam {
|
|
16
|
+
[name: string]: any;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Axios 响应接口
|
|
20
|
+
* 模拟 Axios 的响应结构
|
|
21
|
+
*/
|
|
22
|
+
export interface AxiosResponse<T = any> {
|
|
23
|
+
/** 响应数据 */
|
|
24
|
+
data: T;
|
|
25
|
+
/** HTTP 状态码 */
|
|
26
|
+
status: number;
|
|
27
|
+
/** HTTP 状态文本 */
|
|
28
|
+
statusText: string;
|
|
29
|
+
/** 原始请求对象 */
|
|
30
|
+
request?: any;
|
|
31
|
+
/** 其他属性 */
|
|
32
|
+
[key: string]: any;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 请求方法接口
|
|
36
|
+
* 定义基本的 HTTP 请求方法
|
|
37
|
+
*/
|
|
38
|
+
export interface Request {
|
|
39
|
+
/**
|
|
40
|
+
* GET 请求
|
|
41
|
+
* @param url 请求 URL
|
|
42
|
+
* @param params 查询参数
|
|
43
|
+
* @param config 请求配置
|
|
44
|
+
* @returns Promise 响应
|
|
45
|
+
*/
|
|
46
|
+
getRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
47
|
+
/**
|
|
48
|
+
* PUT 请求
|
|
49
|
+
* @param url 请求 URL
|
|
50
|
+
* @param data 请求体数据
|
|
51
|
+
* @param config 请求配置
|
|
52
|
+
* @returns Promise 响应
|
|
53
|
+
*/
|
|
54
|
+
putRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
55
|
+
/**
|
|
56
|
+
* DELETE 请求
|
|
57
|
+
* @param url 请求 URL
|
|
58
|
+
* @param params 查询参数
|
|
59
|
+
* @param config 请求配置
|
|
60
|
+
* @returns Promise 响应
|
|
61
|
+
*/
|
|
62
|
+
deleteRequest: (url: string, params?: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
63
|
+
/**
|
|
64
|
+
* POST 请求
|
|
65
|
+
* @param url 请求 URL
|
|
66
|
+
* @param data 请求体数据
|
|
67
|
+
* @param config 请求配置
|
|
68
|
+
* @returns Promise 响应
|
|
69
|
+
*/
|
|
70
|
+
postRequest: (url: string, data: RequestParam, config?: RequestConfig) => Promise<AxiosResponse<any>>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 路由权限配置对象
|
|
74
|
+
*/
|
|
75
|
+
export interface RoutePermissionConfig {
|
|
76
|
+
/**
|
|
77
|
+
* 是否需要登录
|
|
78
|
+
* - true: 需要登录才能访问(默认值)
|
|
79
|
+
* - false: 不需要登录,公开访问
|
|
80
|
+
*/
|
|
81
|
+
requiresAuthentication: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* 所需权限 ID
|
|
84
|
+
* - string: 必须拥有该权限
|
|
85
|
+
* - string[]: 拥有其中任意一个权限即可
|
|
86
|
+
* - undefined: 不需要权限验证(但可能需要登录,取决于 requiresAuthentication)
|
|
87
|
+
*/
|
|
88
|
+
permissionIds?: string | string[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 路由权限映射配置
|
|
92
|
+
* 用于配置路由路径与所需权限的映射关系
|
|
93
|
+
*/
|
|
94
|
+
export interface RoutePermissionMap {
|
|
95
|
+
/**
|
|
96
|
+
* 路由路径到权限配置的映射
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* {
|
|
100
|
+
* '/login': {
|
|
101
|
+
* requiresAuthentication: false // 公开访问,不需要登录
|
|
102
|
+
* },
|
|
103
|
+
* '/public': {
|
|
104
|
+
* requiresAuthentication: false, // 公开访问
|
|
105
|
+
* permissionIds: undefined
|
|
106
|
+
* },
|
|
107
|
+
* '/dashboard': {
|
|
108
|
+
* requiresAuthentication: true, // 需要登录,不需要权限
|
|
109
|
+
* permissionIds: undefined
|
|
110
|
+
* },
|
|
111
|
+
* '/admin': {
|
|
112
|
+
* requiresAuthentication: true, // 需要登录 + 需要权限
|
|
113
|
+
* permissionIds: 'admin.view'
|
|
114
|
+
* },
|
|
115
|
+
* '/admin/users': {
|
|
116
|
+
* requiresAuthentication: true, // 需要登录 + 需要任一权限
|
|
117
|
+
* permissionIds: ['user.view', 'user.manage']
|
|
118
|
+
* }
|
|
119
|
+
* // 未配置的路由默认需要登录但不需要权限
|
|
120
|
+
* }
|
|
121
|
+
*/
|
|
122
|
+
[path: string]: undefined | RoutePermissionConfig;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* 按钮权限配置对象
|
|
126
|
+
*/
|
|
127
|
+
export interface ButtonPermissionConfig {
|
|
128
|
+
/**
|
|
129
|
+
* 是否需要登录
|
|
130
|
+
* - true: 需要登录才能显示(默认值)
|
|
131
|
+
* - false: 不需要登录,公开显示
|
|
132
|
+
*/
|
|
133
|
+
requiresAuthentication: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* 所需权限 ID
|
|
136
|
+
* - string: 必须拥有该权限
|
|
137
|
+
* - string[]: 拥有其中任意一个权限即可
|
|
138
|
+
* - undefined: 不需要权限验证(但可能需要登录,取决于 requiresAuthentication)
|
|
139
|
+
*/
|
|
140
|
+
permissionIds?: string | string[];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 按钮权限映射配置
|
|
144
|
+
* 用于配置按钮编码与所需权限的映射关系
|
|
145
|
+
*/
|
|
146
|
+
export interface ButtonPermissionMap {
|
|
147
|
+
/**
|
|
148
|
+
* 按钮编码到权限配置的映射
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* {
|
|
152
|
+
* 'user.create': {
|
|
153
|
+
* requiresAuthentication: true,
|
|
154
|
+
* permissionIds: 'user.create'
|
|
155
|
+
* },
|
|
156
|
+
* 'user.delete': {
|
|
157
|
+
* requiresAuthentication: true,
|
|
158
|
+
* permissionIds: ['user.delete', 'user.manage'] // 任一权限即可
|
|
159
|
+
* },
|
|
160
|
+
* 'user.export': {
|
|
161
|
+
* requiresAuthentication: true // 需要登录,不需要权限
|
|
162
|
+
* },
|
|
163
|
+
* 'public.view': {
|
|
164
|
+
* requiresAuthentication: false // 公开显示
|
|
165
|
+
* }
|
|
166
|
+
* // 未配置的按钮默认需要登录但不需要权限
|
|
167
|
+
* }
|
|
168
|
+
*/
|
|
169
|
+
[code: string]: undefined | ButtonPermissionConfig;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* EzAntd 全局配置接口
|
|
173
|
+
* 用于配置组件库的全局行为
|
|
174
|
+
*/
|
|
175
|
+
export interface EzAntdConfig {
|
|
176
|
+
/** 全局请求方法对象,提供 GET/POST/PUT/DELETE 方法 */
|
|
177
|
+
request?: Request;
|
|
178
|
+
/**
|
|
179
|
+
* 判断请求响应是否成功
|
|
180
|
+
* @param response 响应对象
|
|
181
|
+
* @returns 是否成功
|
|
182
|
+
*/
|
|
183
|
+
responseIsSuccess?: (response: any) => boolean;
|
|
184
|
+
/**
|
|
185
|
+
* 文件上传方法
|
|
186
|
+
* @param url 上传 URL
|
|
187
|
+
* @param formData 表单数据
|
|
188
|
+
* @returns Promise 响应
|
|
189
|
+
*/
|
|
190
|
+
upload?: (url: string, formData: FormData) => Promise<any>;
|
|
191
|
+
/**
|
|
192
|
+
* 判断用户是否已登录
|
|
193
|
+
* @returns 是否已登录
|
|
194
|
+
*/
|
|
195
|
+
isAuthenticated?: () => boolean;
|
|
196
|
+
/**
|
|
197
|
+
* 判断是否拥有权限
|
|
198
|
+
* @param permission 权限标识,支持单个权限、权限数组、undefined 或 null
|
|
199
|
+
* @returns 是否拥有权限
|
|
200
|
+
*/
|
|
201
|
+
hasPermission?: (permission: string | string[] | undefined | null) => boolean;
|
|
202
|
+
/**
|
|
203
|
+
* 判断是否拥有角色
|
|
204
|
+
* @param role 角色标识,支持单个角色、角色数组、undefined 或 null
|
|
205
|
+
* @returns 是否拥有角色
|
|
206
|
+
*/
|
|
207
|
+
hasRole?: (role: string | string[] | undefined | null) => boolean;
|
|
208
|
+
/**
|
|
209
|
+
* 获取路由权限映射配置(函数形式)
|
|
210
|
+
* 动态获取路由路径与所需权限的映射关系
|
|
211
|
+
* 使用函数形式可以避免页面刷新后配置丢失
|
|
212
|
+
*
|
|
213
|
+
* @returns 路由权限映射对象
|
|
214
|
+
* @example
|
|
215
|
+
* getRoutePermissions: () => {
|
|
216
|
+
* const cached = sessionStorage.getItem('routePermissions');
|
|
217
|
+
* return cached ? JSON.parse(cached) : {};
|
|
218
|
+
* }
|
|
219
|
+
*/
|
|
220
|
+
getRoutePermissions?: () => RoutePermissionMap;
|
|
221
|
+
/**
|
|
222
|
+
* 获取按钮权限映射配置(函数形式)
|
|
223
|
+
* 动态获取按钮编码与所需权限的映射关系
|
|
224
|
+
* 使用函数形式可以避免页面刷新后配置丢失
|
|
225
|
+
*
|
|
226
|
+
* @returns 按钮权限映射对象
|
|
227
|
+
* @example
|
|
228
|
+
* getButtonPermissions: () => {
|
|
229
|
+
* const cached = sessionStorage.getItem('buttonPermissions');
|
|
230
|
+
* return cached ? JSON.parse(cached) : {};
|
|
231
|
+
* }
|
|
232
|
+
*/
|
|
233
|
+
getButtonPermissions?: () => ButtonPermissionMap;
|
|
234
|
+
/**
|
|
235
|
+
* 登录页面路径
|
|
236
|
+
* 未登录时重定向到此路径
|
|
237
|
+
* @default '/login'
|
|
238
|
+
*/
|
|
239
|
+
loginPath?: string;
|
|
240
|
+
/**
|
|
241
|
+
* 无权限页面路径
|
|
242
|
+
* 没有权限时重定向到此路径
|
|
243
|
+
* @default '/403'
|
|
244
|
+
*/
|
|
245
|
+
forbiddenPath?: string;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ConfigProvider/types.ts"],"names":[],"mappings":"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"}
|