import { createRouter, createWebHistory } from "vue-router"; import { getToken } from "../auth"; import AppLayout from "../layouts/AppLayout.vue"; import AnalyticsView from "../views/AnalyticsView.vue"; import ChannelsView from "../views/ChannelsView.vue"; import ConsumersView from "../views/ConsumersView.vue"; import EventsView from "../views/EventsView.vue"; import LoginView from "../views/LoginView.vue"; import MapViewPage from "../views/MapViewPage.vue"; import ParserProfilesView from "../views/ParserProfilesView.vue"; import ParsersView from "../views/ParsersView.vue"; import VpnView from "../views/VpnView.vue"; const router = createRouter({ history: createWebHistory(), routes: [ { path: "/login", name: "login", component: LoginView, meta: { public: true }, }, { path: "/", component: AppLayout, children: [ { path: "", name: "map", component: MapViewPage, meta: { public: true } }, { path: "channels", name: "channels", component: ChannelsView, meta: { requiresAuth: true }, }, { path: "parser-profiles", name: "parser-profiles", component: ParserProfilesView, meta: { requiresAuth: true }, }, { path: "parsers", name: "parsers", component: ParsersView, meta: { requiresAuth: true }, }, { path: "vpn", name: "vpn", component: VpnView, meta: { requiresAuth: true }, }, { path: "events", name: "events", component: EventsView, meta: { requiresAuth: true }, }, { path: "analytics", name: "analytics", component: AnalyticsView, meta: { requiresAuth: true }, }, { path: "consumers", name: "consumers", component: ConsumersView, meta: { requiresAuth: true }, }, ], }, ], }); router.beforeEach((to) => { if (!to.meta.requiresAuth) return true; if (getToken()) return true; return { name: "login", query: { next: to.fullPath }, }; }); export default router;