import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router' import store from '../store'; export enum PAGE { HOME= 'Home', AUTH = 'Auth', HELP = 'Help', REQUESTS = 'Requests', REQUEST = 'Request' } export const PAGE_URL: Record = { [PAGE.HOME]: '/', [PAGE.REQUEST]: '/requests/:id', [PAGE.REQUESTS]: '/requests', [PAGE.AUTH]: '/auth', [PAGE.HELP]: '/help' } const routes: Readonly = [ { path: PAGE_URL[PAGE.REQUESTS], alias: PAGE_URL[PAGE.HOME], name: PAGE.REQUESTS, component: () => import('../views/HomePage.vue'), meta: { layout: 'main', auth: true, }, }, { path: PAGE_URL[PAGE.HELP], name: PAGE.HELP, component: () => import('../views/HelpPage.vue'), meta: { layout: 'main', auth: true, }, }, { path: PAGE_URL[PAGE.AUTH], name: PAGE.AUTH, component: () => import('../views/AuthPage.vue'), meta: { layout: 'auth', } }, { path: PAGE_URL[PAGE.REQUEST], name: PAGE.REQUEST, component: () => import('../views/RequestPage.vue'), meta: { layout: 'main', layoutProps: { back: true } } }, ] const router = createRouter({ history: createWebHistory(), routes, linkActiveClass: 'active', linkExactActiveClass: 'active', }); router.beforeEach((to, from, next) => { const requiredAuth = to.meta.auth; if (!requiredAuth) { return next(); } if (store.getters['auth/iseAuth']) { next(); } else { next('/auth?message=auth-required'); } }) export default router;