mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-28 04:01:10 -04:00
40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
import { createRouter, createWebHistory } from 'vue-router'
|
|
import { useUserStore } from '@/scripts/admin/stores/user'
|
|
import { useGlobalStore } from '@/scripts/admin/stores/global'
|
|
|
|
//admin routes
|
|
import AdminRoutes from '@/scripts/admin/admin-router'
|
|
// Customers routes
|
|
import CustomerRoutes from '@/scripts/customer/customer-router'
|
|
//Payment Routes
|
|
|
|
let routes = []
|
|
routes = routes.concat(AdminRoutes, CustomerRoutes)
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
linkActiveClass: 'active',
|
|
routes,
|
|
})
|
|
|
|
router.beforeEach((to, from, next) => {
|
|
const userStore = useUserStore()
|
|
const globalStore = useGlobalStore()
|
|
let ability = to.meta.ability
|
|
const { isAppLoaded } = globalStore
|
|
|
|
if (ability && isAppLoaded && to.meta.requiresAuth) {
|
|
if (userStore.hasAbilities(ability)) {
|
|
next()
|
|
} else next({ name: 'account.settings' })
|
|
} else if (to.meta.isOwner && isAppLoaded) {
|
|
if (userStore.currentUser.is_owner) {
|
|
next()
|
|
} else next({ name: 'dashboard' })
|
|
} else {
|
|
next()
|
|
}
|
|
})
|
|
|
|
export default router
|