sumor 3.1.7 → 3.2.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/dist/web/UrlHelper.js +1 -1
- package/dist/web/api/hasPermission.js +1 -1
- package/dist/web/api/hasRole.js +1 -1
- package/dist/web/api/login.js +1 -1
- package/dist/web/api/logout.js +2 -2
- package/dist/web/api/refreshToken.js +2 -2
- package/dist/web/axiosInstance.d.ts.map +1 -1
- package/dist/web/axiosInstance.js +4 -18
- package/dist/web/axiosInstance.js.map +1 -1
- package/dist/web/index.js +8 -8
- package/package.json +3 -3
package/dist/web/UrlHelper.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - hasPermission('posts', 'edit') 检查是否有 'posts:edit' 权限
|
|
9
9
|
* - hasPermission('posts', '*') 或 hasPermission('posts') 检查是否有任何 posts 权限
|
|
10
10
|
*/
|
|
11
|
-
import { oauthStore } from '../OAuthStore';
|
|
11
|
+
import { oauthStore } from '../OAuthStore.js';
|
|
12
12
|
export default function hasPermission(module, operation = '*') {
|
|
13
13
|
const user = oauthStore.getUser();
|
|
14
14
|
if (!user || !user.permissions) {
|
package/dist/web/api/hasRole.js
CHANGED
package/dist/web/api/login.js
CHANGED
package/dist/web/api/logout.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 登出:调用后端登出接口,撤销会话
|
|
3
3
|
*/
|
|
4
|
-
import { oauthStore } from '../OAuthStore';
|
|
5
|
-
import { axiosInstance } from '../axiosInstance';
|
|
4
|
+
import { oauthStore } from '../OAuthStore.js';
|
|
5
|
+
import { axiosInstance } from '../axiosInstance.js';
|
|
6
6
|
export default async function logout() {
|
|
7
7
|
try {
|
|
8
8
|
await axiosInstance.post('/api/oauth/logout', {}, { withCredentials: true });
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* 通过刷新 access token 接口获取 endpoint、authorizeUrl 和用户信息
|
|
4
4
|
* @param force 是否强制刷新,忽略缓存
|
|
5
5
|
*/
|
|
6
|
-
import { oauthStore } from '../OAuthStore';
|
|
7
|
-
import { axiosInstance } from '../axiosInstance';
|
|
6
|
+
import { oauthStore } from '../OAuthStore.js';
|
|
7
|
+
import { axiosInstance } from '../axiosInstance.js';
|
|
8
8
|
const CACHE_TTL = 3600000; // 1小时,单位毫秒
|
|
9
9
|
export default async function refreshToken(force = false) {
|
|
10
10
|
// SSR 环境下不执行刷新
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.d.ts","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,aAAa,EAAkC,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"axiosInstance.d.ts","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,aAAa,EAAkC,MAAM,OAAO,CAAA;AA2G5E,eAAO,MAAM,aAAa,eAAwB,CAAA"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 统一管理 HTTP 请求的拦截器和配置
|
|
4
4
|
*/
|
|
5
5
|
import axios from 'axios';
|
|
6
|
-
import { oauthStore } from './OAuthStore';
|
|
6
|
+
import { oauthStore } from './OAuthStore.js';
|
|
7
7
|
/**
|
|
8
8
|
* 创建 Axios 实例并配置拦截器
|
|
9
9
|
*/
|
|
@@ -25,16 +25,10 @@ function createAxiosInstance() {
|
|
|
25
25
|
return Promise.reject(error);
|
|
26
26
|
});
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* 响应拦截器:仅处理网络层错误,不处理业务逻辑
|
|
29
29
|
*/
|
|
30
30
|
instance.interceptors.response.use(response => {
|
|
31
|
-
|
|
32
|
-
if (data.code !== 'OK') {
|
|
33
|
-
const error = new Error(data.message || '请求失败');
|
|
34
|
-
error.code = data.code;
|
|
35
|
-
return Promise.reject(error);
|
|
36
|
-
}
|
|
37
|
-
return data.data !== undefined ? data.data : true;
|
|
31
|
+
return response;
|
|
38
32
|
}, async (error) => {
|
|
39
33
|
const originalRequest = error.config;
|
|
40
34
|
if (error.response?.status === 401 && originalRequest && !originalRequest._retry) {
|
|
@@ -78,15 +72,7 @@ function createAxiosInstance() {
|
|
|
78
72
|
});
|
|
79
73
|
}
|
|
80
74
|
}
|
|
81
|
-
|
|
82
|
-
const data = error.response.data;
|
|
83
|
-
const err = new Error(data.message || error.message || '请求失败');
|
|
84
|
-
err.code = data.code || 'REQUEST_FAILED';
|
|
85
|
-
return Promise.reject(err);
|
|
86
|
-
}
|
|
87
|
-
const err = new Error(error.message || '网络错误');
|
|
88
|
-
err.code = 'NETWORK_ERROR';
|
|
89
|
-
return Promise.reject(err);
|
|
75
|
+
return Promise.reject(error);
|
|
90
76
|
});
|
|
91
77
|
return instance;
|
|
92
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAwD,MAAM,OAAO,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAkBzC;;GAEG;AACH,SAAS,mBAAmB;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,OAAO,EAAE;YACP,cAAc,EAAE,gCAAgC;SACjD;QACD,eAAe,EAAE,IAAI;KACtB,CAAC,CAAA;IAEF;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,EAAE;QACP,OAAO,MAAM,CAAA;IACf,CAAC,EACD,KAAK,CAAC,EAAE;QACN,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC,CACF,CAAA;IAED;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAChC,QAAQ,CAAC,EAAE;QACT,
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../web/axiosInstance.ts"],"names":[],"mappings":"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"}
|
package/dist/web/index.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Sumor Framework - 轻呈云客户端 API
|
|
3
3
|
*/
|
|
4
4
|
// 导出所有 API 函数
|
|
5
|
-
export { default as refreshToken } from './api/refreshToken';
|
|
6
|
-
export { default as login } from './api/login';
|
|
7
|
-
export { default as logout } from './api/logout';
|
|
8
|
-
export { default as hasPermission } from './api/hasPermission';
|
|
9
|
-
export { default as hasRole } from './api/hasRole';
|
|
5
|
+
export { default as refreshToken } from './api/refreshToken.js';
|
|
6
|
+
export { default as login } from './api/login.js';
|
|
7
|
+
export { default as logout } from './api/logout.js';
|
|
8
|
+
export { default as hasPermission } from './api/hasPermission.js';
|
|
9
|
+
export { default as hasRole } from './api/hasRole.js';
|
|
10
10
|
// 导出其他工具
|
|
11
|
-
export { oauthUrl } from './UrlHelper';
|
|
12
|
-
export { oauthStore } from './OAuthStore';
|
|
13
|
-
export { axiosInstance as axios } from './axiosInstance';
|
|
11
|
+
export { oauthUrl } from './UrlHelper.js';
|
|
12
|
+
export { oauthStore } from './OAuthStore.js';
|
|
13
|
+
export { axiosInstance as axios } from './axiosInstance.js';
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sumor",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Sumor OAuth framework",
|
|
5
5
|
"main": "dist/server/index.js",
|
|
6
6
|
"types": "dist/server/index.d.ts",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"scripts": {
|
|
28
28
|
"init": "npm install",
|
|
29
29
|
"build": "npm run build:server && npm run build:web",
|
|
30
|
-
"build:server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json",
|
|
31
|
-
"build:web": "tsc -p tsconfig.web.json && tsc-alias -p tsconfig.web.json",
|
|
30
|
+
"build:server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json && node scripts/add-extensions.js",
|
|
31
|
+
"build:web": "tsc -p tsconfig.web.json && tsc-alias -p tsconfig.web.json && node scripts/add-extensions.js",
|
|
32
32
|
"clean": "rm -rf dist",
|
|
33
33
|
"prebuild": "npm run clean",
|
|
34
34
|
"type-check": "tsc --noEmit",
|