Skip to content

Commit 911efd3

Browse files
committed
Vue router nagivation guard add
1 parent 9b3755c commit 911efd3

File tree

3 files changed

+82
-3
lines changed

3 files changed

+82
-3
lines changed

public/js/app.js

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58858,7 +58858,41 @@ var toastrConfigs = {
5885858858
vue__WEBPACK_IMPORTED_MODULE_0___default.a.use(cxlt_vue2_toastr__WEBPACK_IMPORTED_MODULE_4___default.a, toastrConfigs);
5885958859
vue__WEBPACK_IMPORTED_MODULE_0___default.a.component(vform__WEBPACK_IMPORTED_MODULE_2__["HasError"].name, vform__WEBPACK_IMPORTED_MODULE_2__["HasError"]);
5886058860
vue__WEBPACK_IMPORTED_MODULE_0___default.a.component(vform__WEBPACK_IMPORTED_MODULE_2__["AlertError"].name, vform__WEBPACK_IMPORTED_MODULE_2__["AlertError"]);
58861-
vue__WEBPACK_IMPORTED_MODULE_0___default.a.component('app-header', __webpack_require__(/*! ./components/Header.vue */ "./resources/js/components/Header.vue")["default"]); // check authentication
58861+
vue__WEBPACK_IMPORTED_MODULE_0___default.a.component('app-header', __webpack_require__(/*! ./components/Header.vue */ "./resources/js/components/Header.vue")["default"]); // Vue Router Nagivation Guard
58862+
58863+
function isLoggedIn() {
58864+
return _store_index__WEBPACK_IMPORTED_MODULE_3__["default"].getters.getAuthenticated;
58865+
}
58866+
58867+
_router_index__WEBPACK_IMPORTED_MODULE_1__["default"].beforeEach(function (to, from, next) {
58868+
if (to.matched.some(function (record) {
58869+
return record.meta.requiresAuth;
58870+
})) {
58871+
// this route requires auth, check if logged in
58872+
// if not, redirect to login page.
58873+
if (!isLoggedIn()) {
58874+
next({
58875+
name: 'login'
58876+
});
58877+
} else {
58878+
next();
58879+
}
58880+
} else if (to.matched.some(function (record) {
58881+
return record.meta.requiresVisitor;
58882+
})) {
58883+
// this route requires auth, check if logged in
58884+
// if not, redirect to login page.
58885+
if (isLoggedIn()) {
58886+
next({
58887+
name: 'dashboard'
58888+
});
58889+
} else {
58890+
next();
58891+
}
58892+
} else {
58893+
next(); // make sure to always call next()!
58894+
}
58895+
}); // check authentication
5886258896

5886358897
var auth = localStorage.getItem("auth");
5886458898

@@ -59661,11 +59695,17 @@ var routes = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({
5966159695
}, {
5966259696
path: '/auth/login',
5966359697
component: _pages_auth_Login_vue__WEBPACK_IMPORTED_MODULE_10__["default"],
59664-
name: 'login'
59698+
name: 'login',
59699+
meta: {
59700+
requiresVisitor: true
59701+
}
5966559702
}, {
5966659703
path: '/dashboard',
5966759704
component: _pages_dashboard_index_vue__WEBPACK_IMPORTED_MODULE_9__["default"],
59668-
name: 'dashboard'
59705+
name: 'dashboard',
59706+
meta: {
59707+
requiresAuth: true
59708+
}
5966959709
}]
5967059710
});
5967159711
/* harmony default export */ __webpack_exports__["default"] = (routes);

resources/js/app.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,39 @@ Vue.component(HasError.name, HasError)
2121
Vue.component(AlertError.name, AlertError)
2222
Vue.component('app-header', require('./components/Header.vue').default);
2323

24+
25+
// Vue Router Nagivation Guard
26+
function isLoggedIn() {
27+
return store.getters.getAuthenticated;
28+
}
29+
30+
routes.beforeEach((to, from, next) => {
31+
if (to.matched.some(record => record.meta.requiresAuth)) {
32+
// this route requires auth, check if logged in
33+
// if not, redirect to login page.
34+
if (!isLoggedIn()) {
35+
next({
36+
name: 'login',
37+
})
38+
} else {
39+
next()
40+
}
41+
}else if (to.matched.some(record => record.meta.requiresVisitor)) {
42+
// this route requires auth, check if logged in
43+
// if not, redirect to login page.
44+
if (isLoggedIn()) {
45+
next({
46+
name: 'dashboard',
47+
})
48+
} else {
49+
next()
50+
}
51+
} else {
52+
next() // make sure to always call next()!
53+
}
54+
})
55+
56+
2457
// check authentication
2558
let auth = localStorage.getItem("auth");
2659

resources/js/router/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,17 @@ const routes = new VueRouter({
6060
path: '/auth/login',
6161
component: Login,
6262
name: 'login',
63+
meta: {
64+
requiresVisitor: true,
65+
}
6366
},
6467
{
6568
path: '/dashboard',
6669
component: Dashboard,
6770
name: 'dashboard',
71+
meta: {
72+
requiresAuth: true,
73+
}
6874
}
6975
]
7076
});

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy