create-base
Version:
快速构建项目基础框架,支持vue/uni-app/后台管理模板等
43 lines (41 loc) • 1.13 kB
JavaScript
import { login, getInfo } from '@/api/user'
import { filterRoutes } from '@/utils/auth'
import constantRoutes from '@/router/constant'
import asyncRoutes from '@/router/async'
export const useUserStore = defineStore('user', {
state: () => ({
token: localStorage.getItem('token') || '',
profile: {},
permissions: [],
accessRoutes: []
}),
getters: {
hasToken: state => !!state.token
},
actions: {
// 登录
async login(userForm) {
const { data } = await login(userForm)
this.token = data.token
localStorage.setItem('token', data.token)
},
// 获取用户信息
async getInfo() {
const { data } = await getInfo()
this.profile = data.profile
this.permissions = data.permissions
return data
},
// 退出登录
logout() {
this.token = ''
localStorage.removeItem('token')
},
// 获取可访问的异步路由
getAsyncRoutes(permissions) {
const newAsyncRoutes = filterRoutes(asyncRoutes, permissions)
this.accessRoutes = constantRoutes.concat(newAsyncRoutes)
return newAsyncRoutes
}
}
})