1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import { createRouter, createWebHistory } from 'vue-router' import { useUserStore } from '@/stores/user'
const router = createRouter({ history: createWebHistory(), routes: [ { path: '/dashboard', component: () => import('@/pages/Dashboard.vue'), meta: { requiresAuth: true } }, { path: '/admin', component: () => import('@/pages/Admin.vue'), meta: { requiresAuth: true, roles: ['admin'] } } ] })
router.beforeEach(async (to, from, next) => { const userStore = useUserStore() if (to.meta.requiresAuth && !userStore.currentUser) { next('/login') return } if (to.meta.roles && !to.meta.roles.includes(userStore.currentUser?.role)) { next('/403') return } next() })
export default router
|