1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/renderer/_vue/router/index.js

100 lines
2.2 KiB
JavaScript

import Vue from 'vue'
import Router from 'vue-router'
import store from "../store";
// Route Guard
import * as guard from './routeguard'
Vue.use(Router)
const router = new Router({
routes: [
{
path: '/',
name: 'landing-page',
component: require('@/_vue/components/LandingPage').default,
meta: {
routeguard: [
// guards in priority order; the first one to catch will trigger something
guard.whatsNew,
],
}
},
{
path: '/preferences',
name: 'preferences-page',
component: require('@/_vue/components/PreferencesPage').default,
},
{
path: '/workspaces',
name: 'workspaces-page',
component: require('@/_vue/components/WorkspacesPage').default,
props: true,
},
{
path: '/add-workspace',
name: 'add-workspace-page',
component: require('@/_vue/components/AddWorkspacePage').default,
props: true,
},
{
path: '/edit-workspace',
name: 'edit-workspace-page',
component: require('@/_vue/components/EditWorkspacePage').default,
props: true,
},
{
path: '/clusters/:id',
name: 'cluster-page',
component: require('@/_vue/components/ClusterPage').default,
props: true,
},
{
path: '/clusters/:id/settings',
name: 'cluster-settings-page',
component: require('@/_vue/components/ClusterSettings').default,
props: true,
},
{
path: "/add-cluster",
name: "add-cluster-page",
component: require('@/_vue/components/AddClusterPage').default,
props: true,
},
{
path: "/whats-new",
name: "whats-new-page",
component: require('@/_vue/components/WhatsNewPage').default,
props: true,
},
{
path: '*',
redirect: '/'
}
]
})
router.beforeEach((to, from, next) => {
// guard routes
if(to.meta && to.meta.routeguard && to.meta.routeguard.length > 0){
let guardNext;
to.meta.routeguard.forEach(guard => {
if(!guardNext) guardNext = guard(to, from, store);
});
if(guardNext) {
next(guardNext);
} else {
next();
}
}
next();
});
export default router;