Files
zhxg_pc/src/permission.js
2025-07-28 15:52:07 +08:00

77 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { getTokenKeySessionStorage, setTokenKeySessionStorage } from '@/utils/auth'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import router from './router'
import store from './store'
import { isRelogin } from '@/utils/request'
NProgress.configure({ showSpinner: false })
const whiteList = ['/login', '/register']
const defaultSettings = require('@/settings.js')
router.beforeEach((to, from, next) => {
NProgress.start()
if (getTokenKeySessionStorage()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
/* has token*/
if (to.path === '/login') {
next({ path: '/' })
NProgress.done()
} else {
if (store.getters.roles.length === 0) {
isRelogin.show = true
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => {
isRelogin.show = false
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
})
} else {
next()
}
}
} else {
let ticket = to.query.jwt;
if(ticket){
setTokenKeySessionStorage(ticket);
//commit('SET_TOKEN', ticket)
}
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// if (to.path === '/login' && defaultSettings.casEnable) {
// // 访问原系统登录地址且开启CAS重定向到cas登录页
// window.location.href = defaultSettings.casloginUrl+to.fullPath
// } else {
// // 在免登录白名单,直接进入
// next()
// }
next()
} else {
//cas
if (!defaultSettings.casEnable) {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
}
if (defaultSettings.casEnable) {
// 开启CAS全部重定向到cas登录页
window.location.href = defaultSettings.casloginUrl
}
NProgress.done();
}
}
})
router.afterEach(() => {
NProgress.done()
})