mirror of
https://github.com/fantastic-admin/basic.git
synced 2026-10-07 12:48:30 +08:00
85 lines
2.2 KiB
TypeScript
Executable File
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
|