112 lines
3.6 KiB
JavaScript
112 lines
3.6 KiB
JavaScript
const routes = [
|
|
{
|
|
path: '/',
|
|
component: () => import('layouts/MainLayout.vue'),
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'home',
|
|
component: () => import('pages/LandingPage.vue'),
|
|
meta: { requiresAuth: false } // Keep home accessible, but don't show in nav
|
|
},
|
|
{
|
|
path: '/login',
|
|
name: 'login',
|
|
component: () => import('pages/LoginPage.vue'),
|
|
meta: {
|
|
requiresAuth: false,
|
|
navGroup: 'noAuth', // Show only when logged out
|
|
icon: 'login',
|
|
title: 'Login',
|
|
caption: 'Access your account'
|
|
}
|
|
},
|
|
{
|
|
path: '/register',
|
|
name: 'register',
|
|
component: () => import('pages/RegisterPage.vue'),
|
|
meta: {
|
|
requiresAuth: false,
|
|
navGroup: 'noAuth', // Show only when logged out
|
|
icon: 'person_add',
|
|
title: 'Register',
|
|
caption: 'Create an account'
|
|
}
|
|
},
|
|
// Add a new route specifically for managing passkeys when logged in
|
|
{
|
|
path: '/passkeys',
|
|
name: 'passkeys',
|
|
component: () => import('pages/PasskeyManagementPage.vue'), // Assuming this page exists or will be created
|
|
meta: {
|
|
requiresAuth: true,
|
|
navGroup: 'auth', // Show only when logged in
|
|
icon: 'key',
|
|
title: 'Passkeys',
|
|
caption: 'Manage your passkeys'
|
|
}
|
|
},
|
|
{
|
|
path: 'forms',
|
|
name: 'formList',
|
|
component: () => import('pages/FormListPage.vue'),
|
|
meta: {
|
|
requiresAuth: true,
|
|
navGroup: 'auth', // Show only when logged in
|
|
icon: 'list_alt',
|
|
title: 'Forms',
|
|
caption: 'View existing forms'
|
|
}
|
|
},
|
|
{ path: 'forms/new', name: 'formCreate', component: () => import('pages/FormCreatePage.vue'), meta: { requiresAuth: true } }, // Not in nav
|
|
{ path: 'forms/:id/edit', name: 'formEdit', component: () => import('pages/FormEditPage.vue'), props: true, meta: { requiresAuth: true } }, // Not in nav
|
|
{ path: 'forms/:id/fill', name: 'formFill', component: () => import('pages/FormFillPage.vue'), props: true, meta: { requiresAuth: true } }, // Not in nav
|
|
{ path: 'forms/:id/responses', name: 'formResponses', component: () => import('pages/FormResponsesPage.vue'), props: true, meta: { requiresAuth: true } }, // Not in nav
|
|
{
|
|
path: 'mantis-summaries',
|
|
name: 'mantisSummaries',
|
|
component: () => import('pages/MantisSummariesPage.vue'),
|
|
meta: {
|
|
requiresAuth: true,
|
|
navGroup: 'auth', // Show only when logged in
|
|
icon: 'summarize',
|
|
title: 'Mantis Summaries',
|
|
caption: 'View daily summaries'
|
|
}
|
|
},
|
|
{
|
|
path: 'email-summaries',
|
|
name: 'emailSummaries',
|
|
component: () => import('pages/EmailSummariesPage.vue'),
|
|
meta: {
|
|
requiresAuth: true,
|
|
navGroup: 'auth', // Show only when logged in
|
|
icon: 'email',
|
|
title: 'Email Summaries',
|
|
caption: 'View email summaries'
|
|
}
|
|
},
|
|
{
|
|
path: 'settings',
|
|
name: 'settings',
|
|
component: () => import('pages/SettingsPage.vue'),
|
|
meta: {
|
|
requiresAuth: true,
|
|
navGroup: 'auth', // Show only when logged in
|
|
icon: 'settings',
|
|
title: 'Settings',
|
|
caption: 'Manage application settings'
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
// Always leave this as last one,
|
|
// but you can also remove it
|
|
{
|
|
path: '/:catchAll(.*)*',
|
|
component: () => import('pages/ErrorNotFound.vue')
|
|
}
|
|
]
|
|
|
|
export default routes
|