summaryrefslogtreecommitdiff
path: root/src/router
diff options
context:
space:
mode:
authorDerick Montague <derick.montague@ibm.com>2019-12-05 01:30:08 +0300
committerDerick Montague <derick.montague@ibm.com>2020-01-23 02:44:50 +0300
commite080a1a7593e83a49d623ffdd452fd0e1c617889 (patch)
treebb94dee85cae80a3f54f4fbcf1d816f304129e67 /src/router
parent186ce2e407812f417aba7a2ee2ab6cae5d5f3b0e (diff)
downloadwebui-vue-e080a1a7593e83a49d623ffdd452fd0e1c617889.tar.xz
Add login and logout functionality
- Add AuthenticationStore - Add ability to login and logout - Add route navigation guard - Add login styles - Add temporary authentication for api call - Add Login directory - Add index.js In order to login a .env.development.local file that contains BASE_URL="https://<ip address> or <FQDN>" Signed-off-by: Derick Montague <derick.montague@ibm.com> Change-Id: I88b93e287e66f4bae82a1ec2934cdef12d78264e
Diffstat (limited to 'src/router')
-rw-r--r--src/router/index.js47
1 files changed, 33 insertions, 14 deletions
diff --git a/src/router/index.js b/src/router/index.js
index 11d1a475..698aa700 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,28 +1,35 @@
import Vue from "vue";
import VueRouter from "vue-router";
+import store from "../store/index";
+import AppLayout from "../layouts/AppLayout.vue";
Vue.use(VueRouter);
const routes = [
{
path: "/",
- name: "overview",
- component: () => import("@/views/Overview")
+ name: "",
+ meta: {
+ requiresAuth: true
+ },
+ component: AppLayout,
+ children: [
+ {
+ path: "",
+ component: () => import("@/views/Overview")
+ },
+ {
+ path: "/access-control/local-user-management",
+ name: "local-users",
+ component: () => import("@/views/AccessControl/LocalUserManagement")
+ }
+ ]
},
{
- path: "/access-control/local-user-management",
- name: "local-users",
- component: () => import("@/views/AccessControl/LocalUserManagement")
+ path: "/login",
+ name: "login",
+ component: () => import("@/views/Login")
}
- // {
- // path: "/about",
- // name: "about",
- // // route level code-splitting
- // // this generates a separate chunk (about.[hash].js) for this route
- // // which is lazy-loaded when the route is visited.
- // component: () =>
- // import(/* webpackChunkName: "about" */ "../views/About.vue")
- // }
];
const router = new VueRouter({
@@ -32,4 +39,16 @@ const router = new VueRouter({
linkExactActiveClass: "nav__link--current"
});
+router.beforeEach((to, from, next) => {
+ if (to.matched.some(record => record.meta.requiresAuth)) {
+ if (store.getters["authentication/isLoggedIn"]) {
+ next();
+ return;
+ }
+ next("/login");
+ } else {
+ next();
+ }
+});
+
export default router;