54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import { createRouter, createWebHashHistory } from 'vue-router'
|
|
|
|
import AdminLayout from '~/layouts/AdminLayout.vue'
|
|
import LoginPage from '~/pages/login.vue'
|
|
import DashboardPage from '~/pages/dashboard.vue'
|
|
import SpotsPage from '~/pages/spots.vue'
|
|
import EventsPage from '~/pages/events.vue'
|
|
import ShootingPage from '~/pages/shooting.vue'
|
|
import ModuleDesignPage from '~/pages/module-design.vue'
|
|
import NavConfigsPage from '~/pages/nav-configs.vue'
|
|
import PromotionsPage from '~/pages/promotions.vue'
|
|
import UsersPage from '~/pages/users.vue'
|
|
import MembershipPage from '~/pages/membership.vue'
|
|
import OpsPage from '~/pages/ops.vue'
|
|
import { getAdminToken } from '~/composables/admin-auth'
|
|
|
|
const router = createRouter({
|
|
history: createWebHashHistory(),
|
|
routes: [
|
|
{
|
|
path: '/',
|
|
component: AdminLayout,
|
|
children: [
|
|
{ path: '', redirect: '/dashboard' },
|
|
{ path: 'dashboard', component: DashboardPage },
|
|
{ path: 'spots', component: SpotsPage },
|
|
{ path: 'events', component: EventsPage },
|
|
{ path: 'shooting', component: ShootingPage },
|
|
{ path: 'module-design', component: ModuleDesignPage },
|
|
{ path: 'nav-configs', component: NavConfigsPage },
|
|
{ path: 'promotions', component: PromotionsPage },
|
|
{ path: 'users', component: UsersPage },
|
|
{ path: 'membership', component: MembershipPage },
|
|
{ path: 'ops', component: OpsPage },
|
|
],
|
|
},
|
|
{ path: '/login', component: LoginPage },
|
|
],
|
|
})
|
|
|
|
router.beforeEach((to, _from, next) => {
|
|
if (to.path === '/login') {
|
|
next()
|
|
return
|
|
}
|
|
if (!getAdminToken()) {
|
|
next('/login')
|
|
return
|
|
}
|
|
next()
|
|
})
|
|
|
|
export default router
|