sumor 3.1.1 → 3.1.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/dist/web/OAuthStore.d.ts +88 -0
- package/dist/web/OAuthStore.d.ts.map +1 -0
- package/dist/web/OAuthStore.js +164 -0
- package/dist/web/OAuthStore.js.map +1 -0
- package/dist/web/Sumor.d.ts +2 -27
- package/dist/web/Sumor.d.ts.map +1 -1
- package/dist/web/Sumor.js +21 -76
- package/dist/web/Sumor.js.map +1 -1
- package/dist/web/UrlHelper.d.ts +29 -0
- package/dist/web/UrlHelper.d.ts.map +1 -0
- package/dist/web/UrlHelper.js +40 -0
- package/dist/web/UrlHelper.js.map +1 -0
- package/dist/web/index.d.ts +1 -0
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +2 -1
- package/dist/web/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Store - OAuth令牌和用户信息存储管理
|
|
3
|
+
* 通过 window.OAuthToken 进行持久化
|
|
4
|
+
*/
|
|
5
|
+
export interface UserInfo {
|
|
6
|
+
id: string;
|
|
7
|
+
isVerified: number;
|
|
8
|
+
roles: string;
|
|
9
|
+
permissions: string;
|
|
10
|
+
}
|
|
11
|
+
export interface OAuthTokenResponse {
|
|
12
|
+
endpoint: string;
|
|
13
|
+
authorizeUrl: string;
|
|
14
|
+
user: UserInfo | null;
|
|
15
|
+
}
|
|
16
|
+
export type UserChangeCallback = (user: UserInfo | null) => void;
|
|
17
|
+
declare class OAuthStore {
|
|
18
|
+
private userChangeSubscribers;
|
|
19
|
+
private refreshSubscribers;
|
|
20
|
+
constructor();
|
|
21
|
+
/**
|
|
22
|
+
* 初始化 window.OAuthToken 存储
|
|
23
|
+
*/
|
|
24
|
+
private initializeStorage;
|
|
25
|
+
/**
|
|
26
|
+
* 获取存储的 OAuth 数据
|
|
27
|
+
*/
|
|
28
|
+
private getStoredData;
|
|
29
|
+
/**
|
|
30
|
+
* 获取 endpoint
|
|
31
|
+
*/
|
|
32
|
+
getEndpoint(): string;
|
|
33
|
+
/**
|
|
34
|
+
* 设置 endpoint
|
|
35
|
+
*/
|
|
36
|
+
setEndpoint(endpoint: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* 获取 authorizeUrl
|
|
39
|
+
*/
|
|
40
|
+
getAuthorizeUrl(): string;
|
|
41
|
+
/**
|
|
42
|
+
* 设置 authorizeUrl
|
|
43
|
+
*/
|
|
44
|
+
setAuthorizeUrl(authorizeUrl: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* 获取用户信息
|
|
47
|
+
*/
|
|
48
|
+
getUser(): UserInfo | null;
|
|
49
|
+
/**
|
|
50
|
+
* 设置用户信息
|
|
51
|
+
*/
|
|
52
|
+
setUser(user: UserInfo | null): void;
|
|
53
|
+
/**
|
|
54
|
+
* 获取 OAuth 数据
|
|
55
|
+
*/
|
|
56
|
+
getData(): OAuthTokenResponse;
|
|
57
|
+
/**
|
|
58
|
+
* 更新 OAuth 数据
|
|
59
|
+
*/
|
|
60
|
+
setData(tokenResponse: OAuthTokenResponse): void;
|
|
61
|
+
/**
|
|
62
|
+
* 清空用户数据
|
|
63
|
+
*/
|
|
64
|
+
clear(): void;
|
|
65
|
+
/**
|
|
66
|
+
* 订阅用户变化事件
|
|
67
|
+
*/
|
|
68
|
+
onUserChange(callback: UserChangeCallback): void;
|
|
69
|
+
/**
|
|
70
|
+
* 触发用户变化事件
|
|
71
|
+
*/
|
|
72
|
+
private emitUserChange;
|
|
73
|
+
/**
|
|
74
|
+
* 订阅令牌刷新事件
|
|
75
|
+
*/
|
|
76
|
+
subscribeTokenRefresh(callback: () => void): void;
|
|
77
|
+
/**
|
|
78
|
+
* 触发所有令牌刷新回调
|
|
79
|
+
*/
|
|
80
|
+
onTokenRefreshed(): void;
|
|
81
|
+
/**
|
|
82
|
+
* 清空令牌刷新订阅
|
|
83
|
+
*/
|
|
84
|
+
clearRefreshSubscribers(): void;
|
|
85
|
+
}
|
|
86
|
+
export declare const oauthStore: OAuthStore;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=OAuthStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuthStore.d.ts","sourceRoot":"","sources":["../../web/OAuthStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAA;AAEhE,cAAM,UAAU;IACd,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,kBAAkB,CAAwB;;IASlD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,WAAW,IAAI,MAAM;IAKrB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC;;OAEG;IACH,eAAe,IAAI,MAAM;IAKzB;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAO3C;;OAEG;IACH,OAAO,IAAI,QAAQ,GAAG,IAAI;IAK1B;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAYpC;;OAEG;IACH,OAAO,IAAI,kBAAkB;IAS7B;;OAEG;IACH,OAAO,CAAC,aAAa,EAAE,kBAAkB,GAAG,IAAI;IAchD;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIhD;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjD;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;OAEG;IACH,uBAAuB,IAAI,IAAI;CAGhC;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAA"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Store - OAuth令牌和用户信息存储管理
|
|
3
|
+
* 通过 window.OAuthToken 进行持久化
|
|
4
|
+
*/
|
|
5
|
+
class OAuthStore {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.userChangeSubscribers = [];
|
|
8
|
+
this.refreshSubscribers = [];
|
|
9
|
+
// 从 window.OAuthToken 中初始化
|
|
10
|
+
if (!this.getStoredData()) {
|
|
11
|
+
this.initializeStorage();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 初始化 window.OAuthToken 存储
|
|
16
|
+
*/
|
|
17
|
+
initializeStorage() {
|
|
18
|
+
;
|
|
19
|
+
window.OAuthToken = {
|
|
20
|
+
endpoint: '',
|
|
21
|
+
authorizeUrl: '',
|
|
22
|
+
user: null,
|
|
23
|
+
refreshSubscribers: []
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 获取存储的 OAuth 数据
|
|
28
|
+
*/
|
|
29
|
+
getStoredData() {
|
|
30
|
+
return window.OAuthToken;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 获取 endpoint
|
|
34
|
+
*/
|
|
35
|
+
getEndpoint() {
|
|
36
|
+
const data = this.getStoredData();
|
|
37
|
+
return data?.endpoint || '';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 设置 endpoint
|
|
41
|
+
*/
|
|
42
|
+
setEndpoint(endpoint) {
|
|
43
|
+
const data = this.getStoredData();
|
|
44
|
+
if (data) {
|
|
45
|
+
data.endpoint = endpoint;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 获取 authorizeUrl
|
|
50
|
+
*/
|
|
51
|
+
getAuthorizeUrl() {
|
|
52
|
+
const data = this.getStoredData();
|
|
53
|
+
return data?.authorizeUrl || '';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 设置 authorizeUrl
|
|
57
|
+
*/
|
|
58
|
+
setAuthorizeUrl(authorizeUrl) {
|
|
59
|
+
const data = this.getStoredData();
|
|
60
|
+
if (data) {
|
|
61
|
+
data.authorizeUrl = authorizeUrl;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 获取用户信息
|
|
66
|
+
*/
|
|
67
|
+
getUser() {
|
|
68
|
+
const data = this.getStoredData();
|
|
69
|
+
return data?.user || null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 设置用户信息
|
|
73
|
+
*/
|
|
74
|
+
setUser(user) {
|
|
75
|
+
const data = this.getStoredData();
|
|
76
|
+
if (data) {
|
|
77
|
+
const previousUser = data.user;
|
|
78
|
+
data.user = user;
|
|
79
|
+
// 如果用户信息发生变化,触发回调
|
|
80
|
+
if (previousUser !== user) {
|
|
81
|
+
this.emitUserChange();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 获取 OAuth 数据
|
|
87
|
+
*/
|
|
88
|
+
getData() {
|
|
89
|
+
const data = this.getStoredData();
|
|
90
|
+
return {
|
|
91
|
+
endpoint: data?.endpoint || '',
|
|
92
|
+
authorizeUrl: data?.authorizeUrl || '',
|
|
93
|
+
user: data?.user || null
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 更新 OAuth 数据
|
|
98
|
+
*/
|
|
99
|
+
setData(tokenResponse) {
|
|
100
|
+
const data = this.getStoredData();
|
|
101
|
+
if (data) {
|
|
102
|
+
const previousUser = data.user;
|
|
103
|
+
data.endpoint = tokenResponse.endpoint;
|
|
104
|
+
data.authorizeUrl = tokenResponse.authorizeUrl;
|
|
105
|
+
data.user = tokenResponse.user;
|
|
106
|
+
// 如果用户信息发生变化,触发回调
|
|
107
|
+
if (previousUser !== tokenResponse.user) {
|
|
108
|
+
this.emitUserChange();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 清空用户数据
|
|
114
|
+
*/
|
|
115
|
+
clear() {
|
|
116
|
+
const data = this.getStoredData();
|
|
117
|
+
if (data) {
|
|
118
|
+
data.endpoint = '';
|
|
119
|
+
data.authorizeUrl = '';
|
|
120
|
+
data.user = null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 订阅用户变化事件
|
|
125
|
+
*/
|
|
126
|
+
onUserChange(callback) {
|
|
127
|
+
this.userChangeSubscribers.push(callback);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* 触发用户变化事件
|
|
131
|
+
*/
|
|
132
|
+
emitUserChange() {
|
|
133
|
+
this.userChangeSubscribers.forEach(callback => {
|
|
134
|
+
try {
|
|
135
|
+
callback(this.getUser());
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.error('User change callback error:', error);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 订阅令牌刷新事件
|
|
144
|
+
*/
|
|
145
|
+
subscribeTokenRefresh(callback) {
|
|
146
|
+
this.refreshSubscribers.push(callback);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* 触发所有令牌刷新回调
|
|
150
|
+
*/
|
|
151
|
+
onTokenRefreshed() {
|
|
152
|
+
this.refreshSubscribers.forEach(callback => callback());
|
|
153
|
+
this.refreshSubscribers = [];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 清空令牌刷新订阅
|
|
157
|
+
*/
|
|
158
|
+
clearRefreshSubscribers() {
|
|
159
|
+
this.refreshSubscribers = [];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// 导出单例
|
|
163
|
+
export const oauthStore = new OAuthStore();
|
|
164
|
+
//# sourceMappingURL=OAuthStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuthStore.js","sourceRoot":"","sources":["../../web/OAuthStore.ts"],"names":[],"mappings":"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"}
|
package/dist/web/Sumor.d.ts
CHANGED
|
@@ -2,39 +2,19 @@
|
|
|
2
2
|
* Sumor Class - 轻呈云客户端主类
|
|
3
3
|
*/
|
|
4
4
|
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
5
|
-
|
|
6
|
-
id: string;
|
|
7
|
-
isVerified: number;
|
|
8
|
-
roles: string;
|
|
9
|
-
permissions: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* 用户变化回调类型
|
|
13
|
-
*/
|
|
14
|
-
export type UserChangeCallback = (user: UserInfo | null) => void;
|
|
5
|
+
import { UserInfo } from './OAuthStore';
|
|
15
6
|
export declare class Sumor {
|
|
16
|
-
endpoint: string;
|
|
17
|
-
authorizeUrl: string;
|
|
18
|
-
user: UserInfo | null;
|
|
19
7
|
axios: AxiosInstance;
|
|
20
8
|
private loaded;
|
|
21
9
|
private loadTime;
|
|
22
10
|
private readonly CACHE_TTL;
|
|
23
11
|
private isRefreshing;
|
|
24
|
-
private refreshSubscribers;
|
|
25
|
-
private userChangeSubscribers;
|
|
26
12
|
constructor();
|
|
27
|
-
private subscribeTokenRefresh;
|
|
28
|
-
private onTokenRefreshed;
|
|
29
13
|
/**
|
|
30
14
|
* 订阅用户变化事件
|
|
31
15
|
* @param callback 用户变化时的回调函数
|
|
32
16
|
*/
|
|
33
|
-
onUserChange(callback:
|
|
34
|
-
/**
|
|
35
|
-
* 触发用户变化事件
|
|
36
|
-
*/
|
|
37
|
-
private emitUserChange;
|
|
17
|
+
onUserChange(callback: (user: UserInfo | null) => void): void;
|
|
38
18
|
/**
|
|
39
19
|
* 创建 Axios 实例并配置拦截器
|
|
40
20
|
*/
|
|
@@ -58,11 +38,6 @@ export declare class Sumor {
|
|
|
58
38
|
* @param force 是否强制刷新,忽略缓存
|
|
59
39
|
*/
|
|
60
40
|
refreshToken(force?: boolean): Promise<void>;
|
|
61
|
-
getAvatarUrl(id: string): string;
|
|
62
|
-
getHomeUrl(): string;
|
|
63
|
-
getSiteUrl(): string;
|
|
64
|
-
getUserUrl(): string;
|
|
65
|
-
getFeedbackUrl(): string;
|
|
66
41
|
/**
|
|
67
42
|
* 登录:跳转到授权页面
|
|
68
43
|
*/
|
package/dist/web/Sumor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sumor.d.ts","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAc,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Sumor.d.ts","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAc,MAAM,OAAO,CAAA;AAC5E,OAAO,EAAc,QAAQ,EAAsB,MAAM,cAAc,CAAA;AAkBvE,qBAAa,KAAK;IACT,KAAK,EAAE,aAAa,CAAA;IAC3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,YAAY,CAAiB;;IAOrC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAI7D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsG3B;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQb;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACG,YAAY,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCzD;;OAEG;IACH,KAAK;IASL;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;;;;;;;;OASG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO;IAkB/D;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAS/B"}
|
package/dist/web/Sumor.js
CHANGED
|
@@ -2,46 +2,22 @@
|
|
|
2
2
|
* Sumor Class - 轻呈云客户端主类
|
|
3
3
|
*/
|
|
4
4
|
import axios from 'axios';
|
|
5
|
+
import { oauthStore } from './OAuthStore';
|
|
5
6
|
export class Sumor {
|
|
6
7
|
constructor() {
|
|
7
|
-
this.endpoint = '';
|
|
8
|
-
this.authorizeUrl = '';
|
|
9
|
-
this.user = null;
|
|
10
8
|
this.loaded = false;
|
|
11
9
|
this.loadTime = 0;
|
|
12
10
|
this.CACHE_TTL = 3600000; // 1小时,单位毫秒
|
|
13
11
|
this.isRefreshing = false;
|
|
14
|
-
this.refreshSubscribers = [];
|
|
15
|
-
this.userChangeSubscribers = [];
|
|
16
12
|
console.log('初始化轻呈云客户端...');
|
|
17
13
|
this.axios = this.createAxiosInstance();
|
|
18
14
|
}
|
|
19
|
-
subscribeTokenRefresh(callback) {
|
|
20
|
-
this.refreshSubscribers.push(callback);
|
|
21
|
-
}
|
|
22
|
-
onTokenRefreshed() {
|
|
23
|
-
this.refreshSubscribers.forEach(callback => callback());
|
|
24
|
-
this.refreshSubscribers = [];
|
|
25
|
-
}
|
|
26
15
|
/**
|
|
27
16
|
* 订阅用户变化事件
|
|
28
17
|
* @param callback 用户变化时的回调函数
|
|
29
18
|
*/
|
|
30
19
|
onUserChange(callback) {
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* 触发用户变化事件
|
|
35
|
-
*/
|
|
36
|
-
emitUserChange() {
|
|
37
|
-
this.userChangeSubscribers.forEach(callback => {
|
|
38
|
-
try {
|
|
39
|
-
callback(this.user);
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
console.error('User change callback error:', error);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
20
|
+
oauthStore.onUserChange(callback);
|
|
45
21
|
}
|
|
46
22
|
/**
|
|
47
23
|
* 创建 Axios 实例并配置拦截器
|
|
@@ -87,17 +63,12 @@ export class Sumor {
|
|
|
87
63
|
});
|
|
88
64
|
const response = await refreshInstance.put('/api/oauth/token', {});
|
|
89
65
|
if (response.status === 200) {
|
|
90
|
-
//
|
|
66
|
+
// 如果响应中包含新的用户信息,更新到 OAuthStore
|
|
91
67
|
if (response.data && response.data.data && response.data.data.user) {
|
|
92
|
-
|
|
93
|
-
this.user = response.data.data.user;
|
|
94
|
-
// 如果用户信息发生变化,触发回调
|
|
95
|
-
if (this.user !== previousUser) {
|
|
96
|
-
this.emitUserChange();
|
|
97
|
-
}
|
|
68
|
+
oauthStore.setUser(response.data.data.user);
|
|
98
69
|
}
|
|
99
70
|
this.isRefreshing = false;
|
|
100
|
-
|
|
71
|
+
oauthStore.onTokenRefreshed();
|
|
101
72
|
return instance(originalRequest);
|
|
102
73
|
}
|
|
103
74
|
else {
|
|
@@ -106,10 +77,9 @@ export class Sumor {
|
|
|
106
77
|
}
|
|
107
78
|
catch (refreshError) {
|
|
108
79
|
this.isRefreshing = false;
|
|
109
|
-
|
|
80
|
+
oauthStore.clearRefreshSubscribers();
|
|
110
81
|
// 清空用户信息,表示已退出登录
|
|
111
|
-
|
|
112
|
-
this.emitUserChange();
|
|
82
|
+
oauthStore.setUser(null);
|
|
113
83
|
const error = new Error('令牌已过期,请重新登录');
|
|
114
84
|
error.code = 'TOKEN_REFRESH_FAILED';
|
|
115
85
|
return Promise.reject(error);
|
|
@@ -117,7 +87,7 @@ export class Sumor {
|
|
|
117
87
|
}
|
|
118
88
|
else {
|
|
119
89
|
return new Promise((resolve, reject) => {
|
|
120
|
-
|
|
90
|
+
oauthStore.subscribeTokenRefresh(() => {
|
|
121
91
|
resolve(instance(originalRequest));
|
|
122
92
|
});
|
|
123
93
|
});
|
|
@@ -175,7 +145,6 @@ export class Sumor {
|
|
|
175
145
|
if (!force && this.isCacheValid()) {
|
|
176
146
|
return;
|
|
177
147
|
}
|
|
178
|
-
const previousUser = this.user;
|
|
179
148
|
try {
|
|
180
149
|
// 直接调用 PUT /api/oauth/token 刷新接口
|
|
181
150
|
// 浏览器会自动在请求中包含 HttpOnly Cookie 中的 refresh_token
|
|
@@ -185,52 +154,28 @@ export class Sumor {
|
|
|
185
154
|
// 响应已被拦截器处理,返回的是 { endpoint, authorizeUrl, user }
|
|
186
155
|
if (response) {
|
|
187
156
|
const data = response;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
this.user = data.user || null;
|
|
191
|
-
console.log('[Sumor] User info updated:', this.user);
|
|
157
|
+
oauthStore.setData(data);
|
|
158
|
+
console.log('[Sumor] User info updated:', oauthStore.getUser());
|
|
192
159
|
}
|
|
193
160
|
this.loaded = true;
|
|
194
161
|
this.loadTime = Date.now();
|
|
195
|
-
// 如果用户信息发生变化,触发回调
|
|
196
|
-
if (this.user !== previousUser) {
|
|
197
|
-
console.log('[Sumor] User changed, emitting event');
|
|
198
|
-
this.emitUserChange();
|
|
199
|
-
}
|
|
200
162
|
}
|
|
201
163
|
catch (error) {
|
|
202
164
|
console.error('[Sumor] Failed to refresh OAuth info:', error);
|
|
203
165
|
// 刷新失败时,清除用户信息(401 表示未认证)
|
|
204
166
|
if (error.response?.status === 401 || error.code === 'TOKEN_REFRESH_FAILED') {
|
|
205
167
|
console.log('[Sumor] Token refresh failed or unauthorized, clearing user');
|
|
206
|
-
|
|
207
|
-
this.user = null;
|
|
208
|
-
this.emitUserChange();
|
|
209
|
-
}
|
|
168
|
+
oauthStore.clear();
|
|
210
169
|
}
|
|
211
170
|
}
|
|
212
171
|
}
|
|
213
|
-
getAvatarUrl(id) {
|
|
214
|
-
return this.endpoint + `/api/user/avatar/${id}`;
|
|
215
|
-
}
|
|
216
|
-
getHomeUrl() {
|
|
217
|
-
return this.endpoint;
|
|
218
|
-
}
|
|
219
|
-
getSiteUrl() {
|
|
220
|
-
return this.endpoint + '/site';
|
|
221
|
-
}
|
|
222
|
-
getUserUrl() {
|
|
223
|
-
return this.endpoint + '/user';
|
|
224
|
-
}
|
|
225
|
-
getFeedbackUrl() {
|
|
226
|
-
return this.endpoint + '/user/feedback';
|
|
227
|
-
}
|
|
228
172
|
/**
|
|
229
173
|
* 登录:跳转到授权页面
|
|
230
174
|
*/
|
|
231
175
|
login() {
|
|
232
|
-
|
|
233
|
-
|
|
176
|
+
const authorizeUrl = oauthStore.getAuthorizeUrl();
|
|
177
|
+
if (authorizeUrl) {
|
|
178
|
+
window.location.href = authorizeUrl;
|
|
234
179
|
}
|
|
235
180
|
else {
|
|
236
181
|
throw new Error('无法获取授权 URL');
|
|
@@ -245,13 +190,11 @@ export class Sumor {
|
|
|
245
190
|
}
|
|
246
191
|
catch (error) {
|
|
247
192
|
console.error('Logout error:', error);
|
|
248
|
-
// 即使请求失败,仍然返回(由调用方处理清除本地状态)
|
|
249
193
|
throw error;
|
|
250
194
|
}
|
|
251
195
|
finally {
|
|
252
196
|
// 清空本地用户信息
|
|
253
|
-
|
|
254
|
-
this.emitUserChange();
|
|
197
|
+
oauthStore.clear();
|
|
255
198
|
}
|
|
256
199
|
}
|
|
257
200
|
/**
|
|
@@ -271,10 +214,11 @@ export class Sumor {
|
|
|
271
214
|
* - hasPermission('posts', '*') 或 hasPermission('posts') 检查是否有任何 posts 权限
|
|
272
215
|
*/
|
|
273
216
|
hasPermission(module, operation = '*') {
|
|
274
|
-
|
|
217
|
+
const user = oauthStore.getUser();
|
|
218
|
+
if (!user || !user.permissions) {
|
|
275
219
|
return false;
|
|
276
220
|
}
|
|
277
|
-
const userPermissions =
|
|
221
|
+
const userPermissions = user.permissions.split(',').map(p => p.trim());
|
|
278
222
|
// 如果 operation 为 *,检查是否有该模块的任何权限
|
|
279
223
|
if (operation === '*') {
|
|
280
224
|
return userPermissions.some(permission => permission.startsWith(`${module}:`));
|
|
@@ -289,10 +233,11 @@ export class Sumor {
|
|
|
289
233
|
* @returns 是否拥有该角色
|
|
290
234
|
*/
|
|
291
235
|
hasRole(role) {
|
|
292
|
-
|
|
236
|
+
const user = oauthStore.getUser();
|
|
237
|
+
if (!user || !user.roles) {
|
|
293
238
|
return false;
|
|
294
239
|
}
|
|
295
|
-
const userRoles =
|
|
240
|
+
const userRoles = user.roles.split(',');
|
|
296
241
|
return userRoles.some(r => r.trim() === role);
|
|
297
242
|
}
|
|
298
243
|
}
|
package/dist/web/Sumor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sumor.js","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAwD,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Sumor.js","sourceRoot":"","sources":["../../web/Sumor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL Helper - 提供各种应用内 URL 的快速访问方法
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* OAuth URL 访问对象
|
|
6
|
+
*/
|
|
7
|
+
export declare const oauthUrl: {
|
|
8
|
+
/**
|
|
9
|
+
* 获取用户头像 URL
|
|
10
|
+
*/
|
|
11
|
+
avatar(id: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* 获取首页 URL
|
|
14
|
+
*/
|
|
15
|
+
home(): string;
|
|
16
|
+
/**
|
|
17
|
+
* 获取站点管理页面 URL
|
|
18
|
+
*/
|
|
19
|
+
site(): string;
|
|
20
|
+
/**
|
|
21
|
+
* 获取用户中心 URL
|
|
22
|
+
*/
|
|
23
|
+
user(): string;
|
|
24
|
+
/**
|
|
25
|
+
* 获取反馈页面 URL
|
|
26
|
+
*/
|
|
27
|
+
feedback(): string;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=UrlHelper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlHelper.d.ts","sourceRoot":"","sources":["../../web/UrlHelper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB;;OAEG;eACQ,MAAM,GAAG,MAAM;IAI1B;;OAEG;YACK,MAAM;IAId;;OAEG;YACK,MAAM;IAId;;OAEG;YACK,MAAM;IAId;;OAEG;gBACS,MAAM;CAGnB,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL Helper - 提供各种应用内 URL 的快速访问方法
|
|
3
|
+
*/
|
|
4
|
+
import { oauthStore } from './OAuthStore';
|
|
5
|
+
/**
|
|
6
|
+
* OAuth URL 访问对象
|
|
7
|
+
*/
|
|
8
|
+
export const oauthUrl = {
|
|
9
|
+
/**
|
|
10
|
+
* 获取用户头像 URL
|
|
11
|
+
*/
|
|
12
|
+
avatar(id) {
|
|
13
|
+
return oauthStore.getEndpoint() + `/api/user/avatar/${id}`;
|
|
14
|
+
},
|
|
15
|
+
/**
|
|
16
|
+
* 获取首页 URL
|
|
17
|
+
*/
|
|
18
|
+
home() {
|
|
19
|
+
return oauthStore.getEndpoint();
|
|
20
|
+
},
|
|
21
|
+
/**
|
|
22
|
+
* 获取站点管理页面 URL
|
|
23
|
+
*/
|
|
24
|
+
site() {
|
|
25
|
+
return oauthStore.getEndpoint() + '/site';
|
|
26
|
+
},
|
|
27
|
+
/**
|
|
28
|
+
* 获取用户中心 URL
|
|
29
|
+
*/
|
|
30
|
+
user() {
|
|
31
|
+
return oauthStore.getEndpoint() + '/user';
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* 获取反馈页面 URL
|
|
35
|
+
*/
|
|
36
|
+
feedback() {
|
|
37
|
+
return oauthStore.getEndpoint() + '/user/feedback';
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=UrlHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UrlHelper.js","sourceRoot":"","sources":["../../web/UrlHelper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB;;OAEG;IACH,MAAM,CAAC,EAAU;QACf,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,oBAAoB,EAAE,EAAE,CAAA;IAC5D,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,UAAU,CAAC,WAAW,EAAE,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,OAAO,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,OAAO,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,UAAU,CAAC,WAAW,EAAE,GAAG,gBAAgB,CAAA;IACpD,CAAC;CACF,CAAA"}
|
package/dist/web/index.d.ts
CHANGED
package/dist/web/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,UAAU,kBAa/B;AAED,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,UAAU,kBAa/B;AAED,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/web/index.js
CHANGED
|
@@ -10,8 +10,9 @@ export async function setupSumor() {
|
|
|
10
10
|
await sumor.refreshToken();
|
|
11
11
|
// 挂载到全局 window 对象
|
|
12
12
|
window.sumor = sumor;
|
|
13
|
-
console.log('[setupSumor] Sumor initialized
|
|
13
|
+
console.log('[setupSumor] Sumor initialized');
|
|
14
14
|
console.log('✓ 完成轻呈云客户端初始化');
|
|
15
15
|
}
|
|
16
16
|
export { Sumor } from './Sumor';
|
|
17
|
+
export { oauthUrl } from './UrlHelper';
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
package/dist/web/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAEzB,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IACnD,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;IAE1B,kBAAkB;IAClB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAEpB,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../web/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAEzB,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;IACnD,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;IAE1B,kBAAkB;IAClB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAEpB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAC9B,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
|