permission.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import router from "./router";
  2. import { getCookie } from "@/utills/auth"; // getToken from cookie
  3. import { Base64 } from "js-base64";
  4. const whiteList = ["/login", "/logout"]; // 不重定向白名单
  5. import store from "@/store";
  6. router.beforeEach((to, from, next) => {
  7. if (getCookie("authToken")) {
  8. if (to.path == "/login") {
  9. next({ path: "/home" });
  10. } else {
  11. if (store.getters.roles.length === 0) {
  12. // 判断当前用户是否已拉取完user_info信息
  13. store
  14. .dispatch("user/GetInfo")
  15. .then(async () => {
  16. let permissions = store.getters.permissions;
  17. let accessRoutes = [];
  18. accessRoutes = await store.dispatch(
  19. "routes/setRoutes",
  20. permissions
  21. );
  22. accessRoutes?.forEach((item) => {
  23. router.addRoute(item);
  24. });
  25. next({ ...to, replace: true });
  26. })
  27. .catch((err) => {});
  28. } else {
  29. next();
  30. }
  31. }
  32. } else if (whiteList.indexOf(to.path) !== -1) {
  33. next();
  34. } else {
  35. next(`/login?redirect=${to.fullPath}`);
  36. }
  37. //有token或在免登录白名单,直接放行
  38. // if (getCookie("iamAccessToken")) {
  39. // if (!store.state.userInfo) {
  40. // //获取用户资料
  41. // const result1 = store.dispatch("getUserInfo");
  42. // //获取菜单
  43. // const result2 = store.dispatch("getmenuList");
  44. // next();
  45. // } else {
  46. // next();
  47. // }
  48. // // next();//放行
  49. // } else if (whiteList.indexOf(to.path) !== -1) {
  50. // next(); //放行
  51. // } else {
  52. // removeImsCookie();
  53. // store.state.userInfo = null;
  54. // const mode = process.env.VUE_APP_LOGIN_MODE;
  55. // if (mode == 1) {
  56. // let base64Url = Base64.encode(process.env.VUE_APP_REDIRECT_URL);
  57. // window.location.href =
  58. // process.env.VUE_APP_UNIFIED_LOGIN + "&redirect_url=" + base64Url;
  59. // } else {
  60. // // router.push('/login');
  61. // next("/login");
  62. // }
  63. // }
  64. });
  65. router.afterEach((to, from, next) => {});