@kevisual/api 0.0.57 → 0.0.59
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/query-login-node.d.ts +22 -2
- package/dist/query-login-node.js +49 -5
- package/dist/query-login.d.ts +22 -2
- package/dist/query-login.js +49 -5
- package/package.json +1 -1
- package/query/query-login/query-login.ts +61 -6
|
@@ -141,6 +141,14 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
141
141
|
loginByWechat(data: {
|
|
142
142
|
code: string;
|
|
143
143
|
}): Promise<any>;
|
|
144
|
+
/**
|
|
145
|
+
* cnb登录, 适用于cnb的登录方式, 需要后端配合, 传入cnbToken, 后端验证cnbToken的有效性,并返回accessToken和refreshToken
|
|
146
|
+
* @param data
|
|
147
|
+
* @returns
|
|
148
|
+
*/
|
|
149
|
+
loginByCnb(data: {
|
|
150
|
+
cnbToken: string;
|
|
151
|
+
}): Promise<any>;
|
|
144
152
|
/**
|
|
145
153
|
* 检测微信登录,登陆成功后,调用onSuccess,否则调用onError
|
|
146
154
|
* @param param0
|
|
@@ -159,12 +167,24 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
159
167
|
refreshToken?: string;
|
|
160
168
|
check401?: boolean;
|
|
161
169
|
}): Promise<Result<User>>;
|
|
170
|
+
/**
|
|
171
|
+
* 刷新登录用户,获取新的token,并更新用户信息
|
|
172
|
+
* @param refreshToken 刷新token,如果不传,则从缓存中获取
|
|
173
|
+
* @returns
|
|
174
|
+
*/
|
|
175
|
+
refreshLoginUser(opts?: {
|
|
176
|
+
refreshToken?: string;
|
|
177
|
+
accessToken?: string;
|
|
178
|
+
}): Promise<any>;
|
|
162
179
|
/**
|
|
163
180
|
* 刷新token
|
|
164
181
|
* @param refreshToken
|
|
165
182
|
* @returns
|
|
166
183
|
*/
|
|
167
|
-
queryRefreshToken(
|
|
184
|
+
queryRefreshToken(opts?: {
|
|
185
|
+
refreshToken?: string;
|
|
186
|
+
accessToken?: string;
|
|
187
|
+
}): Promise<any>;
|
|
168
188
|
/**
|
|
169
189
|
* 检查401错误,并刷新token, 如果refreshToken存在,则刷新token, 否则返回401
|
|
170
190
|
* 拦截请求,请使用run401Action, 不要直接使用 afterCheck401ToRefreshToken
|
|
@@ -221,7 +241,7 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
221
241
|
* @returns
|
|
222
242
|
*/
|
|
223
243
|
checkLocalToken(): Promise<boolean>;
|
|
224
|
-
checkTokenValid(): Promise<
|
|
244
|
+
checkTokenValid(): Promise<null | string>;
|
|
225
245
|
/**
|
|
226
246
|
* 检查本地用户列表
|
|
227
247
|
* @returns
|
package/dist/query-login-node.js
CHANGED
|
@@ -957,6 +957,21 @@ class QueryLogin extends BaseQuery {
|
|
|
957
957
|
}
|
|
958
958
|
return res;
|
|
959
959
|
}
|
|
960
|
+
async loginByCnb(data) {
|
|
961
|
+
const res = await this.post({
|
|
962
|
+
path: "user",
|
|
963
|
+
key: "cnb-login",
|
|
964
|
+
payload: {
|
|
965
|
+
data
|
|
966
|
+
}
|
|
967
|
+
});
|
|
968
|
+
if (res.code === 200) {
|
|
969
|
+
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
970
|
+
this.storage.setItem("token", accessToken || "");
|
|
971
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
|
972
|
+
}
|
|
973
|
+
return res;
|
|
974
|
+
}
|
|
960
975
|
async checkWechat({ onSuccess, onError }) {
|
|
961
976
|
const url = new URL(window.location.href);
|
|
962
977
|
const code = url.searchParams.get("code");
|
|
@@ -996,9 +1011,26 @@ class QueryLogin extends BaseQuery {
|
|
|
996
1011
|
message: "登录失败"
|
|
997
1012
|
};
|
|
998
1013
|
}
|
|
999
|
-
async
|
|
1000
|
-
const
|
|
1001
|
-
|
|
1014
|
+
async refreshLoginUser(opts) {
|
|
1015
|
+
const res = await this.queryRefreshToken(opts);
|
|
1016
|
+
if (res.code === 200) {
|
|
1017
|
+
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
1018
|
+
this.storage.setItem("token", accessToken || "");
|
|
1019
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn, check401: false });
|
|
1020
|
+
}
|
|
1021
|
+
return res;
|
|
1022
|
+
}
|
|
1023
|
+
async queryRefreshToken(opts) {
|
|
1024
|
+
const refreshToken = opts?.refreshToken;
|
|
1025
|
+
let accessToken = opts?.accessToken;
|
|
1026
|
+
const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
|
|
1027
|
+
let data = {};
|
|
1028
|
+
if (accessToken) {
|
|
1029
|
+
data.accessToken = accessToken;
|
|
1030
|
+
}
|
|
1031
|
+
if (_refreshToken) {
|
|
1032
|
+
data.refreshToken = _refreshToken;
|
|
1033
|
+
}
|
|
1002
1034
|
if (!_refreshToken) {
|
|
1003
1035
|
await this.cacheStore.clearCurrentUser();
|
|
1004
1036
|
return {
|
|
@@ -1018,7 +1050,7 @@ class QueryLogin extends BaseQuery {
|
|
|
1018
1050
|
if (response?.code === 401) {
|
|
1019
1051
|
const hasRefreshToken = await that.cacheStore.getRefreshToken();
|
|
1020
1052
|
if (hasRefreshToken) {
|
|
1021
|
-
const res = await that.queryRefreshToken(hasRefreshToken);
|
|
1053
|
+
const res = await that.queryRefreshToken({ refreshToken: hasRefreshToken });
|
|
1022
1054
|
if (res.code === 200) {
|
|
1023
1055
|
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
1024
1056
|
that.storage.setItem("token", accessToken || "");
|
|
@@ -1096,7 +1128,19 @@ class QueryLogin extends BaseQuery {
|
|
|
1096
1128
|
return !!token;
|
|
1097
1129
|
}
|
|
1098
1130
|
async checkTokenValid() {
|
|
1099
|
-
|
|
1131
|
+
const token = this.storage.getItem("token");
|
|
1132
|
+
if (!token) {
|
|
1133
|
+
return null;
|
|
1134
|
+
}
|
|
1135
|
+
const isExpired = await this.cacheStore.getIsExpired();
|
|
1136
|
+
if (isExpired) {
|
|
1137
|
+
const res = await this.refreshLoginUser();
|
|
1138
|
+
if (res.code === 200) {
|
|
1139
|
+
return res.data?.accessToken || null;
|
|
1140
|
+
}
|
|
1141
|
+
return null;
|
|
1142
|
+
}
|
|
1143
|
+
return token;
|
|
1100
1144
|
}
|
|
1101
1145
|
async getToken() {
|
|
1102
1146
|
const token = this.storage.getItem("token");
|
package/dist/query-login.d.ts
CHANGED
|
@@ -141,6 +141,14 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
141
141
|
loginByWechat(data: {
|
|
142
142
|
code: string;
|
|
143
143
|
}): Promise<any>;
|
|
144
|
+
/**
|
|
145
|
+
* cnb登录, 适用于cnb的登录方式, 需要后端配合, 传入cnbToken, 后端验证cnbToken的有效性,并返回accessToken和refreshToken
|
|
146
|
+
* @param data
|
|
147
|
+
* @returns
|
|
148
|
+
*/
|
|
149
|
+
loginByCnb(data: {
|
|
150
|
+
cnbToken: string;
|
|
151
|
+
}): Promise<any>;
|
|
144
152
|
/**
|
|
145
153
|
* 检测微信登录,登陆成功后,调用onSuccess,否则调用onError
|
|
146
154
|
* @param param0
|
|
@@ -159,12 +167,24 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
159
167
|
refreshToken?: string;
|
|
160
168
|
check401?: boolean;
|
|
161
169
|
}): Promise<Result<User>>;
|
|
170
|
+
/**
|
|
171
|
+
* 刷新登录用户,获取新的token,并更新用户信息
|
|
172
|
+
* @param refreshToken 刷新token,如果不传,则从缓存中获取
|
|
173
|
+
* @returns
|
|
174
|
+
*/
|
|
175
|
+
refreshLoginUser(opts?: {
|
|
176
|
+
refreshToken?: string;
|
|
177
|
+
accessToken?: string;
|
|
178
|
+
}): Promise<any>;
|
|
162
179
|
/**
|
|
163
180
|
* 刷新token
|
|
164
181
|
* @param refreshToken
|
|
165
182
|
* @returns
|
|
166
183
|
*/
|
|
167
|
-
queryRefreshToken(
|
|
184
|
+
queryRefreshToken(opts?: {
|
|
185
|
+
refreshToken?: string;
|
|
186
|
+
accessToken?: string;
|
|
187
|
+
}): Promise<any>;
|
|
168
188
|
/**
|
|
169
189
|
* 检查401错误,并刷新token, 如果refreshToken存在,则刷新token, 否则返回401
|
|
170
190
|
* 拦截请求,请使用run401Action, 不要直接使用 afterCheck401ToRefreshToken
|
|
@@ -221,7 +241,7 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
221
241
|
* @returns
|
|
222
242
|
*/
|
|
223
243
|
checkLocalToken(): Promise<boolean>;
|
|
224
|
-
checkTokenValid(): Promise<
|
|
244
|
+
checkTokenValid(): Promise<null | string>;
|
|
225
245
|
/**
|
|
226
246
|
* 检查本地用户列表
|
|
227
247
|
* @returns
|
package/dist/query-login.js
CHANGED
|
@@ -957,6 +957,21 @@ class QueryLogin extends BaseQuery {
|
|
|
957
957
|
}
|
|
958
958
|
return res;
|
|
959
959
|
}
|
|
960
|
+
async loginByCnb(data) {
|
|
961
|
+
const res = await this.post({
|
|
962
|
+
path: "user",
|
|
963
|
+
key: "cnb-login",
|
|
964
|
+
payload: {
|
|
965
|
+
data
|
|
966
|
+
}
|
|
967
|
+
});
|
|
968
|
+
if (res.code === 200) {
|
|
969
|
+
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
970
|
+
this.storage.setItem("token", accessToken || "");
|
|
971
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
|
972
|
+
}
|
|
973
|
+
return res;
|
|
974
|
+
}
|
|
960
975
|
async checkWechat({ onSuccess, onError }) {
|
|
961
976
|
const url = new URL(window.location.href);
|
|
962
977
|
const code = url.searchParams.get("code");
|
|
@@ -996,9 +1011,26 @@ class QueryLogin extends BaseQuery {
|
|
|
996
1011
|
message: "登录失败"
|
|
997
1012
|
};
|
|
998
1013
|
}
|
|
999
|
-
async
|
|
1000
|
-
const
|
|
1001
|
-
|
|
1014
|
+
async refreshLoginUser(opts) {
|
|
1015
|
+
const res = await this.queryRefreshToken(opts);
|
|
1016
|
+
if (res.code === 200) {
|
|
1017
|
+
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
1018
|
+
this.storage.setItem("token", accessToken || "");
|
|
1019
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn, check401: false });
|
|
1020
|
+
}
|
|
1021
|
+
return res;
|
|
1022
|
+
}
|
|
1023
|
+
async queryRefreshToken(opts) {
|
|
1024
|
+
const refreshToken = opts?.refreshToken;
|
|
1025
|
+
let accessToken = opts?.accessToken;
|
|
1026
|
+
const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
|
|
1027
|
+
let data = {};
|
|
1028
|
+
if (accessToken) {
|
|
1029
|
+
data.accessToken = accessToken;
|
|
1030
|
+
}
|
|
1031
|
+
if (_refreshToken) {
|
|
1032
|
+
data.refreshToken = _refreshToken;
|
|
1033
|
+
}
|
|
1002
1034
|
if (!_refreshToken) {
|
|
1003
1035
|
await this.cacheStore.clearCurrentUser();
|
|
1004
1036
|
return {
|
|
@@ -1018,7 +1050,7 @@ class QueryLogin extends BaseQuery {
|
|
|
1018
1050
|
if (response?.code === 401) {
|
|
1019
1051
|
const hasRefreshToken = await that.cacheStore.getRefreshToken();
|
|
1020
1052
|
if (hasRefreshToken) {
|
|
1021
|
-
const res = await that.queryRefreshToken(hasRefreshToken);
|
|
1053
|
+
const res = await that.queryRefreshToken({ refreshToken: hasRefreshToken });
|
|
1022
1054
|
if (res.code === 200) {
|
|
1023
1055
|
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
1024
1056
|
that.storage.setItem("token", accessToken || "");
|
|
@@ -1096,7 +1128,19 @@ class QueryLogin extends BaseQuery {
|
|
|
1096
1128
|
return !!token;
|
|
1097
1129
|
}
|
|
1098
1130
|
async checkTokenValid() {
|
|
1099
|
-
|
|
1131
|
+
const token = this.storage.getItem("token");
|
|
1132
|
+
if (!token) {
|
|
1133
|
+
return null;
|
|
1134
|
+
}
|
|
1135
|
+
const isExpired = await this.cacheStore.getIsExpired();
|
|
1136
|
+
if (isExpired) {
|
|
1137
|
+
const res = await this.refreshLoginUser();
|
|
1138
|
+
if (res.code === 200) {
|
|
1139
|
+
return res.data?.accessToken || null;
|
|
1140
|
+
}
|
|
1141
|
+
return null;
|
|
1142
|
+
}
|
|
1143
|
+
return token;
|
|
1100
1144
|
}
|
|
1101
1145
|
async getToken() {
|
|
1102
1146
|
const token = this.storage.getItem("token");
|
package/package.json
CHANGED
|
@@ -107,6 +107,26 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
107
107
|
}
|
|
108
108
|
return res;
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* cnb登录, 适用于cnb的登录方式, 需要后端配合, 传入cnbToken, 后端验证cnbToken的有效性,并返回accessToken和refreshToken
|
|
112
|
+
* @param data
|
|
113
|
+
* @returns
|
|
114
|
+
*/
|
|
115
|
+
async loginByCnb(data: { cnbToken: string }) {
|
|
116
|
+
const res = await this.post<QueryLoginResult>({
|
|
117
|
+
path: 'user',
|
|
118
|
+
key: 'cnb-login',
|
|
119
|
+
payload: {
|
|
120
|
+
data: data
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
if (res.code === 200) {
|
|
124
|
+
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
125
|
+
this.storage.setItem('token', accessToken || '');
|
|
126
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
|
127
|
+
}
|
|
128
|
+
return res;
|
|
129
|
+
}
|
|
110
130
|
/**
|
|
111
131
|
* 检测微信登录,登陆成功后,调用onSuccess,否则调用onError
|
|
112
132
|
* @param param0
|
|
@@ -154,14 +174,36 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
154
174
|
message: '登录失败',
|
|
155
175
|
};
|
|
156
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* 刷新登录用户,获取新的token,并更新用户信息
|
|
179
|
+
* @param refreshToken 刷新token,如果不传,则从缓存中获取
|
|
180
|
+
* @returns
|
|
181
|
+
*/
|
|
182
|
+
async refreshLoginUser(opts?: { refreshToken?: string, accessToken?: string }) {
|
|
183
|
+
const res = await this.queryRefreshToken(opts);
|
|
184
|
+
if (res.code === 200) {
|
|
185
|
+
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
186
|
+
this.storage.setItem('token', accessToken || '');
|
|
187
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn, check401: false });
|
|
188
|
+
}
|
|
189
|
+
return res;
|
|
190
|
+
}
|
|
157
191
|
/**
|
|
158
192
|
* 刷新token
|
|
159
193
|
* @param refreshToken
|
|
160
194
|
* @returns
|
|
161
195
|
*/
|
|
162
|
-
async queryRefreshToken(refreshToken?: string) {
|
|
163
|
-
const
|
|
164
|
-
let
|
|
196
|
+
async queryRefreshToken(opts?: { refreshToken?: string, accessToken?: string }) {
|
|
197
|
+
const refreshToken = opts?.refreshToken;
|
|
198
|
+
let accessToken = opts?.accessToken;
|
|
199
|
+
const _refreshToken = refreshToken || (await this.cacheStore.getRefreshToken());
|
|
200
|
+
let data: any = {};
|
|
201
|
+
if (accessToken) {
|
|
202
|
+
data.accessToken = accessToken;
|
|
203
|
+
}
|
|
204
|
+
if (_refreshToken) {
|
|
205
|
+
data.refreshToken = _refreshToken;
|
|
206
|
+
}
|
|
165
207
|
if (!_refreshToken) {
|
|
166
208
|
await this.cacheStore.clearCurrentUser();
|
|
167
209
|
return {
|
|
@@ -192,7 +234,7 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
192
234
|
if (response?.code === 401) {
|
|
193
235
|
const hasRefreshToken = await that.cacheStore.getRefreshToken();
|
|
194
236
|
if (hasRefreshToken) {
|
|
195
|
-
const res = await that.queryRefreshToken(hasRefreshToken);
|
|
237
|
+
const res = await that.queryRefreshToken({ refreshToken: hasRefreshToken });
|
|
196
238
|
if (res.code === 200) {
|
|
197
239
|
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
|
198
240
|
that.storage.setItem('token', accessToken || '');
|
|
@@ -311,8 +353,21 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
311
353
|
const token = this.storage.getItem('token');
|
|
312
354
|
return !!token;
|
|
313
355
|
}
|
|
314
|
-
async checkTokenValid() {
|
|
315
|
-
|
|
356
|
+
async checkTokenValid(): Promise<null | string> {
|
|
357
|
+
const token = this.storage.getItem('token');
|
|
358
|
+
if (!token) {
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
const isExpired = await this.cacheStore.getIsExpired();
|
|
362
|
+
if (isExpired) {
|
|
363
|
+
const res = await this.refreshLoginUser()
|
|
364
|
+
if (res.code === 200) {
|
|
365
|
+
// 刷新成功,返回新的token
|
|
366
|
+
return res.data?.accessToken || null;
|
|
367
|
+
}
|
|
368
|
+
return null;
|
|
369
|
+
}
|
|
370
|
+
return token;
|
|
316
371
|
}
|
|
317
372
|
/**
|
|
318
373
|
* 检查本地用户列表
|