import { createRouter, createWebHistory } from 'vue-router' import Dashboard from '../views/Dashboard.vue' import CertList from '../views/CertList.vue' import CertCreate from '../views/CertCreate.vue' import NotifyConfig from '../views/NotifyConfig.vue' import Credentials from '../views/Credentials.vue' import Login from '../views/Login.vue' import { isLoggedIn } from '../api' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/login', name: 'Login', component: Login, meta: { requiresAuth: false }, }, { path: '/', name: 'Dashboard', component: Dashboard, meta: { requiresAuth: true }, }, { path: '/certificates', name: 'CertList', component: CertList, meta: { requiresAuth: true }, }, { path: '/create', name: 'CertCreate', component: CertCreate, meta: { requiresAuth: true }, }, { path: '/notify', name: 'NotifyConfig', component: NotifyConfig, meta: { requiresAuth: true }, }, { path: '/credentials', name: 'Credentials', component: Credentials, meta: { requiresAuth: true }, }, ], }) // Navigation guard router.beforeEach((to, _, next) => { const requiresAuth = to.meta.requiresAuth !== false if (requiresAuth) { if (isLoggedIn()) { next() } else { next({ name: 'Login', query: { redirect: to.fullPath } }) } } else { // If already logged in and going to login, redirect to dashboard if (to.name === 'Login' && isLoggedIn()) { next({ name: 'Dashboard' }) } else { next() } } }) export default router