|
|
@@ -1,10 +1,11 @@
|
|
|
-import type { IUserInfoVo } from '@/api/types/login'
|
|
|
+import type { IUserInfoVo, IUserLogin, IUserTokenVo } from '@/api/types/login'
|
|
|
import { defineStore } from 'pinia'
|
|
|
import { ref } from 'vue'
|
|
|
import {
|
|
|
getUserInfo as _getUserInfo,
|
|
|
login as _login,
|
|
|
logout as _logout,
|
|
|
+ refreshToken as _refreshToken,
|
|
|
wxLogin as _wxLogin,
|
|
|
getWxCode,
|
|
|
} from '@/api/login'
|
|
|
@@ -15,7 +16,12 @@ const userInfoState: IUserInfoVo = {
|
|
|
id: 0,
|
|
|
username: '',
|
|
|
avatar: '/static/images/default-avatar.png',
|
|
|
+}
|
|
|
+
|
|
|
+const userTokenState: IUserTokenVo = {
|
|
|
token: '',
|
|
|
+ refreshToken: '',
|
|
|
+ refreshExpire: 0,
|
|
|
}
|
|
|
|
|
|
export const useUserStore = defineStore(
|
|
|
@@ -23,6 +29,8 @@ export const useUserStore = defineStore(
|
|
|
() => {
|
|
|
// 定义用户信息
|
|
|
const userInfo = ref<IUserInfoVo>({ ...userInfoState })
|
|
|
+ const userToken = ref<IUserTokenVo>({ ...userTokenState })
|
|
|
+
|
|
|
// 设置用户信息
|
|
|
const setUserInfo = (val: IUserInfoVo) => {
|
|
|
console.log('设置用户信息', val)
|
|
|
@@ -43,9 +51,23 @@ export const useUserStore = defineStore(
|
|
|
// 删除用户信息
|
|
|
const removeUserInfo = () => {
|
|
|
userInfo.value = { ...userInfoState }
|
|
|
+ userToken.value = { ...userTokenState }
|
|
|
uni.removeStorageSync('userInfo')
|
|
|
uni.removeStorageSync('token')
|
|
|
+ uni.removeStorageSync('refreshToken')
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 存储token,非导出
|
|
|
+ */
|
|
|
+ const setToken = (tokenBody: IUserLogin) => {
|
|
|
+ userToken.value.token = tokenBody.token
|
|
|
+ userToken.value.refreshToken = tokenBody.refreshToken
|
|
|
+ userToken.value.refreshExpire = tokenBody.refreshExpire
|
|
|
+ uni.setStorageSync('token', tokenBody.token)
|
|
|
+ uni.setStorageSync('refreshToken', tokenBody.refreshToken)
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 获取用户信息
|
|
|
*/
|
|
|
@@ -54,7 +76,6 @@ export const useUserStore = defineStore(
|
|
|
const userInfo = res.data
|
|
|
setUserInfo(userInfo)
|
|
|
uni.setStorageSync('userInfo', userInfo)
|
|
|
- uni.setStorageSync('token', userInfo.token)
|
|
|
// TODO 这里可以增加获取用户路由的方法 根据用户的角色动态生成路由
|
|
|
return res
|
|
|
}
|
|
|
@@ -72,6 +93,18 @@ export const useUserStore = defineStore(
|
|
|
const res = await _login(credentials)
|
|
|
console.log('登录信息', res)
|
|
|
toast.success('登录成功')
|
|
|
+ // 这里设置token 和 refreshToken
|
|
|
+ setToken(res.data)
|
|
|
+ await getUserInfo()
|
|
|
+ return res
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刷新token
|
|
|
+ */
|
|
|
+ const refreshToken = async () => {
|
|
|
+ const res = await _refreshToken(userToken.value.refreshToken)
|
|
|
+ setToken(res.data)
|
|
|
await getUserInfo()
|
|
|
return res
|
|
|
}
|
|
|
@@ -98,11 +131,13 @@ export const useUserStore = defineStore(
|
|
|
|
|
|
return {
|
|
|
userInfo,
|
|
|
+ userToken,
|
|
|
login,
|
|
|
wxLogin,
|
|
|
getUserInfo,
|
|
|
setUserAvatar,
|
|
|
logout,
|
|
|
+ refreshToken,
|
|
|
}
|
|
|
},
|
|
|
{
|