@kevisual/api 0.0.56 → 0.0.58
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.
|
@@ -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
|
|
@@ -153,12 +161,18 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
153
161
|
* 登陆成功,需要获取用户信息进行缓存
|
|
154
162
|
* @param param0
|
|
155
163
|
*/
|
|
156
|
-
beforeSetLoginUser(
|
|
164
|
+
beforeSetLoginUser(opts: {
|
|
157
165
|
accessTokenExpiresIn?: number;
|
|
158
166
|
accessToken?: string;
|
|
159
167
|
refreshToken?: string;
|
|
160
168
|
check401?: boolean;
|
|
161
|
-
}): Promise<
|
|
169
|
+
}): Promise<Result<User>>;
|
|
170
|
+
/**
|
|
171
|
+
* 刷新登录用户,获取新的token,并更新用户信息
|
|
172
|
+
* @param refreshToken 刷新token,如果不传,则从缓存中获取
|
|
173
|
+
* @returns
|
|
174
|
+
*/
|
|
175
|
+
refreshLoginUser(refreshToken?: string): Promise<any>;
|
|
162
176
|
/**
|
|
163
177
|
* 刷新token
|
|
164
178
|
* @param refreshToken
|
|
@@ -215,21 +229,13 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
215
229
|
* 检查本地用户,如果本地用户存在,则返回本地用户,否则返回null
|
|
216
230
|
* @returns
|
|
217
231
|
*/
|
|
218
|
-
checkLocalUser(): Promise<
|
|
219
|
-
avatar?: string;
|
|
220
|
-
description?: string;
|
|
221
|
-
id?: string;
|
|
222
|
-
needChangePassword?: boolean;
|
|
223
|
-
orgs?: string[];
|
|
224
|
-
type?: string;
|
|
225
|
-
username?: string;
|
|
226
|
-
} | null>;
|
|
232
|
+
checkLocalUser(): Promise<User | null>;
|
|
227
233
|
/**
|
|
228
234
|
* 检查本地token是否存在,简单的判断是否已经属于登陆状态
|
|
229
235
|
* @returns
|
|
230
236
|
*/
|
|
231
237
|
checkLocalToken(): Promise<boolean>;
|
|
232
|
-
checkTokenValid(): Promise<
|
|
238
|
+
checkTokenValid(): Promise<null | string>;
|
|
233
239
|
/**
|
|
234
240
|
* 检查本地用户列表
|
|
235
241
|
* @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");
|
|
@@ -970,7 +985,8 @@ class QueryLogin extends BaseQuery {
|
|
|
970
985
|
}
|
|
971
986
|
}
|
|
972
987
|
}
|
|
973
|
-
async beforeSetLoginUser(
|
|
988
|
+
async beforeSetLoginUser(opts) {
|
|
989
|
+
const { accessToken, refreshToken, check401, accessTokenExpiresIn } = opts;
|
|
974
990
|
if (accessToken && refreshToken) {
|
|
975
991
|
const resUser = await this.getMe(accessToken, check401);
|
|
976
992
|
if (resUser.code === 200) {
|
|
@@ -988,10 +1004,24 @@ class QueryLogin extends BaseQuery {
|
|
|
988
1004
|
console.error("登录失败");
|
|
989
1005
|
}
|
|
990
1006
|
}
|
|
1007
|
+
return resUser;
|
|
991
1008
|
}
|
|
1009
|
+
return {
|
|
1010
|
+
code: 400,
|
|
1011
|
+
message: "登录失败"
|
|
1012
|
+
};
|
|
1013
|
+
}
|
|
1014
|
+
async refreshLoginUser(refreshToken) {
|
|
1015
|
+
const res = await this.queryRefreshToken(refreshToken);
|
|
1016
|
+
if (res.code === 200) {
|
|
1017
|
+
const { accessToken, refreshToken: refreshToken2, accessTokenExpiresIn } = res?.data || {};
|
|
1018
|
+
this.storage.setItem("token", accessToken || "");
|
|
1019
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken: refreshToken2, accessTokenExpiresIn, check401: false });
|
|
1020
|
+
}
|
|
1021
|
+
return res;
|
|
992
1022
|
}
|
|
993
1023
|
async queryRefreshToken(refreshToken) {
|
|
994
|
-
const _refreshToken = refreshToken || this.cacheStore.getRefreshToken();
|
|
1024
|
+
const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
|
|
995
1025
|
let data = { refreshToken: _refreshToken };
|
|
996
1026
|
if (!_refreshToken) {
|
|
997
1027
|
await this.cacheStore.clearCurrentUser();
|
|
@@ -1090,7 +1120,19 @@ class QueryLogin extends BaseQuery {
|
|
|
1090
1120
|
return !!token;
|
|
1091
1121
|
}
|
|
1092
1122
|
async checkTokenValid() {
|
|
1093
|
-
|
|
1123
|
+
const token = this.storage.getItem("token");
|
|
1124
|
+
if (!token) {
|
|
1125
|
+
return null;
|
|
1126
|
+
}
|
|
1127
|
+
const isExpired = await this.cacheStore.getIsExpired();
|
|
1128
|
+
if (isExpired) {
|
|
1129
|
+
const res = await this.refreshLoginUser();
|
|
1130
|
+
if (res.code === 200) {
|
|
1131
|
+
return res.data?.accessToken || null;
|
|
1132
|
+
}
|
|
1133
|
+
return null;
|
|
1134
|
+
}
|
|
1135
|
+
return token;
|
|
1094
1136
|
}
|
|
1095
1137
|
async getToken() {
|
|
1096
1138
|
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
|
|
@@ -153,12 +161,18 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
153
161
|
* 登陆成功,需要获取用户信息进行缓存
|
|
154
162
|
* @param param0
|
|
155
163
|
*/
|
|
156
|
-
beforeSetLoginUser(
|
|
164
|
+
beforeSetLoginUser(opts: {
|
|
157
165
|
accessTokenExpiresIn?: number;
|
|
158
166
|
accessToken?: string;
|
|
159
167
|
refreshToken?: string;
|
|
160
168
|
check401?: boolean;
|
|
161
|
-
}): Promise<
|
|
169
|
+
}): Promise<Result<User>>;
|
|
170
|
+
/**
|
|
171
|
+
* 刷新登录用户,获取新的token,并更新用户信息
|
|
172
|
+
* @param refreshToken 刷新token,如果不传,则从缓存中获取
|
|
173
|
+
* @returns
|
|
174
|
+
*/
|
|
175
|
+
refreshLoginUser(refreshToken?: string): Promise<any>;
|
|
162
176
|
/**
|
|
163
177
|
* 刷新token
|
|
164
178
|
* @param refreshToken
|
|
@@ -215,21 +229,13 @@ declare class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
215
229
|
* 检查本地用户,如果本地用户存在,则返回本地用户,否则返回null
|
|
216
230
|
* @returns
|
|
217
231
|
*/
|
|
218
|
-
checkLocalUser(): Promise<
|
|
219
|
-
avatar?: string;
|
|
220
|
-
description?: string;
|
|
221
|
-
id?: string;
|
|
222
|
-
needChangePassword?: boolean;
|
|
223
|
-
orgs?: string[];
|
|
224
|
-
type?: string;
|
|
225
|
-
username?: string;
|
|
226
|
-
} | null>;
|
|
232
|
+
checkLocalUser(): Promise<User | null>;
|
|
227
233
|
/**
|
|
228
234
|
* 检查本地token是否存在,简单的判断是否已经属于登陆状态
|
|
229
235
|
* @returns
|
|
230
236
|
*/
|
|
231
237
|
checkLocalToken(): Promise<boolean>;
|
|
232
|
-
checkTokenValid(): Promise<
|
|
238
|
+
checkTokenValid(): Promise<null | string>;
|
|
233
239
|
/**
|
|
234
240
|
* 检查本地用户列表
|
|
235
241
|
* @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");
|
|
@@ -970,7 +985,8 @@ class QueryLogin extends BaseQuery {
|
|
|
970
985
|
}
|
|
971
986
|
}
|
|
972
987
|
}
|
|
973
|
-
async beforeSetLoginUser(
|
|
988
|
+
async beforeSetLoginUser(opts) {
|
|
989
|
+
const { accessToken, refreshToken, check401, accessTokenExpiresIn } = opts;
|
|
974
990
|
if (accessToken && refreshToken) {
|
|
975
991
|
const resUser = await this.getMe(accessToken, check401);
|
|
976
992
|
if (resUser.code === 200) {
|
|
@@ -988,10 +1004,24 @@ class QueryLogin extends BaseQuery {
|
|
|
988
1004
|
console.error("登录失败");
|
|
989
1005
|
}
|
|
990
1006
|
}
|
|
1007
|
+
return resUser;
|
|
991
1008
|
}
|
|
1009
|
+
return {
|
|
1010
|
+
code: 400,
|
|
1011
|
+
message: "登录失败"
|
|
1012
|
+
};
|
|
1013
|
+
}
|
|
1014
|
+
async refreshLoginUser(refreshToken) {
|
|
1015
|
+
const res = await this.queryRefreshToken(refreshToken);
|
|
1016
|
+
if (res.code === 200) {
|
|
1017
|
+
const { accessToken, refreshToken: refreshToken2, accessTokenExpiresIn } = res?.data || {};
|
|
1018
|
+
this.storage.setItem("token", accessToken || "");
|
|
1019
|
+
await this.beforeSetLoginUser({ accessToken, refreshToken: refreshToken2, accessTokenExpiresIn, check401: false });
|
|
1020
|
+
}
|
|
1021
|
+
return res;
|
|
992
1022
|
}
|
|
993
1023
|
async queryRefreshToken(refreshToken) {
|
|
994
|
-
const _refreshToken = refreshToken || this.cacheStore.getRefreshToken();
|
|
1024
|
+
const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
|
|
995
1025
|
let data = { refreshToken: _refreshToken };
|
|
996
1026
|
if (!_refreshToken) {
|
|
997
1027
|
await this.cacheStore.clearCurrentUser();
|
|
@@ -1090,7 +1120,19 @@ class QueryLogin extends BaseQuery {
|
|
|
1090
1120
|
return !!token;
|
|
1091
1121
|
}
|
|
1092
1122
|
async checkTokenValid() {
|
|
1093
|
-
|
|
1123
|
+
const token = this.storage.getItem("token");
|
|
1124
|
+
if (!token) {
|
|
1125
|
+
return null;
|
|
1126
|
+
}
|
|
1127
|
+
const isExpired = await this.cacheStore.getIsExpired();
|
|
1128
|
+
if (isExpired) {
|
|
1129
|
+
const res = await this.refreshLoginUser();
|
|
1130
|
+
if (res.code === 200) {
|
|
1131
|
+
return res.data?.accessToken || null;
|
|
1132
|
+
}
|
|
1133
|
+
return null;
|
|
1134
|
+
}
|
|
1135
|
+
return token;
|
|
1094
1136
|
}
|
|
1095
1137
|
async getToken() {
|
|
1096
1138
|
const token = this.storage.getItem("token");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Query, BaseQuery } from '@kevisual/query';
|
|
2
2
|
import type { Result, DataOpts } from '@kevisual/query/query';
|
|
3
|
-
import { LoginCacheStore, CacheStore } from './login-cache.ts';
|
|
3
|
+
import { LoginCacheStore, CacheStore, User } from './login-cache.ts';
|
|
4
4
|
import { Cache } from './login-cache.ts';
|
|
5
5
|
import { BaseLoad } from '@kevisual/load';
|
|
6
6
|
export type QueryLoginOpts<T extends Cache = Cache> = {
|
|
@@ -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
|
|
@@ -128,7 +148,8 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
128
148
|
* 登陆成功,需要获取用户信息进行缓存
|
|
129
149
|
* @param param0
|
|
130
150
|
*/
|
|
131
|
-
async beforeSetLoginUser(
|
|
151
|
+
async beforeSetLoginUser(opts: { accessTokenExpiresIn?: number, accessToken?: string; refreshToken?: string; check401?: boolean }): Promise<Result<User>> {
|
|
152
|
+
const { accessToken, refreshToken, check401, accessTokenExpiresIn } = opts;
|
|
132
153
|
if (accessToken && refreshToken) {
|
|
133
154
|
const resUser = await this.getMe(accessToken, check401);
|
|
134
155
|
if (resUser.code === 200) {
|
|
@@ -146,7 +167,26 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
146
167
|
console.error('登录失败');
|
|
147
168
|
}
|
|
148
169
|
}
|
|
170
|
+
return resUser;
|
|
149
171
|
}
|
|
172
|
+
return {
|
|
173
|
+
code: 400,
|
|
174
|
+
message: '登录失败',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* 刷新登录用户,获取新的token,并更新用户信息
|
|
179
|
+
* @param refreshToken 刷新token,如果不传,则从缓存中获取
|
|
180
|
+
* @returns
|
|
181
|
+
*/
|
|
182
|
+
async refreshLoginUser(refreshToken?: string) {
|
|
183
|
+
const res = await this.queryRefreshToken(refreshToken);
|
|
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;
|
|
150
190
|
}
|
|
151
191
|
/**
|
|
152
192
|
* 刷新token
|
|
@@ -154,7 +194,7 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
154
194
|
* @returns
|
|
155
195
|
*/
|
|
156
196
|
async queryRefreshToken(refreshToken?: string) {
|
|
157
|
-
const _refreshToken = refreshToken || this.cacheStore.getRefreshToken();
|
|
197
|
+
const _refreshToken = refreshToken || (await this.cacheStore.getRefreshToken());
|
|
158
198
|
let data = { refreshToken: _refreshToken };
|
|
159
199
|
if (!_refreshToken) {
|
|
160
200
|
await this.cacheStore.clearCurrentUser();
|
|
@@ -305,8 +345,21 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|
|
305
345
|
const token = this.storage.getItem('token');
|
|
306
346
|
return !!token;
|
|
307
347
|
}
|
|
308
|
-
async checkTokenValid() {
|
|
309
|
-
|
|
348
|
+
async checkTokenValid(): Promise<null | string> {
|
|
349
|
+
const token = this.storage.getItem('token');
|
|
350
|
+
if (!token) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
const isExpired = await this.cacheStore.getIsExpired();
|
|
354
|
+
if (isExpired) {
|
|
355
|
+
const res = await this.refreshLoginUser()
|
|
356
|
+
if (res.code === 200) {
|
|
357
|
+
// 刷新成功,返回新的token
|
|
358
|
+
return res.data?.accessToken || null;
|
|
359
|
+
}
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
return token;
|
|
310
363
|
}
|
|
311
364
|
/**
|
|
312
365
|
* 检查本地用户列表
|