index.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { getToken } from '@/utils/auth';
  2. import NProgress from 'nprogress';
  3. import 'nprogress/nprogress.css';
  4. NProgress.configure({ showSpinner: false });
  5. const whiteList = ['/login', '/image_change', '/register']; // 重定向白名单
  6. // 用户类型对应的跳转路径
  7. export const userTypeToJump = {
  8. USER: '/',
  9. ORG_MANAGER: '/project_manage/org/project',
  10. ADMIN: '/org_manage',
  11. };
  12. export function getUserTypeToJump(type) {
  13. return userTypeToJump[type] || '/';
  14. }
  15. export function setupRouterGuard(router) {
  16. // 全局前置守卫
  17. router.beforeEach(async (to, from, next) => {
  18. NProgress.start();
  19. const token = getToken();
  20. const userType = token?.user_type ?? '';
  21. if (token) {
  22. if (to.path === '/login') {
  23. next({ path: getUserTypeToJump(userType) });
  24. NProgress.done();
  25. return;
  26. }
  27. return;
  28. } else if (whiteList.includes(to.path)) {
  29. // 在登录白名单中,直接进入
  30. next();
  31. return;
  32. }
  33. // 其他无权访问的页面将重定向到登录页面
  34. next('/login');
  35. NProgress.done();
  36. return;
  37. });
  38. // 全局后置钩子
  39. router.afterEach(() => {
  40. NProgress.done();
  41. });
  42. }