Files
basic/src/store/modules/user.ts
T

85 lines
2.2 KiB
TypeScript
Executable File

import useSettingsStore from './settings'
import useRouteStore from './route'
import useMenuStore from './menu'
import router from '@/router'
import apiUser from '@/api/modules/user'
const useUserStore = defineStore(
// 唯一ID
'user',
() => {
const settingsStore = useSettingsStore()
const routeStore = useRouteStore()
const menuStore = useMenuStore()
const account = ref(localStorage.account ?? '')
const token = ref(localStorage.token ?? '')
const avatar = ref(localStorage.avatar ?? '')
const permissions = ref<string[]>([])
const isLogin = computed(() => {
if (token.value) {
return true
}
return false
})
// 登录
async function login(data: {
account: string
password: string
}) {
const res = await apiUser.login(data)
localStorage.setItem('account', res.data.account)
localStorage.setItem('token', res.data.token)
localStorage.setItem('avatar', res.data.avatar)
account.value = res.data.account
token.value = res.data.token
avatar.value = res.data.avatar
}
// 登出
async function logout(redirect = router.currentRoute.value.fullPath) {
localStorage.removeItem('account')
localStorage.removeItem('token')
localStorage.removeItem('avatar')
account.value = ''
token.value = ''
avatar.value = ''
permissions.value = []
routeStore.removeRoutes()
menuStore.setActived(0)
router.push({
name: 'login',
query: {
...(router.currentRoute.value.path !== settingsStore.settings.home.fullPath && router.currentRoute.value.name !== 'login' && { redirect }),
},
})
}
// 获取权限
async function getPermissions() {
const res = await apiUser.permission()
permissions.value = res.data.permissions
}
// 修改密码
async function editPassword(data: {
password: string
newpassword: string
}) {
await apiUser.passwordEdit(data)
}
return {
account,
token,
avatar,
permissions,
isLogin,
login,
logout,
getPermissions,
editPassword,
}
},
)
export default useUserStore