import { createRouter, createWebHistory } from 'vue-router' import HomeView from './views/HomeView.vue' const routes = [ { path: '/login', name: 'login', component: () => import('./views/LoginView.vue'), meta: { requiresAuth: false } }, { path: '/', redirect: '/home' }, { path: '/home', name: 'home', component: HomeView, meta: { requiresAuth: true } }, { path: '/search', name: 'search', component: () => import('./views/SearchView.vue'), meta: { requiresAuth: true } }, { path: '/persons', name: 'persons', component: () => import('./views/PersonsView.vue'), meta: { requiresAuth: true } }, { path: '/traces', name: 'traces', component: () => import('./views/FaceCandidatesView.vue'), meta: { requiresAuth: true } }, { path: '/files', name: 'files', component: () => import('./views/FilesView.vue'), meta: { requiresAuth: true } }, { path: '/settings', name: 'settings', component: () => import('./views/SettingsView.vue'), meta: { requiresAuth: true } }, { path: '/file/:file_uuid', name: 'file-detail', component: () => import('./views/VideoDetailView.vue'), meta: { requiresAuth: true } }, { path: '/chunk-detail/:file_uuid/:chunk_id', name: 'chunk-detail', component: () => import('./views/ChunkDetailView.vue'), meta: { requiresAuth: true } }, { path: '/identity/:identity_uuid', name: 'identity-detail', component: () => import('./views/IdentityDetailView.vue'), meta: { requiresAuth: true } }, { path: '/jobs', name: 'pipeline-progress', component: () => import('./views/PipelineProgressView.vue'), meta: { requiresAuth: true } }, { path: '/traces/:file_uuid/:trace_id', name: 'trace-detail', component: () => import('./views/TraceDetailView.vue'), meta: { requiresAuth: true } }, { path: '/trace-viz/:file_uuid', name: 'trace-viz', component: () => import('./views/TraceVizView.vue'), meta: { requiresAuth: false } }, { path: '/:pathMatch(.*)*', name: 'not-found', component: () => import('./views/NotFoundView.vue'), meta: { requiresAuth: false } } ] const router = createRouter({ history: createWebHistory(), routes, scrollBehavior() { return { top: 0 } } }) router.beforeEach((to, _from, next) => { const user = localStorage.getItem('momentry_user') // If route requires auth and user is not logged in, redirect to login if (to.meta.requiresAuth !== false && !user) { next('/login') } // If user is logged in and trying to access login, redirect to home else if (to.path === '/login' && user) { next('/home') } else { next() } }) export default router