feat: 更新版本至 0.0.58,添加 cnb 登录和刷新用户功能
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@kevisual/api",
|
"name": "@kevisual/api",
|
||||||
"version": "0.0.57",
|
"version": "0.0.58",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "mod.ts",
|
"main": "mod.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -107,6 +107,26 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* cnb登录, 适用于cnb的登录方式, 需要后端配合, 传入cnbToken, 后端验证cnbToken的有效性,并返回accessToken和refreshToken
|
||||||
|
* @param data
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
async loginByCnb(data: { cnbToken: string }) {
|
||||||
|
const res = await this.post<QueryLoginResult>({
|
||||||
|
path: 'user',
|
||||||
|
key: 'cnb-login',
|
||||||
|
payload: {
|
||||||
|
data: data
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (res.code === 200) {
|
||||||
|
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
||||||
|
this.storage.setItem('token', accessToken || '');
|
||||||
|
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 检测微信登录,登陆成功后,调用onSuccess,否则调用onError
|
* 检测微信登录,登陆成功后,调用onSuccess,否则调用onError
|
||||||
* @param param0
|
* @param param0
|
||||||
@@ -154,13 +174,27 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|||||||
message: '登录失败',
|
message: '登录失败',
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 刷新登录用户,获取新的token,并更新用户信息
|
||||||
|
* @param refreshToken 刷新token,如果不传,则从缓存中获取
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
async refreshLoginUser(refreshToken?: string) {
|
||||||
|
const res = await this.queryRefreshToken(refreshToken);
|
||||||
|
if (res.code === 200) {
|
||||||
|
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
||||||
|
this.storage.setItem('token', accessToken || '');
|
||||||
|
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn, check401: false });
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 刷新token
|
* 刷新token
|
||||||
* @param refreshToken
|
* @param refreshToken
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
async queryRefreshToken(refreshToken?: string) {
|
async queryRefreshToken(refreshToken?: string) {
|
||||||
const _refreshToken = refreshToken || this.cacheStore.getRefreshToken();
|
const _refreshToken = refreshToken || (await this.cacheStore.getRefreshToken());
|
||||||
let data = { refreshToken: _refreshToken };
|
let data = { refreshToken: _refreshToken };
|
||||||
if (!_refreshToken) {
|
if (!_refreshToken) {
|
||||||
await this.cacheStore.clearCurrentUser();
|
await this.cacheStore.clearCurrentUser();
|
||||||
@@ -311,8 +345,21 @@ export class QueryLogin<T extends Cache = Cache> extends BaseQuery {
|
|||||||
const token = this.storage.getItem('token');
|
const token = this.storage.getItem('token');
|
||||||
return !!token;
|
return !!token;
|
||||||
}
|
}
|
||||||
async checkTokenValid() {
|
async checkTokenValid(): Promise<null | string> {
|
||||||
return this.cacheStore.getIsExpired();
|
const token = this.storage.getItem('token');
|
||||||
|
if (!token) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const isExpired = await this.cacheStore.getIsExpired();
|
||||||
|
if (isExpired) {
|
||||||
|
const res = await this.refreshLoginUser()
|
||||||
|
if (res.code === 200) {
|
||||||
|
// 刷新成功,返回新的token
|
||||||
|
return res.data?.accessToken || null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return token;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 检查本地用户列表
|
* 检查本地用户列表
|
||||||
|
|||||||
Reference in New Issue
Block a user