import { createRouter, createWebHistory } from 'vue-router'; import adminRoutes from './admin'; import courseRoutes from './course'; import accountRoutes from './account'; import personalFileRoutes from './personalfile'; import messageRoutes from './message'; import userRoutes from './user'; import userGroupRoutes from './usergroup'; import userRelUserRoutes from './userreluser'; import calendarEventRoutes from './ccalendarevent'; import toolIntroRoutes from './ctoolintro'; import pageRoutes from './page'; import socialNetworkRoutes from './social'; //import courseCategoryRoutes from './coursecategory'; import documents from './documents'; import links from './links'; import glossary from './glossary'; import store from '../store'; import MyCourseList from '../views/user/courses/List.vue'; import MySessionList from '../views/user/sessions/SessionsCurrent.vue'; import MySessionListPast from '../views/user/sessions/SessionsPast.vue'; import MySessionListUpcoming from '../views/user/sessions/SessionsUpcoming.vue'; import CatalogLayout from '../layouts/Catalog.vue'; import MyCoursesLayout from '../layouts/MyCourses.vue'; import CourseCatalog from '../views/course/Catalog.vue'; import SessionCatalog from '../views/course/CatalogSession.vue'; import CourseHome from '../views/course/CourseHome.vue'; import Index from '../pages/Index.vue'; import Home from '../pages/Home.vue'; import Login from '../pages/Login.vue'; const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', name: 'Index', component: Index, meta: { requiresAuth: false, showBreadcrumb: false, } }, { path: '/home', name: 'Home', component: Home, meta: { requiresAuth: true } }, { path: '/login', name: 'Login', component: Login, meta: { layout: 'Empty', showBreadcrumb: false } }, { path: '/course/:id/home', name: 'CourseHome', component: CourseHome }, { path: '/courses', component: MyCoursesLayout, children: [ { path: '', name: 'MyCourses', component: MyCourseList, meta: {requiresAuth: true}, }, ] }, { path: '/sessions', //redirect: '/sessions/now', component: MySessionList, children: [ { path: '/sessions', name: 'MySessions', component: MySessionList, meta: {requiresAuth: true}, }, ], }, { path: '/sessions/past', name: 'MySessionsPast', component: MySessionListPast, meta: {requiresAuth: true}, }, { path: '/sessions/upcoming', name: 'MySessionsUpcoming', component: MySessionListUpcoming, meta: {requiresAuth: true}, }, socialNetworkRoutes, { path: '/catalog', redirect: '/catalog/course', name: 'Catalog', component: CatalogLayout, children: [ { path: 'course', component: CourseCatalog }, { path: 'session', component: SessionCatalog }, ], meta: {requiresAuth: true}, }, adminRoutes, courseRoutes, //courseCategoryRoutes, documents, links, glossary, accountRoutes, personalFileRoutes, messageRoutes, userRoutes, userGroupRoutes, userRelUserRoutes, calendarEventRoutes, toolIntroRoutes, pageRoutes ] }); router.beforeEach((to, from, next) => { if (to.matched.some(record => record.meta.requiresAuth)) { //console.log('requiresAuth'); // this route requires auth, check if logged in // if not, redirect to login page. if (store.getters['security/isAuthenticated']) { next(); } else { next({ path: '/login', query: {redirect: to.fullPath}, }); } } else { //console.log('next'); next(); // make sure to always call next()! } }); export default router;