import { createRouter, createWebHistory } from "vue-router"; import HomeView from "@/views/HomeView.vue"; import { useAuthStore } from "@/stores/auth"; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: "/", name: "Home", component: HomeView, }, { path: "/tickets", name: "Tickets", component: () => import("../views/TicketsView.vue"), meta: { requiresAuth: true, }, }, { path: "/tickets/:id", name: "Ticket Details", component: () => import("../views/TicketDetailView.vue"), meta: { requiresAuth: true, }, }, { path: "/login", name: "Login", component: () => import("../views/LoginView.vue"), }, ], }); router.beforeEach(async (to, _from, next) => { const authStore = useAuthStore(); await authStore.waitForAuth(); const isAuthenticated = authStore.isAuthenticated; if (to.meta.requiresAuth && !isAuthenticated) { next({ name: "Login" }); } else { next(); } }); export default router;