mirror of
https://github.com/YunoHost/yunohost-admin.git
synced 2024-09-03 20:06:15 +02:00
444 lines
12 KiB
JavaScript
444 lines
12 KiB
JavaScript
/**
|
|
* routes module.
|
|
* @module router/routes
|
|
*/
|
|
|
|
// Simple views are normally imported and will be included into the main webpack entry.
|
|
// Others will be chunked by webpack so they can be lazy loaded.
|
|
// Webpack chunk syntax is:
|
|
// `() => import(/* webpackChunkName: "views/:nameOfWantedFile" */ '@/views/:ViewComponent')`
|
|
|
|
import Home from '@/views/Home'
|
|
import Login from '@/views/Login'
|
|
import ToolList from '@/views/tool/ToolList'
|
|
|
|
const routes = [
|
|
{
|
|
name: 'home',
|
|
path: '/',
|
|
component: Home,
|
|
meta: {
|
|
args: { trad: 'home' }
|
|
}
|
|
},
|
|
|
|
{
|
|
name: 'login',
|
|
path: '/login',
|
|
component: Login,
|
|
meta: {
|
|
noAuth: true,
|
|
args: { trad: 'login' }
|
|
}
|
|
},
|
|
|
|
/* ───────────────╮
|
|
│ POST INSTALL │
|
|
╰─────────────── */
|
|
{
|
|
name: 'post-install',
|
|
path: '/postinstall',
|
|
component: () => import(/* webpackChunkName: "views/post-install" */ '@/views/PostInstall'),
|
|
meta: {
|
|
noAuth: true,
|
|
args: { trad: 'postinstall.title' }
|
|
}
|
|
},
|
|
|
|
/* ───────╮
|
|
│ USER │
|
|
╰─────── */
|
|
{
|
|
name: 'user-list',
|
|
path: '/users',
|
|
component: () => import(/* webpackChunkName: "views/user/list" */ '@/views/user/UserList'),
|
|
meta: {
|
|
args: { trad: 'users' },
|
|
breadcrumb: ['user-list']
|
|
}
|
|
},
|
|
{
|
|
name: 'user-create',
|
|
path: '/users/create',
|
|
component: () => import(/* webpackChunkName: "views/user/create" */ '@/views/user/UserCreate'),
|
|
meta: {
|
|
args: { trad: 'users_new' },
|
|
breadcrumb: ['user-list', 'user-create']
|
|
}
|
|
},
|
|
{
|
|
name: 'user-import',
|
|
path: '/users/import',
|
|
component: () => import(/* webpackChunkName: "views/user/import" */ '@/views/user/UserImport'),
|
|
props: true,
|
|
meta: {
|
|
args: { trad: 'users_import' },
|
|
breadcrumb: ['user-list', 'user-import']
|
|
}
|
|
},
|
|
{
|
|
name: 'user-info',
|
|
path: '/users/:name',
|
|
component: () => import(/* webpackChunkName: "views/user/info" */ '@/views/user/UserInfo'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'name' },
|
|
breadcrumb: ['user-list', 'user-info']
|
|
}
|
|
},
|
|
{
|
|
name: 'user-edit',
|
|
path: '/users/:name/edit',
|
|
component: () => import(/* webpackChunkName: "views/user/edit" */ '@/views/user/UserEdit'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'name', trad: 'user_username_edit' },
|
|
breadcrumb: ['user-list', 'user-info', 'user-edit']
|
|
}
|
|
},
|
|
|
|
/* ────────╮
|
|
│ GROUP │
|
|
╰──────── */
|
|
{
|
|
name: 'group-list',
|
|
path: '/groups',
|
|
component: () => import(/* webpackChunkName: "views/group/list" */ '@/views/group/GroupList'),
|
|
meta: {
|
|
args: { trad: 'groups_and_permissions' },
|
|
breadcrumb: ['user-list', 'group-list']
|
|
}
|
|
},
|
|
{
|
|
name: 'group-create',
|
|
path: '/groups/create',
|
|
component: () => import(/* webpackChunkName: "views/group/create" */ '@/views/group/GroupCreate'),
|
|
meta: {
|
|
args: { trad: 'group_new' },
|
|
breadcrumb: ['user-list', 'group-list', 'group-create']
|
|
}
|
|
},
|
|
|
|
/* ─────────╮
|
|
│ DOMAIN │
|
|
╰───────── */
|
|
{
|
|
name: 'domain-list',
|
|
path: '/domains',
|
|
component: () => import(/* webpackChunkName: "views/domain/list" */ '@/views/domain/DomainList'),
|
|
meta: {
|
|
args: { trad: 'domains' },
|
|
breadcrumb: ['domain-list']
|
|
}
|
|
},
|
|
{
|
|
name: 'domain-add',
|
|
path: '/domains/add',
|
|
component: () => import(/* webpackChunkName: "views/domain/add" */ '@/views/domain/DomainAdd'),
|
|
meta: {
|
|
args: { trad: 'domain_add' },
|
|
breadcrumb: ['domain-list', 'domain-add']
|
|
}
|
|
},
|
|
{
|
|
name: 'domain-info',
|
|
path: '/domains/:name',
|
|
component: () => import(/* webpackChunkName: "views/domain/info" */ '@/views/domain/DomainInfo'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'name' },
|
|
breadcrumb: ['domain-list', 'domain-info']
|
|
}
|
|
},
|
|
{
|
|
// no need for name here, only children are visited
|
|
path: '/domains/:name/config',
|
|
component: () => import(/* webpackChunkName: "views/domain/config" */ '@/views/domain/DomainConfig'),
|
|
props: true,
|
|
children: [
|
|
{
|
|
name: 'domain-config',
|
|
path: ':tabId?',
|
|
component: () => import(/* webpackChunkName: "components/configPanel" */ '@/components/ConfigPanel'),
|
|
props: true,
|
|
meta: {
|
|
routerParams: ['name'], // Override router key params to avoid view recreation at tab change.
|
|
args: { trad: 'config' },
|
|
breadcrumb: ['domain-list', 'domain-info', 'domain-config']
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
name: 'domain-dns',
|
|
path: '/domains/:name/dns',
|
|
component: () => import(/* webpackChunkName: "views/domain/dns" */ '@/views/domain/DomainDns'),
|
|
props: true,
|
|
meta: {
|
|
args: { trad: 'dns' },
|
|
breadcrumb: ['domain-list', 'domain-info', 'domain-dns']
|
|
}
|
|
},
|
|
{
|
|
name: 'domain-cert',
|
|
path: '/domains/:name/cert-management',
|
|
component: () => import(/* webpackChunkName: "views/domain/cert" */ '@/views/domain/DomainCert'),
|
|
props: true,
|
|
meta: {
|
|
args: { trad: 'certificate' },
|
|
breadcrumb: ['domain-list', 'domain-info', 'domain-cert']
|
|
}
|
|
},
|
|
|
|
/* ───────╮
|
|
│ APPS │
|
|
╰─────── */
|
|
{
|
|
name: 'app-list',
|
|
path: '/apps',
|
|
component: () => import(/* webpackChunkName: "views/apps/list" */ '@/views/app/AppList'),
|
|
meta: {
|
|
args: { trad: 'applications' },
|
|
breadcrumb: ['app-list']
|
|
}
|
|
},
|
|
{
|
|
name: 'app-catalog',
|
|
path: '/apps/catalog',
|
|
component: () => import(/* webpackChunkName: "views/apps/catalog" */ '@/views/app/AppCatalog'),
|
|
meta: {
|
|
args: { trad: 'catalog' },
|
|
breadcrumb: ['app-list', 'app-catalog']
|
|
}
|
|
},
|
|
{
|
|
name: 'app-install',
|
|
path: '/apps/install/:id',
|
|
component: () => import(/* webpackChunkName: "views/apps/install" */ '@/views/app/AppInstall'),
|
|
props: true,
|
|
meta: {
|
|
args: { trad: 'install_name', param: 'id' },
|
|
breadcrumb: ['app-list', 'app-catalog', 'app-install']
|
|
}
|
|
},
|
|
{
|
|
name: 'app-install-custom',
|
|
path: '/apps/install-custom/:id',
|
|
component: () => import(/* webpackChunkName: "views/apps/install" */ '@/views/app/AppInstall'),
|
|
props: true,
|
|
meta: {
|
|
args: { trad: 'install_name', param: 'id' },
|
|
breadcrumb: ['app-list', 'app-catalog', 'app-install-custom']
|
|
}
|
|
},
|
|
{
|
|
name: 'app-info',
|
|
path: '/apps/:id',
|
|
component: () => import(/* webpackChunkName: "views/apps/info" */ '@/views/app/AppInfo'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'id' },
|
|
breadcrumb: ['app-list', 'app-info']
|
|
}
|
|
},
|
|
{
|
|
name: 'app-actions',
|
|
path: '/apps/:id/actions',
|
|
component: () => import(/* webpackChunkName: "views/apps/actions" */ '@/views/app/AppActions'),
|
|
props: true,
|
|
meta: {
|
|
args: { trad: 'app_actions' },
|
|
breadcrumb: ['app-list', 'app-info', 'app-actions']
|
|
}
|
|
},
|
|
{
|
|
// no need for name here, only children are visited
|
|
path: '/apps/:id/config-panel',
|
|
component: () => import(/* webpackChunkName: "views/apps/config" */ '@/views/app/AppConfigPanel'),
|
|
props: true,
|
|
children: [
|
|
{
|
|
name: 'app-config-panel',
|
|
path: ':tabId?',
|
|
component: () => import(/* webpackChunkName: "components/configPanel" */ '@/components/ConfigPanel'),
|
|
props: true,
|
|
meta: {
|
|
routerParams: ['id'],
|
|
args: { trad: 'app_config_panel' },
|
|
breadcrumb: ['app-list', 'app-info', 'app-config-panel']
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
/* ────────────────╮
|
|
│ SYSTEM UPDATE │
|
|
╰──────────────── */
|
|
{
|
|
name: 'update',
|
|
path: '/update',
|
|
component: () => import(/* webpackChunkName: "views/update" */ '@/views/update/SystemUpdate'),
|
|
meta: {
|
|
args: { trad: 'system_update' },
|
|
breadcrumb: ['update']
|
|
}
|
|
},
|
|
|
|
/* ──────────╮
|
|
│ SERVICE │
|
|
╰────────── */
|
|
{
|
|
name: 'service-list',
|
|
path: '/services',
|
|
component: () => import(/* webpackChunkName: "views/service/list" */ '@/views/service/ServiceList'),
|
|
meta: {
|
|
args: { trad: 'services' },
|
|
breadcrumb: ['service-list']
|
|
}
|
|
},
|
|
{
|
|
name: 'service-info',
|
|
path: '/services/:name',
|
|
component: () => import(/* webpackChunkName: "views/service/info" */ '@/views/service/ServiceInfo'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'name' },
|
|
breadcrumb: ['service-list', 'service-info']
|
|
}
|
|
},
|
|
|
|
/* ────────╮
|
|
│ TOOLS │
|
|
╰──────── */
|
|
{
|
|
name: 'tool-list',
|
|
path: '/tools',
|
|
component: ToolList,
|
|
meta: {
|
|
args: { trad: 'tools' },
|
|
breadcrumb: ['tool-list']
|
|
}
|
|
},
|
|
{
|
|
name: 'tool-logs',
|
|
path: '/tools/logs',
|
|
component: () => import(/* webpackChunkName: "views/tools/logs" */ '@/views/tool/ToolLogs'),
|
|
meta: {
|
|
args: { trad: 'logs' },
|
|
breadcrumb: ['tool-list', 'tool-logs']
|
|
}
|
|
},
|
|
{
|
|
name: 'tool-log',
|
|
path: '/tools/logs/:name',
|
|
component: () => import(/* webpackChunkName: "views/tools/log" */ '@/views/tool/ToolLog'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'name' },
|
|
breadcrumb: ['tool-list', 'tool-logs', 'tool-log']
|
|
}
|
|
},
|
|
{
|
|
name: 'tool-migrations',
|
|
path: '/tools/migrations',
|
|
component: () => import(/* webpackChunkName: "views/tools/migrations" */ '@/views/tool/ToolMigrations'),
|
|
meta: {
|
|
args: { trad: 'migrations' },
|
|
breadcrumb: ['tool-list', 'tool-migrations']
|
|
}
|
|
},
|
|
{
|
|
name: 'tool-firewall',
|
|
path: '/tools/firewall',
|
|
component: () => import(/* webpackChunkName: "views/tools/firewall" */ '@/views/tool/ToolFirewall'),
|
|
meta: {
|
|
args: { trad: 'firewall' },
|
|
breadcrumb: ['tool-list', 'tool-firewall']
|
|
}
|
|
},
|
|
{
|
|
name: 'tool-adminpw',
|
|
path: '/tools/adminpw',
|
|
component: () => import(/* webpackChunkName: "views/tools/adminpw" */ '@/views/tool/ToolAdminpw'),
|
|
meta: {
|
|
args: { trad: 'tools_adminpw' },
|
|
breadcrumb: ['tool-list', 'tool-adminpw']
|
|
}
|
|
},
|
|
{
|
|
name: 'tool-webadmin',
|
|
path: '/tools/webadmin',
|
|
component: () => import(/* webpackChunkName: "views/tools/webadmin" */ '@/views/tool/ToolWebadmin'),
|
|
meta: {
|
|
args: { trad: 'tools_webadmin_settings' },
|
|
breadcrumb: ['tool-list', 'tool-webadmin']
|
|
}
|
|
},
|
|
{
|
|
name: 'tool-power',
|
|
path: '/tools/power',
|
|
component: () => import(/* webpackChunkName: "views/tools/power" */ '@/views/tool/ToolPower'),
|
|
meta: {
|
|
args: { trad: 'tools_shutdown_reboot' },
|
|
breadcrumb: ['tool-list', 'tool-power']
|
|
}
|
|
},
|
|
|
|
/* ────────────╮
|
|
│ DIAGNOSIS │
|
|
╰──────────── */
|
|
{
|
|
name: 'diagnosis',
|
|
path: '/diagnosis',
|
|
component: () => import(/* webpackChunkName: "views/diagnosis" */ '@/views/diagnosis/Diagnosis'),
|
|
meta: {
|
|
args: { trad: 'diagnosis' },
|
|
breadcrumb: ['diagnosis']
|
|
}
|
|
},
|
|
|
|
/* ─────────╮
|
|
│ BACKUP │
|
|
╰───────── */
|
|
{
|
|
name: 'backup',
|
|
path: '/backup',
|
|
component: () => import(/* webpackChunkName: "views/backup/backup" */ '@/views/backup/Backup'),
|
|
meta: {
|
|
args: { trad: 'backup' },
|
|
breadcrumb: ['backup']
|
|
}
|
|
},
|
|
{
|
|
name: 'backup-list',
|
|
path: '/backup/:id',
|
|
component: () => import(/* webpackChunkName: "views/backup/list" */ '@/views/backup/BackupList'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'id' },
|
|
breadcrumb: ['backup', 'backup-list']
|
|
}
|
|
},
|
|
{
|
|
name: 'backup-info',
|
|
path: '/backup/:id/info/:name',
|
|
component: () => import(/* webpackChunkName: "views/backup/info" */ '@/views/backup/BackupInfo'),
|
|
props: true,
|
|
meta: {
|
|
args: { param: 'name' },
|
|
breadcrumb: ['backup', 'backup-list', 'backup-info']
|
|
}
|
|
},
|
|
{
|
|
name: 'backup-create',
|
|
path: '/backup/:id/create',
|
|
component: () => import(/* webpackChunkName: "views/backup/create" */ '@/views/backup/BackupCreate'),
|
|
props: true,
|
|
meta: {
|
|
args: { trad: 'backup_create' },
|
|
breadcrumb: ['backup', 'backup-list', 'backup-create']
|
|
}
|
|
}
|
|
]
|
|
|
|
export default routes
|