index.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { route } from "quasar/wrappers";
  2. import {
  3. createRouter,
  4. createMemoryHistory,
  5. createWebHistory,
  6. createWebHashHistory,
  7. } from "vue-router";
  8. import routes from "./routes";
  9. import { Cookies, Notify } from "quasar";
  10. import { permissionStore } from "src/stores/permission";
  11. import { useI18n } from "vue-i18n";
  12. /*
  13. * If not building with SSR mode, you can
  14. * directly export the Router instantiation;
  15. *
  16. * The function below can be async too; either use
  17. * async/await or return a Promise which resolves
  18. * with the Router instance.
  19. */
  20. export default route(function (/* { store, ssrContext } */) {
  21. const createHistory = process.env.SERVER
  22. ? createMemoryHistory
  23. : process.env.VUE_ROUTER_MODE === "history"
  24. ? createWebHistory
  25. : createWebHashHistory;
  26. const Router = createRouter({
  27. scrollBehavior: () => ({ left: 0, top: 0 }),
  28. routes,
  29. // Leave this as is and make changes in quasar.conf.js instead!
  30. // quasar.conf.js -> build -> vueRouterMode
  31. // quasar.conf.js -> build -> publicPath
  32. history: createHistory(process.env.VUE_ROUTER_BASE),
  33. });
  34. Router.beforeEach(async (to, from, next) => {
  35. const { getAccess } = permissionStore();
  36. const access_token = Cookies.get("access_token");
  37. if (to.meta.requireAuth && !access_token) {
  38. return next({ name: "LoginPage" });
  39. }
  40. if (access_token) {
  41. if (to.name == "LoginPage") {
  42. return next({ name: "HomePage" });
  43. }
  44. }
  45. if (to.meta.requiredPermission) {
  46. const permission = getAccess(to.meta.requiredPermission, "view");
  47. if (!permission) {
  48. Notify.create({
  49. message: useI18n().t("permissions.view"),
  50. type: "negative",
  51. });
  52. return next(from);
  53. }
  54. }
  55. return next();
  56. });
  57. return Router;
  58. });