feat: 更新版本至 0.0.49,新增 storeList 支持,优化登录缓存,添加 store-auth 和 store-mark 功能
This commit is contained in:
@@ -39,7 +39,7 @@ export class QueryLogin extends BaseQuery {
|
||||
this.isBrowser = opts?.isBrowser ?? true;
|
||||
this.init();
|
||||
this.onLoad = opts?.onLoad;
|
||||
this.storage = opts?.storage || localStorage;
|
||||
this.storage = opts?.storage || globalThis?.localStorage;
|
||||
}
|
||||
setQuery(query: Query) {
|
||||
this.query = query;
|
||||
@@ -67,9 +67,9 @@ export class QueryLogin extends BaseQuery {
|
||||
async login(data: QueryLoginData) {
|
||||
const res = await this.post<QueryLoginResult>({ key: 'login', ...data });
|
||||
if (res.code === 200) {
|
||||
const { accessToken, refreshToken } = res?.data || {};
|
||||
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
||||
this.storage.setItem('token', accessToken || '');
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken });
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -81,9 +81,9 @@ export class QueryLogin extends BaseQuery {
|
||||
async loginByCode(data: { phone: string; code: string }) {
|
||||
const res = await this.post<QueryLoginResult>({ path: 'sms', key: 'login', data });
|
||||
if (res.code === 200) {
|
||||
const { accessToken, refreshToken } = res?.data || {};
|
||||
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
||||
this.storage.setItem('token', accessToken || '');
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken });
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -91,17 +91,17 @@ export class QueryLogin extends BaseQuery {
|
||||
* 设置token
|
||||
* @param token
|
||||
*/
|
||||
async setLoginToken(token: { accessToken: string; refreshToken: string }) {
|
||||
const { accessToken, refreshToken } = token;
|
||||
async setLoginToken(token: { accessToken: string; refreshToken: string; accessTokenExpiresIn?: number }) {
|
||||
const { accessToken, refreshToken, accessTokenExpiresIn } = token;
|
||||
this.storage.setItem('token', accessToken || '');
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken });
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
||||
}
|
||||
async loginByWechat(data: { code: string }) {
|
||||
const res = await this.post<QueryLoginResult>({ path: 'wx', key: 'open-login', code: data.code });
|
||||
if (res.code === 200) {
|
||||
const { accessToken, refreshToken } = res?.data || {};
|
||||
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
||||
this.storage.setItem('token', accessToken || '');
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken });
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -126,7 +126,7 @@ export class QueryLogin extends BaseQuery {
|
||||
* 登陆成功,需要获取用户信息进行缓存
|
||||
* @param param0
|
||||
*/
|
||||
async beforeSetLoginUser({ accessToken, refreshToken, check401 }: { accessToken?: string; refreshToken?: string; check401?: boolean }) {
|
||||
async beforeSetLoginUser({ accessToken, refreshToken, check401, accessTokenExpiresIn }: { accessTokenExpiresIn?: number, accessToken?: string; refreshToken?: string; check401?: boolean }) {
|
||||
if (accessToken && refreshToken) {
|
||||
const resUser = await this.getMe(accessToken, check401);
|
||||
if (resUser.code === 200) {
|
||||
@@ -137,6 +137,8 @@ export class QueryLogin extends BaseQuery {
|
||||
id: user.id,
|
||||
accessToken,
|
||||
refreshToken,
|
||||
accessTokenExpiresIn,
|
||||
createdAt: Date.now(),
|
||||
});
|
||||
} else {
|
||||
console.error('登录失败');
|
||||
@@ -185,9 +187,9 @@ export class QueryLogin extends BaseQuery {
|
||||
if (hasRefreshToken) {
|
||||
const res = await that.queryRefreshToken(hasRefreshToken);
|
||||
if (res.code === 200) {
|
||||
const { accessToken, refreshToken } = res?.data || {};
|
||||
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
||||
that.storage.setItem('token', accessToken || '');
|
||||
await that.beforeSetLoginUser({ accessToken, refreshToken, check401: false });
|
||||
await that.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn, check401: false });
|
||||
if (refetch && ctx && ctx.req && ctx.req.url && ctx.fetch) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 1500));
|
||||
const url = ctx.req?.url;
|
||||
@@ -336,12 +338,17 @@ export class QueryLogin extends BaseQuery {
|
||||
const user = localUserList.find((userItem) => userItem.user!.username === username);
|
||||
if (user) {
|
||||
this.storage.setItem('token', user.accessToken || '');
|
||||
await this.beforeSetLoginUser({ accessToken: user.accessToken, refreshToken: user.refreshToken });
|
||||
await this.beforeSetLoginUser({
|
||||
accessToken: user.accessToken,
|
||||
refreshToken: user.refreshToken,
|
||||
accessTokenExpiresIn: user.accessTokenExpiresIn
|
||||
});
|
||||
return {
|
||||
code: 200,
|
||||
data: {
|
||||
accessToken: user.accessToken,
|
||||
refreshToken: user.refreshToken,
|
||||
accessTokenExpiresIn: user.accessTokenExpiresIn,
|
||||
},
|
||||
success: true,
|
||||
message: '切换用户成功',
|
||||
@@ -350,9 +357,9 @@ export class QueryLogin extends BaseQuery {
|
||||
const res = await this.postSwitchUser(username);
|
||||
|
||||
if (res.code === 200) {
|
||||
const { accessToken, refreshToken } = res?.data || {};
|
||||
const { accessToken, refreshToken, accessTokenExpiresIn } = res?.data || {};
|
||||
this.storage.setItem('token', accessToken || '');
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken });
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -409,9 +416,9 @@ export class QueryLogin extends BaseQuery {
|
||||
loginToken: token,
|
||||
});
|
||||
if (res.code === 200) {
|
||||
const accessToken = res.data?.accessToken;
|
||||
const { accessTokenExpiresIn, accessToken, refreshToken } = res.data;
|
||||
this.storage.setItem('token', accessToken || '');
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken: res.data?.refreshToken });
|
||||
await this.beforeSetLoginUser({ accessToken, refreshToken, accessTokenExpiresIn });
|
||||
return res;
|
||||
}
|
||||
return false;
|
||||
@@ -421,7 +428,7 @@ export class QueryLogin extends BaseQuery {
|
||||
*
|
||||
*
|
||||
|
||||
import MD5 from 'crypto-js/md5.js';
|
||||
// import MD5 from 'crypto-js/md5.js';
|
||||
import jsonwebtoken from 'jsonwebtoken';
|
||||
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user