mirror of
https://github.com/sergeyyarkov/educt-client.git
synced 2026-10-11 10:19:22 +03:00
149 lines
3.7 KiB
TypeScript
149 lines
3.7 KiB
TypeScript
import { lazy } from 'react';
|
|
import { IPrivateRouteProps } from './components/PrivateRoute/PrivateRoute';
|
|
|
|
/**
|
|
* Pages
|
|
*/
|
|
import AuthPage from '@educt/pages/auth/auth';
|
|
import NotFoundPage from '@educt/pages/404/404';
|
|
import CreateCoursePage from '@educt/pages/courses/create/create';
|
|
import CreateLessonPage from '@educt/pages/courses/create-lesson/create-lesson';
|
|
import EditLessonPage from './pages/lessons/edit-lesson/edit-lesson';
|
|
import CategoriesPage from './pages/categories/categories';
|
|
import CoursePage from '@educt/pages/course/course';
|
|
import EditCoursePage from '@educt/pages/courses/edit/edit';
|
|
import ChangePasswordPage from '@educt/pages/profile/change-password/change-password';
|
|
import ChangeEmailPage from '@educt/pages/profile/change-email/change-email';
|
|
import UserPage from './pages/user/user';
|
|
import { UserRoleEnum } from './enums';
|
|
const CoursesPage = lazy(() => import('@educt/pages/courses/courses'));
|
|
const LessonPage = lazy(() => import('@educt/pages/lesson/lesson'));
|
|
const MainPage = lazy(() => import('@educt/pages/main/main'));
|
|
const MessagesPage = lazy(() => import('@educt/pages/messages/messages'));
|
|
const ProfilePage = lazy(() => import('@educt/pages/profile/profile'));
|
|
const UsersPage = lazy(() => import('@educt/pages/users/users'));
|
|
|
|
interface IRouteOption extends IPrivateRouteProps {
|
|
isPrivate: boolean;
|
|
}
|
|
|
|
export const routes: IRouteOption[] = [
|
|
{
|
|
path: '/',
|
|
title: 'Main',
|
|
component: MainPage,
|
|
exact: true,
|
|
isPrivate: true,
|
|
},
|
|
{
|
|
path: '/course/:id',
|
|
title: 'Course',
|
|
component: CoursePage,
|
|
isPrivate: true,
|
|
exact: true,
|
|
},
|
|
{
|
|
path: '/courses',
|
|
title: 'Courses',
|
|
component: CoursesPage,
|
|
exact: true,
|
|
isPrivate: true,
|
|
},
|
|
{
|
|
path: '/categories',
|
|
title: 'Categories',
|
|
component: CategoriesPage,
|
|
exact: true,
|
|
isPrivate: true,
|
|
roles: [UserRoleEnum.ADMIN, UserRoleEnum.TEACHER],
|
|
},
|
|
{
|
|
path: '/courses/create',
|
|
title: 'Create new course',
|
|
component: CreateCoursePage,
|
|
isPrivate: true,
|
|
roles: [UserRoleEnum.ADMIN, UserRoleEnum.TEACHER],
|
|
},
|
|
{
|
|
path: '/courses/edit/:id',
|
|
title: 'Course editor',
|
|
component: EditCoursePage,
|
|
isPrivate: true,
|
|
exact: true,
|
|
roles: [UserRoleEnum.ADMIN, UserRoleEnum.TEACHER],
|
|
},
|
|
{
|
|
path: '/courses/edit/:id/create-lesson',
|
|
title: 'Create Lesson',
|
|
component: CreateLessonPage,
|
|
isPrivate: true,
|
|
exact: true,
|
|
roles: [UserRoleEnum.ADMIN, UserRoleEnum.TEACHER],
|
|
},
|
|
{
|
|
path: '/lessons/edit/:id',
|
|
title: 'Edit Lesson',
|
|
component: EditLessonPage,
|
|
isPrivate: true,
|
|
exact: true,
|
|
roles: [UserRoleEnum.ADMIN, UserRoleEnum.TEACHER],
|
|
},
|
|
{
|
|
path: '/lesson/:id',
|
|
title: 'Lesson',
|
|
component: LessonPage,
|
|
isPrivate: true,
|
|
exact: true,
|
|
},
|
|
{
|
|
path: '/messages',
|
|
title: 'Messages',
|
|
component: MessagesPage,
|
|
isPrivate: true,
|
|
},
|
|
{
|
|
path: '/profile',
|
|
title: 'Profile',
|
|
component: ProfilePage,
|
|
isPrivate: true,
|
|
exact: true,
|
|
},
|
|
{
|
|
path: '/profile/change-password',
|
|
title: 'Change password',
|
|
component: ChangePasswordPage,
|
|
isPrivate: true,
|
|
},
|
|
{
|
|
path: '/profile/change-email',
|
|
title: 'Change email',
|
|
component: ChangeEmailPage,
|
|
isPrivate: true,
|
|
},
|
|
{
|
|
path: '/users',
|
|
title: 'Users management',
|
|
component: UsersPage,
|
|
isPrivate: true,
|
|
roles: [UserRoleEnum.ADMIN, UserRoleEnum.TEACHER],
|
|
},
|
|
{
|
|
path: '/user/:id',
|
|
title: 'User',
|
|
component: UserPage,
|
|
isPrivate: true,
|
|
exact: true,
|
|
},
|
|
{
|
|
path: '/auth',
|
|
title: 'Auth',
|
|
component: AuthPage,
|
|
isPrivate: false,
|
|
},
|
|
{
|
|
title: 'Page not found',
|
|
component: NotFoundPage,
|
|
isPrivate: false,
|
|
},
|
|
];
|