Files
MapMil/centers/analytics/frontend/src/router/index.ts
T
gitrusprusandCursor 8ab606747f Add public map with JWT admin login and protect admin APIs.
Keep map reads open; gate admin UI/nav and object mutations behind env-based admin credentials, and default parser batch limit to 10.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 23:04:21 +03:00

79 lines
2.0 KiB
TypeScript

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";
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: "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;