From 7055bddea8efd60b1425b5215e966ef3c7feda8a Mon Sep 17 00:00:00 2001 From: alfredojl Date: Mon, 24 Aug 2020 17:44:36 -0500 Subject: [PATCH] Guards agregados --- src/components/Header.vue | 26 +++++++++++------- src/routes.js | 55 +++++++++++++++++++++++++++++---------- src/views/Login.vue | 17 ++++++++++-- 3 files changed, 72 insertions(+), 26 deletions(-) diff --git a/src/components/Header.vue b/src/components/Header.vue index 3971849..9ccaae3 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -30,8 +30,9 @@
- Nombre de Usuario -
+ + +
Computadora @@ -58,17 +59,22 @@ export default { data() { - return {} + return { + user: null + } }, methods: { - logout: function() { - localStorage.removeItem('token') - localStorage.removeItem('idAdmin') - localStorage.removeItem('isAdmin') - - this.$router.push('/login') + setCurrentUser(){ + return window.localStorage.user; }, - }, + logout: function() { + localStorage.clear(); + this.$router.replace('/login') + }, + isAdmin: function() { + return JSON.parse(localStorage.getItem('isAdmin')); + } + } } diff --git a/src/routes.js b/src/routes.js index 1f5b89e..e4ff3e8 100644 --- a/src/routes.js +++ b/src/routes.js @@ -7,6 +7,10 @@ import AddEquip from './views/AddEquip.vue' import UpdateEquip from './views/UpdateEquip.vue' const routes = [{ + path: '*', + redirect: 'login' + }, + { path: '/', component: Login, name: 'start' @@ -15,25 +19,47 @@ const routes = [{ path: '/login', component: Login, name: 'login', - meta: {isPublic: true} + meta: { isPublic: true }, }, { path: '/user', component: User, name: 'user', - meta: {isPublic:true} + meta: { isPublic: true }, + beforeEnter: (to, from, next) => { + if (isAuthenticated()) + next(true); + else + next('/login'); + } }, { path: '/addEquip', component: AddEquip, name: 'addEquip', - meta: {perm:true} + meta: { perm: true }, + beforeEnter: (to, from, next) => { + if (!isAuthenticated()) + next('/login'); + else if (isAuthenticated() && !isAdmin()) + next(false) + else + next(true); + } }, { path: '/updateEquip', component: UpdateEquip, name: 'updateEquip', - meta: {perm:true} + meta: { perm: true }, + beforeEnter: (to, from, next) => { + if (!isAuthenticated()) + next('/login'); + else if (isAuthenticated() && !isAdmin()) + next(false) + else + next(true); + } }, ] @@ -44,29 +70,30 @@ Vue.use(VueRouter) const router = new VueRouter({ routes }) const isAuthenticated = function() { - return window.localStorage.token ? true : false + return !!window.localStorage.token } const isAdmin = function() { - return window.localStorage.isAdmin + return JSON.parse(window.localStorage.isAdmin) } //const isAdmon = window.localStorage.getItem('rol') ? true : false -router.beforeEach((to, from, next) => { - +/*router.beforeEach((to, from, next) => { + if (to.path !== '/login' && !isAuthenticated()) { // eslint-disable-next-line no-console //console.log("Entrando"); - return next({name: 'login'}) + return next({ name: 'login' }) } // eslint-disable-next-line no-console - if (isAuthenticated() && isAdmin() === false && to.path !== '/user') { - return next({name: 'user'}) - } + + if (isAuthenticated() && isAdmin() === false && to.path !== '/user') { + return next({ name: 'user' }) + } return next() -}) +})*/ -export default router \ No newline at end of file +export default router; \ No newline at end of file diff --git a/src/views/Login.vue b/src/views/Login.vue index c8efaf3..e1f4be6 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -11,7 +11,7 @@
Usuario o contraseña invalidos
+ +
@@ -94,11 +105,13 @@ import axios from "axios"; localStorage.setItem('isAdmin', res.data.user.isAdmin) localStorage.setItem('token', res.data.token) + localStorage.setItem('user', res.data.user.name) localStorage.setItem( 'idAdmin', res.data.user.idAdmin ) - this.$router.push('/user') + console.log(res.data.user.name); + this.$router.replace('/user') } })