You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
969 B
33 lines
969 B
var routes = [];
|
|
const router = new VueRouter();
|
|
router.beforeEach((to, from, next) => {
|
|
if (to.path !== '/pages/login.html') {
|
|
var valid = false;
|
|
if (store.state.token.accessToken) {
|
|
var jwt = jwt_decode(store.state.token.accessToken);
|
|
}
|
|
if (!valid) {
|
|
router.push('/pages/login.html');
|
|
}
|
|
}
|
|
var url = to.path === '/' ? '/pages/home.html' : to.path;
|
|
var name = url.replace(/\//g, "-").replace(/\./g, "-").substring(1);
|
|
var route = routes[name];
|
|
if (!route) {
|
|
axios.get(url).then(function (response) {
|
|
var model = parseModel(response);
|
|
route = {
|
|
name: name,
|
|
path: to.path,
|
|
component: model,
|
|
meta: model.meta
|
|
};
|
|
router.addRoutes([route]);
|
|
routes[name] = route;
|
|
router.push(to.path);
|
|
});
|
|
}
|
|
else {
|
|
next();
|
|
}
|
|
}); |