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.

147 lines
3.6 KiB

import Vue from 'vue'
import VueRouter from 'vue-router'
const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err);
}
Vue.use(VueRouter)
const routes = [
{
path: '/',
component: () => import('../components/home'),
children: [{
path: "/",
name: "index",
component: () => import('../components/index')
}, {
path: "/sort",
name: "sort",
component: () => import('../components/sort')
}, {
path: "/article",
name: "article",
component: () => import('../components/article')
}, {
path: "/weiYan",
name: "weiYan",
component: () => import('../components/weiYan')
}, {
path: "/love",
name: "love",
component: () => import('../components/love')
}, {
path: "/favorite",
name: "favorite",
component: () => import('../components/favorite')
}, {
path: "/message",
name: "message",
component: () => import('../components/message')
}, {
path: "/friend",
name: "friend",
component: () => import('../components/friend')
}, {
path: "/funny",
name: "funny",
component: () => import('../components/funny')
}, {
path: "/about",
name: "about",
component: () => import('../components/about')
}, {
path: "/user",
name: "user",
component: () => import('../components/user')
}, {
path: "/letter",
name: "letter",
component: () => import('../components/letter')
}]
},
{
path: '/admin',
redirect: '/main',
meta: {requiresAuth: true},
component: () => import('../components/admin/admin'),
children: [{
path: '/main',
name: 'main',
component: () => import('../components/admin/main')
}, {
path: '/webEdit',
name: 'webEdit',
component: () => import('../components/admin/webEdit')
}, {
path: '/userList',
name: 'userList',
component: () => import('../components/admin/userList')
}, {
path: '/postList',
name: 'postList',
component: () => import('../components/admin/postList')
}, {
path: '/postEdit',
name: 'postEdit',
component: () => import('../components/admin/postEdit')
}, {
path: '/sortList',
name: 'sortList',
component: () => import('../components/admin/sortList')
}, {
path: '/commentList',
name: 'commentList',
component: () => import('../components/admin/commentList')
}, {
path: '/treeHoleList',
name: 'treeHoleList',
component: () => import('../components/admin/treeHoleList')
}, {
path: '/resourceList',
name: 'resourceList',
component: () => import('../components/admin/resourceList')
}, {
path: '/loveList',
name: 'loveList',
component: () => import('../components/admin/loveList')
}, {
path: '/resourcePathList',
name: 'resourcePathList',
component: () => import('../components/admin/resourcePathList')
}]
},
{
path: '/verify',
name: 'verify',
component: () => import('../components/admin/verify')
}
]
const router = new VueRouter({
mode: "history",
routes: routes,
scrollBehavior(to, from, savedPosition) {
return {x: 0, y: 0}
}
})
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
if (!Boolean(localStorage.getItem("adminToken"))) {
next({
path: '/verify',
query: {redirect: to.fullPath}
});
} else {
next();
}
} else {
next();
}
})
export default router