Path: blob/1.0-develop/resources/scripts/routers/routes.ts
7458 views
import React, { lazy } from 'react';1import ServerConsole from '@/components/server/console/ServerConsoleContainer';2import DatabasesContainer from '@/components/server/databases/DatabasesContainer';3import ScheduleContainer from '@/components/server/schedules/ScheduleContainer';4import UsersContainer from '@/components/server/users/UsersContainer';5import BackupContainer from '@/components/server/backups/BackupContainer';6import NetworkContainer from '@/components/server/network/NetworkContainer';7import StartupContainer from '@/components/server/startup/StartupContainer';8import FileManagerContainer from '@/components/server/files/FileManagerContainer';9import SettingsContainer from '@/components/server/settings/SettingsContainer';10import AccountOverviewContainer from '@/components/dashboard/AccountOverviewContainer';11import AccountApiContainer from '@/components/dashboard/AccountApiContainer';12import AccountSSHContainer from '@/components/dashboard/ssh/AccountSSHContainer';13import ActivityLogContainer from '@/components/dashboard/activity/ActivityLogContainer';14import ServerActivityLogContainer from '@/components/server/ServerActivityLogContainer';1516// Each of the router files is already code split out appropriately — so17// all of the items above will only be loaded in when that router is loaded.18//19// These specific lazy loaded routes are to avoid loading in heavy screens20// for the server dashboard when they're only needed for specific instances.21const FileEditContainer = lazy(() => import('@/components/server/files/FileEditContainer'));22const ScheduleEditContainer = lazy(() => import('@/components/server/schedules/ScheduleEditContainer'));2324interface RouteDefinition {25path: string;26// If undefined is passed this route is still rendered into the router itself27// but no navigation link is displayed in the sub-navigation menu.28name: string | undefined;29component: React.ComponentType;30exact?: boolean;31}3233interface ServerRouteDefinition extends RouteDefinition {34permission: string | string[] | null;35}3637interface Routes {38// All of the routes available under "/account"39account: RouteDefinition[];40// All of the routes available under "/server/:id"41server: ServerRouteDefinition[];42}4344export default {45account: [46{47path: '/',48name: 'Account',49component: AccountOverviewContainer,50exact: true,51},52{53path: '/api',54name: 'API Credentials',55component: AccountApiContainer,56},57{58path: '/ssh',59name: 'SSH Keys',60component: AccountSSHContainer,61},62{63path: '/activity',64name: 'Activity',65component: ActivityLogContainer,66},67],68server: [69{70path: '/',71permission: null,72name: 'Console',73component: ServerConsole,74exact: true,75},76{77path: '/files',78permission: 'file.*',79name: 'Files',80component: FileManagerContainer,81},82{83path: '/files/:action(edit|new)',84permission: 'file.*',85name: undefined,86component: FileEditContainer,87},88{89path: '/databases',90permission: 'database.*',91name: 'Databases',92component: DatabasesContainer,93},94{95path: '/schedules',96permission: 'schedule.*',97name: 'Schedules',98component: ScheduleContainer,99},100{101path: '/schedules/:id',102permission: 'schedule.*',103name: undefined,104component: ScheduleEditContainer,105},106{107path: '/users',108permission: 'user.*',109name: 'Users',110component: UsersContainer,111},112{113path: '/backups',114permission: 'backup.*',115name: 'Backups',116component: BackupContainer,117},118{119path: '/network',120permission: 'allocation.*',121name: 'Network',122component: NetworkContainer,123},124{125path: '/startup',126permission: 'startup.*',127name: 'Startup',128component: StartupContainer,129},130{131path: '/settings',132permission: ['settings.*', 'file.sftp'],133name: 'Settings',134component: SettingsContainer,135},136{137path: '/activity',138permission: 'activity.*',139name: 'Activity',140component: ServerActivityLogContainer,141},142],143} as Routes;144145146