-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrouter.js
More file actions
76 lines (73 loc) · 2.15 KB
/
Copy pathrouter.js
File metadata and controls
76 lines (73 loc) · 2.15 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { createWebHistory, createRouter } from 'vue-router'
import store from './store.js'
const authGuard = (to, from, next) => {
const loggedIn = !!store.state.user
const requiresAuth = to.matched.some((record) => record.meta.requiresAuth)
if (loggedIn === requiresAuth) {
next()
} else if (!loggedIn && requiresAuth) {
next('/login')
} else if (loggedIn && !requiresAuth) {
next('/home')
} else {
// should not get here
console.log(loggedIn, requiresAuth)
}
}
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/login',
name: 'LogIn',
component: () => import('/src/pages/LogIn.vue'),
beforeEnter: authGuard,
meta: { requiresAuth: false, layout: 'layout-public' }, // renu
},
{
path: '/home',
name: 'Home',
component: () => import('/src/pages/Home.vue'),
beforeEnter: authGuard,
meta: { requiresAuth: true, layout: 'layout-secure' },
},
{
path: '/cases',
name: 'Cases',
component: () => import('/src/pages/Cases.vue'),
beforeEnter: authGuard,
meta: { requiresAuth: true, layout: 'layout-secure' },
},
{
path: '/newcase',
name: 'New Case',
component: () => import('/src/pages/NewCase.vue'),
beforeEnter: authGuard,
meta: { requiresAuth: true, layout: 'layout-secure' },
},
{
path: '/account',
name: 'Account',
component: () => import('/src/pages/Account.vue'),
beforeEnter: authGuard,
meta: { requiresAuth: true, layout: 'layout-secure' },
},
{
path: '/requests',
name: 'Requests',
component: () => import('/src/pages/Requests.vue'),
beforeEnter: authGuard,
meta: { requiresAuth: true, layout: 'layout-secure' },
},
{
path: '/details/:caseId',
name: 'Details',
component: () => import('/src/pages/Details.vue'),
beforeEnter: authGuard,
meta: { requiresAuth: true, layout: 'layout-secure' },
props: (route) => ({ caseId: route.params.caseId }),
},
{ path: '/:catchAll(.*)', name: 'catchAll', redirect: { name: 'LogIn' } },
],
})
export default router