| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import apiUser from '@/api/modules/user'
- import router from '@/router'
- export const useUserStore = defineStore(
- // 唯一ID
- 'user',
- () => {
- const settingsStore = useSettingsStore()
- const routeStore = useRouteStore()
- const menuStore = useMenuStore()
- const tabbarStore = useTabbarStore()
- 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(params: {
- account: string
- password: string
- }) {
- const {code, data} = await apiUser.login(params)
- if(code === 0 ){
- localStorage.setItem('accessToken', data)
- token.value = data
- }
- }
- // 手动登出
- function logout(redirect = router.currentRoute.value.fullPath) {
- // 此处仅清除计算属性 isLogin 中判断登录状态过期的变量,以保证在弹出登录窗口模式下页面展示依旧正常
- localStorage.removeItem('accessToken')
- token.value = ''
- router.push({
- name: 'login',
- query: {
- ...(redirect !== settingsStore.settings.home.fullPath && router.currentRoute.value.name !== 'login' && { redirect }),
- },
- }).then(logoutCleanStatus)
- }
- // 请求登出
- function requestLogout() {
- // 此处仅清除计算属性 isLogin 中判断登录状态过期的变量,以保证在弹出登录窗口模式下页面展示依旧正常
- localStorage.removeItem('accessToken')
- token.value = ''
- router.push({
- name: 'login',
- query: {
- ...(
- router.currentRoute.value.fullPath !== settingsStore.settings.home.fullPath
- && router.currentRoute.value.name !== 'login'
- && {
- redirect: router.currentRoute.value.fullPath,
- }
- ),
- },
- }).then(logoutCleanStatus)
- }
- // 登出后清除状态
- function logoutCleanStatus() {
- localStorage.removeItem('account')
- localStorage.removeItem('avatar')
- account.value = ''
- avatar.value = ''
- permissions.value = []
- settingsStore.updateSettings({}, true)
- tabbarStore.clean()
- routeStore.removeRoutes()
- menuStore.setActived(0)
- }
- // 获取权限
- 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,
- requestLogout,
- getPermissions,
- editPassword,
- }
- },
- )
|