123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { getToken } from '@/utils/auth';
- import NProgress from 'nprogress';
- import 'nprogress/nprogress.css';
- NProgress.configure({ showSpinner: false });
- const whiteList = ['/login', '/image_change', '/register']; // 重定向白名单
- // 用户类型对应的跳转路径
- export const userTypeToJump = {
- USER: '/',
- ORG_MANAGER: '/project_manage/org/project',
- ADMIN: '/org_manage',
- };
- export function getUserTypeToJump(type) {
- return userTypeToJump[type] || '/';
- }
- export function setupRouterGuard(router) {
- // 全局前置守卫
- router.beforeEach(async (to, from, next) => {
- NProgress.start();
- const token = getToken();
- const userType = token?.user_type ?? '';
- if (token) {
- if (to.path === '/login') {
- next({ path: getUserTypeToJump(userType) });
- NProgress.done();
- return;
- }
- return;
- } else if (whiteList.includes(to.path)) {
- // 在登录白名单中,直接进入
- next();
- return;
- }
- // 其他无权访问的页面将重定向到登录页面
- next('/login');
- NProgress.done();
- return;
- });
- // 全局后置钩子
- router.afterEach(() => {
- NProgress.done();
- });
- }
|