food/src/permission.js

62 lines
1.4 KiB
JavaScript
Raw Normal View History

2023-09-20 21:33:11 +08:00
import router from './router'
import store from './store'
import NProgress from 'nprogress' // 进度条
import 'nprogress/nprogress.css' // 进度条 style
NProgress.configure({ showSpinner: false }) // 进度条 Configuration
/**
* @description: 路由守卫
*/
router.beforeEach((to, from, next) => {
// start 进度条
NProgress.start()
// 设置title
document.title = getPageTitle(to.meta.title)
// 路由
store.commit('user/initUser')// 用户信息初始化 PS:token不存在 执行且执行一次
2023-10-18 15:58:44 +08:00
const power = store.state.user.power
2023-09-20 21:33:11 +08:00
const token = store.state.user.token
if (token === null) {
if (to.path === '/login') {
next()
NProgress.done()
} else {
next('/login')
NProgress.done()
}
} else {
if (to.path === '/login') {
next('/')
NProgress.done()
} else {
2023-10-18 15:58:44 +08:00
if (to.meta.roles.indexOf(power) >= 0) { // 判断 roles权限 有权限打开页面 没权限跳转到首页
next()
} else {
next('/')
}
2023-09-20 21:33:11 +08:00
NProgress.done()
}
}
})
/**
* @description: 路由完成 结束进度条
*/
router.afterEach(() => {
NProgress.done() // 结束进度条
})
/**
* @description: mateTile 全局title 组合
* @return: title
* @param {*} pageTitle 路由mate.tiele
*/
function getPageTitle (pageTitle) {
if (pageTitle) {
return `${pageTitle} - ${store.state.settings.title}`
} else {
return store.state.settings.title
}
}