11
This commit is contained in:
@@ -49,9 +49,12 @@ const useUserStore = defineStore("user", () => {
|
||||
const userInfo = ref({});
|
||||
const role = ref({});
|
||||
const token = ref('')
|
||||
const refreshToken = ref('')
|
||||
const loginTime = ref(0)
|
||||
const resume = ref({})
|
||||
const Completion = ref('0%')
|
||||
const seesionId = ref(uni.getStorageSync('seesionId') || '')
|
||||
const SEVEN_DAYS = 7 * 24 * 60 * 60 * 1000
|
||||
|
||||
const login = (value) => {
|
||||
hasLogin.value = true;
|
||||
@@ -67,11 +70,15 @@ const useUserStore = defineStore("user", () => {
|
||||
const logOut = (showLoginModal = true) => {
|
||||
hasLogin.value = false;
|
||||
token.value = ''
|
||||
refreshToken.value = ''
|
||||
loginTime.value = 0
|
||||
resume.value = {}
|
||||
userInfo.value = {}
|
||||
role.value = {}
|
||||
uni.removeStorageSync('userInfo')
|
||||
uni.removeStorageSync('token')
|
||||
uni.removeStorageSync('refreshToken')
|
||||
uni.removeStorageSync('loginTime')
|
||||
uni.removeStorageSync('Padmin-Token')
|
||||
// 如果需要显示登录弹窗,则通过事件通知页面显示微信登录弹窗
|
||||
// if (showLoginModal) {
|
||||
@@ -122,6 +129,73 @@ const useUserStore = defineStore("user", () => {
|
||||
return getUserResume()
|
||||
}
|
||||
|
||||
const setRefreshToken = (refreshTokenVal) => {
|
||||
refreshToken.value = refreshTokenVal
|
||||
uni.setStorageSync('refreshToken', refreshTokenVal)
|
||||
}
|
||||
|
||||
const setLoginTime = (time) => {
|
||||
loginTime.value = time
|
||||
uni.setStorageSync('loginTime', time.toString())
|
||||
}
|
||||
|
||||
const isLoginExpired = () => {
|
||||
if (!loginTime.value) {
|
||||
const storedTime = uni.getStorageSync('loginTime')
|
||||
if (storedTime) {
|
||||
loginTime.value = parseInt(storedTime)
|
||||
}
|
||||
}
|
||||
if (!loginTime.value) return true
|
||||
return Date.now() - loginTime.value > SEVEN_DAYS
|
||||
}
|
||||
|
||||
const refreshAccessToken = async () => {
|
||||
if (isLoginExpired()) {
|
||||
logOut(false)
|
||||
return Promise.reject(new Error('登录已过期'))
|
||||
}
|
||||
|
||||
const storedRefreshToken = uni.getStorageSync('refreshToken') || refreshToken.value
|
||||
if (!storedRefreshToken) {
|
||||
logOut(false)
|
||||
return Promise.reject(new Error('没有刷新token'))
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: 'http://ks.zhaopinzao8dian.com/api/ks/refreshToken',
|
||||
method: 'POST',
|
||||
data: {
|
||||
refreshToken: storedRefreshToken
|
||||
},
|
||||
success: (resData) => {
|
||||
if (resData.statusCode === 200) {
|
||||
const { code, msg, token: newToken } = resData.data
|
||||
if (code === 200 && newToken) {
|
||||
token.value = newToken
|
||||
uni.setStorageSync('token', newToken)
|
||||
resolve(newToken)
|
||||
} else if (code === 401) {
|
||||
logOut(false)
|
||||
reject(new Error(msg || '认证失败'))
|
||||
} else {
|
||||
logOut(false)
|
||||
reject(new Error(msg || '刷新token失败'))
|
||||
}
|
||||
} else {
|
||||
logOut(false)
|
||||
reject(new Error('网络请求失败'))
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
logOut(false)
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
const setUserInfo = (values) => {
|
||||
userInfo.value = values.data;
|
||||
resume.value = values.data; // 将用户信息同时存储到resume中
|
||||
@@ -156,10 +230,14 @@ const useUserStore = defineStore("user", () => {
|
||||
const restoreUserInfo = () => {
|
||||
const cachedUserInfo = uni.getStorageSync('userInfo');
|
||||
const cachedToken = uni.getStorageSync('token');
|
||||
const cachedRefreshToken = uni.getStorageSync('refreshToken');
|
||||
const cachedLoginTime = uni.getStorageSync('loginTime');
|
||||
if (cachedUserInfo && cachedToken) {
|
||||
userInfo.value = cachedUserInfo;
|
||||
resume.value = cachedUserInfo;
|
||||
token.value = cachedToken;
|
||||
refreshToken.value = cachedRefreshToken || '';
|
||||
loginTime.value = cachedLoginTime ? parseInt(cachedLoginTime) : 0;
|
||||
hasLogin.value = true;
|
||||
Completion.value = getResumeCompletionPercentage(cachedUserInfo);
|
||||
return true;
|
||||
@@ -172,10 +250,16 @@ const useUserStore = defineStore("user", () => {
|
||||
hasLogin,
|
||||
userInfo,
|
||||
token,
|
||||
refreshToken,
|
||||
loginTime,
|
||||
resume,
|
||||
login,
|
||||
logOut,
|
||||
loginSetToken,
|
||||
setRefreshToken,
|
||||
setLoginTime,
|
||||
isLoginExpired,
|
||||
refreshAccessToken,
|
||||
getUserResume,
|
||||
initSeesionId,
|
||||
seesionId,
|
||||
|
||||
Reference in New Issue
Block a user