| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { route } from "quasar/wrappers";
- import {
- createRouter,
- createMemoryHistory,
- createWebHistory,
- createWebHashHistory,
- } from "vue-router";
- import routes from "./routes";
- import { Cookies, Notify } from "quasar";
- import { permissionStore } from "src/stores/permission";
- import { useI18n } from "vue-i18n";
- /*
- * If not building with SSR mode, you can
- * directly export the Router instantiation;
- *
- * The function below can be async too; either use
- * async/await or return a Promise which resolves
- * with the Router instance.
- */
- export default route(function (/* { store, ssrContext } */) {
- const createHistory = process.env.SERVER
- ? createMemoryHistory
- : process.env.VUE_ROUTER_MODE === "history"
- ? createWebHistory
- : createWebHashHistory;
- const Router = createRouter({
- scrollBehavior: () => ({ left: 0, top: 0 }),
- routes,
- // Leave this as is and make changes in quasar.conf.js instead!
- // quasar.conf.js -> build -> vueRouterMode
- // quasar.conf.js -> build -> publicPath
- history: createHistory(process.env.VUE_ROUTER_BASE),
- });
- Router.beforeEach(async (to, from, next) => {
- const { getAccess } = permissionStore();
- const access_token = Cookies.get("access_token");
- if (to.meta.requireAuth && !access_token) {
- return next({ name: "LoginPage" });
- }
- if (access_token) {
- if (to.name == "LoginPage") {
- return next({ name: "HomePage" });
- }
- }
- if (to.meta.requiredPermission) {
- const permission = getAccess(to.meta.requiredPermission, "view");
- if (!permission) {
- Notify.create({
- message: useI18n().t("permissions.view"),
- type: "negative",
- });
- return next(from);
- }
- }
- return next();
- });
- return Router;
- });
|