| | |
| | | import useSettingsStore from '@/store/modules/settings'; |
| | | import usePermissionStore from '@/store/modules/permission'; |
| | | import { ElMessage } from "element-plus"; |
| | | import { fa } from 'element-plus/es/locale'; |
| | | |
| | | NProgress.configure({ showSpinner: false }); |
| | | const whiteList = ['/login', '/register', '/social-callback']; |
| | | |
| | | router.beforeEach(async (to, from, next) => { |
| | | NProgress.start(); |
| | | if (getToken()) { |
| | | |
| | | if (judge(getToken())) { |
| | | console.log('判断当前用户是否已拉取完user_info信息'); |
| | | to.meta.title && useSettingsStore().setTitle(to.meta.title as string); |
| | | |
| | | /* has token*/ |
| | | if (to.path === '/login') { |
| | | next({ path: '/' }); |
| | | NProgress.done(); |
| | | } else { |
| | | if (useUserStore().roles.length === 0) { |
| | | isRelogin.show = true; |
| | | // 判断当前用户是否已拉取完user_info信息 |
| | | // if (useUserStore().roles.length === 0) { |
| | | isRelogin.show = true; |
| | | // // 判断当前用户是否已拉取完user_info信息 |
| | | |
| | | const [err] = await tos(useUserStore().getInfo()); |
| | | if (err) { |
| | | await useUserStore().logout(); |
| | | ElMessage.error(err); |
| | | next({ path: '/' }); |
| | | } else { |
| | | isRelogin.show = false; |
| | | const accessRoutes = await usePermissionStore().generateRoutes(); |
| | | // 根据roles权限生成可访问的路由表 |
| | | accessRoutes.forEach((route) => { |
| | | if (!isHttp(route.path)) { |
| | | router.addRoute(route); // 动态添加可访问路由表 |
| | | } |
| | | }); |
| | | next({ ...to, replace: true }); // hack方法 确保addRoutes已完成 |
| | | } |
| | | } else { |
| | | next(); |
| | | } |
| | | // const [err] = await tos(useUserStore().getInfo()); |
| | | // if (err) { |
| | | // await useUserStore().logout(); |
| | | // ElMessage.error(err); |
| | | // next({ path: '/' }); |
| | | // } else { |
| | | // isRelogin.show = false; |
| | | // const accessRoutes = await usePermissionStore().generateRoutes(); |
| | | // // 根据roles权限生成可访问的路由表 |
| | | // accessRoutes.forEach((route) => { |
| | | // if (!isHttp(route.path)) { |
| | | // router.addRoute(route); // 动态添加可访问路由表 |
| | | // } |
| | | // }); |
| | | // next({ ...to, replace: true }); // hack方法 确保addRoutes已完成 |
| | | // } |
| | | // } else { |
| | | next(); |
| | | // } |
| | | } |
| | | } else { |
| | | // 没有token |
| | | console.log("没有token"); |
| | | console.log('没有token'); |
| | | if (whiteList.indexOf(to.path) !== -1) { |
| | | // 在免登录白名单,直接进入 |
| | | next(); |
| | |
| | | router.afterEach(() => { |
| | | NProgress.done(); |
| | | }); |
| | | |
| | | const judge = (token: string | null) => { |
| | | if (token) { |
| | | const data = JSON.parse(token); |
| | | if (data != null) { |
| | | if (data.expirse != null && new Date().getTime() - data.expirse < 60 * 60 * 1000) { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | }; |