mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-29 12:41: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
 |