Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/assets/vue/router/index.js

159 lines
4.6 KiB

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;