import { createRouter, createWebHistory } from "vue-router"; const MainLayout = () => import("@/views/MainLayout.vue"); const Dashboard = () => import("@/views/Dashboard.vue"); const Error404NotFound = () => import("@/views/Error404NotFound.vue"); const loginView = () => import("@/views/login.vue"); const ErrorPermission = () => import("@/views/ErrorPermission.vue"); // import ModuleMetadata from "@/modules/01_metadata/router"; import ModuleMetadataNew from "@/modules/01_masterdata/router"; // import ModuleOrganizational from "@/modules/02_organizational/router"; import ModuleOrganizationalNew from "@/modules/02_organization/router"; import ModulePositionEmployee from "@/modules/16_positionEmployee/router"; import ModuleRecruiting from "@/modules/03_recruiting/router"; import ModuleRegistryNew from "@/modules/04_registryPerson/router"; // import ModuleRegistry from "@/modules/04_registry/router"; import ModulePlacement from "@/modules/05_placement/router"; import ModuleRetirement from "@/modules/06_retirement/router"; import ModuleInsignia from "@/modules/07_insignia/router"; import ModuleRegistryEmployee from "@/modules/08_registryEmployee/router"; import ModuleOrder from "@/modules/10_order/router"; import ModuleLeave from "@/modules/09_leave/router"; import ModuleDiscipline from "@/modules/11_discipline/router"; import ModuleEvaluate from "@/modules/12_evaluatePersonal/router"; import ModuleSalary from "@/modules/13_salary/router"; import ModuleKPI from "@/modules/14_KPI/router"; import ModuleDevelopment from "@/modules/15_development/router"; import ModuleSupport from "@/modules/00_support/router"; import ModuleActing from "@/modules/17_acting/router"; // TODO: ใช้หรือไม่? import keycloak, { kcLogout } from "@/plugins/keycloak"; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: "/", name: "home", component: MainLayout, children: [ { path: "/", name: "dashboard", component: Dashboard, meta: { Auth: true, Key: "HOME", }, }, { path: "/error", name: "errorPermission", component: ErrorPermission, }, // ...ModuleMetadata, ...ModuleMetadataNew, // ...ModuleOrganizational, ...ModuleOrganizationalNew, ...ModulePositionEmployee, ...ModuleRecruiting, // ...ModuleRegistry, ...ModuleRegistryNew, ...ModulePlacement, ...ModuleRetirement, ...ModuleInsignia, ...ModuleRegistryEmployee, ...ModuleOrder, ...ModuleLeave, ...ModuleDiscipline, ...ModuleEvaluate, ...ModuleSalary, ...ModuleKPI, ...ModuleDevelopment, ...ModuleSupport, ...ModuleActing, ], }, /** * 404 Not Found * ref: https://router.vuejs.org/guide/essentials/dynamic-matching.html#catch-all-404-not-found-route */ { // path: "/:catchAll(.*)*", // TODO: ใช้ pathMatch แทนตามในเอกสารแนะนำ คงไว้เผื่อจำเป็น path: "/:pathMatch(.*)*", component: Error404NotFound, }, // authen with keycloak client { path: "/login", name: "loginMain", component: loginView, meta: { Auth: false, }, }, { path: "/auth", name: "auth", component: () => import("@/views/auth.vue"), }, ], scrollBehavior(to, from, savedPosition) { if (savedPosition) { return savedPosition; } else if (to.hash) { return { el: to.hash, behavior: "smooth", }; } }, }); // authen with keycloak client router.beforeEach((to, from, next) => { if (to.meta.Auth) { if (keycloak.authenticated === undefined) { kcLogout(); } else { next(); } } else { next(); } next(); }); export default router;