blob: 5db985cdacfd0f55ce22c278ddf86f81aa34cda8 [file] [log] [blame]
import Vue from 'vue';
import VueRouter from 'vue-router';
import store from '../store/index';
import AppLayout from '../layouts/AppLayout.vue';
import LoginLayout from '@/layouts/LoginLayout';
import ConsoleLayout from '@/layouts/ConsoleLayout.vue';
import Overview from '@/views/Overview';
import ProfileSettings from '@/views/ProfileSettings';
import EventLogs from '@/views/Health/EventLogs';
import HardwareStatus from '@/views/Health/HardwareStatus';
import Sensors from '@/views/Health/Sensors';
import Ldap from '@/views/AccessControl/Ldap';
import LocalUserManagement from '@/views/AccessControl/LocalUserManagement';
import SslCertificates from '@/views/AccessControl/SslCertificates';
import DateTimeSettings from '@/views/Configuration/DateTimeSettings';
import Firmware from '@/views/Configuration/Firmware';
import Kvm from '@/views/Control/Kvm';
import ManagePowerUsage from '@/views/Control/ManagePowerUsage';
import NetworkSettings from '@/views/Configuration/NetworkSettings';
import RebootBmc from '@/views/Control/RebootBmc';
import ServerLed from '@/views/Control/ServerLed';
import SerialOverLan from '@/views/Control/SerialOverLan';
import ServerPowerOperations from '@/views/Control/ServerPowerOperations';
import Unauthorized from '@/views/Unauthorized';
import Login from '@/views/Login';
import ChangePassword from '@/views/ChangePassword';
import SerialOverLanConsole from '@/views/Control/SerialOverLan/SerialOverLanConsole';
import KvmConsole from '@/views/Control/Kvm/KvmConsole';
Vue.use(VueRouter);
// Meta title is translated using i18n in App.vue and PageTitle.Vue
// Example meta: {title: 'appPageTitle.overview'}
const routes = [
{
path: '/',
meta: {
requiresAuth: true
},
component: AppLayout,
children: [
{
path: '',
name: 'overview',
component: Overview,
meta: {
title: 'appPageTitle.overview'
}
},
{
path: '/profile-settings',
name: 'profile-settings',
component: ProfileSettings,
meta: {
title: 'appPageTitle.profileSettings'
}
},
{
path: '/health/event-logs',
name: 'event-logs',
component: EventLogs,
meta: {
title: 'appPageTitle.eventLogs'
}
},
{
path: '/health/hardware-status',
name: 'hardware-status',
component: HardwareStatus,
meta: {
title: 'appPageTitle.hardwareStatus'
}
},
{
path: '/health/sensors',
name: 'sensors',
component: Sensors,
meta: {
title: 'appPageTitle.sensors'
}
},
{
path: '/access-control/ldap',
name: 'ldap',
component: Ldap,
meta: {
title: 'appPageTitle.ldap'
}
},
{
path: '/access-control/local-user-management',
name: 'local-users',
component: LocalUserManagement,
meta: {
title: 'appPageTitle.localUserManagement'
}
},
{
path: '/access-control/ssl-certificates',
name: 'ssl-certificates',
component: SslCertificates,
meta: {
title: 'appPageTitle.sslCertificates'
}
},
{
path: '/configuration/date-time-settings',
name: 'date-time-settings',
component: DateTimeSettings,
meta: {
title: 'appPageTitle.dateTimeSettings'
}
},
{
path: '/configuration/firmware',
name: 'firmware',
component: Firmware,
meta: {
title: 'appPageTitle.firmware'
}
},
{
path: '/control/kvm',
name: 'kvm',
component: Kvm,
meta: {
title: 'appPageTitle.kvm'
}
},
{
path: '/control/manage-power-usage',
name: 'manage-power-usage',
component: ManagePowerUsage,
meta: {
title: 'appPageTitle.managePowerUsage'
}
},
{
path: '/configuration/network-settings',
name: 'network-settings',
component: NetworkSettings,
meta: {
title: 'appPageTitle.networkSettings'
}
},
{
path: '/control/reboot-bmc',
name: 'reboot-bmc',
component: RebootBmc,
meta: {
title: 'appPageTitle.rebootBmc'
}
},
{
path: '/control/server-led',
name: 'server-led',
component: ServerLed,
meta: {
title: 'appPageTitle.serverLed'
}
},
{
path: '/control/serial-over-lan',
name: 'serial-over-lan',
component: SerialOverLan,
meta: {
title: 'appPageTitle.serialOverLan'
}
},
{
path: '/control/server-power-operations',
name: 'server-power-operations',
component: ServerPowerOperations,
meta: {
title: 'appPageTitle.serverPowerOperations'
}
},
{
path: '/control/virtual-media',
name: 'virtual-media',
component: () => import('@/views/Control/VirtualMedia'),
meta: {
title: 'appPageTitle.virtualMedia'
}
},
{
path: '/unauthorized',
name: 'unauthorized',
component: Unauthorized,
meta: {
title: 'appPageTitle.unauthorized'
}
}
]
},
{
path: '/login',
component: LoginLayout,
children: [
{
path: '',
name: 'login',
component: Login,
meta: {
title: 'appPageTitle.login'
}
},
{
path: '/change-password',
name: 'change-password',
component: ChangePassword,
meta: {
title: 'appPageTitle.changePassword',
requiresAuth: true
}
}
]
},
{
path: '/console',
component: ConsoleLayout,
meta: {
requiresAuth: true
},
children: [
{
path: 'serial-over-lan-console',
name: 'serial-over-lan-console',
component: SerialOverLanConsole,
meta: {
title: 'appPageTitle.serialOverLan'
}
},
{
path: 'kvm',
name: 'kvm-console',
component: KvmConsole,
meta: {
title: 'appPageTitle.kvm'
}
}
]
}
];
const router = new VueRouter({
base: process.env.BASE_URL,
routes,
linkExactActiveClass: 'nav-link--current'
});
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
if (store.getters['authentication/isLoggedIn']) {
next();
return;
}
next('/login');
} else {
next();
}
});
export default router;