diff --git a/client/app.js b/client/app.js index 994ac3d8..9cc0f3fd 100755 --- a/client/app.js +++ b/client/app.js @@ -1,5 +1,7 @@ import Vue from 'vue' import axios from 'axios' +import VueAxios from 'vue-axios' +import VueAuth from '@websanova/vue-auth' import NProgress from 'vue-nprogress' import { sync } from 'vuex-router-sync' import App from './App.vue' @@ -8,8 +10,24 @@ import store from './store' import * as filters from './filters' import { TOGGLE_SIDEBAR } from 'vuex-store/mutation-types' -Vue.prototype.$http = axios -Vue.axios = axios +Vue.router = router +Vue.use(VueAxios, axios) +Vue.use(VueAuth, { + auth: { + request: function (req, token) { + this.options.http._setHeaders.call(this, req, {Authorization: 'Bearer ' + token}) + }, + response: function (res) { + // Get Token from response body + return res.data + } + }, + http: require('@websanova/vue-auth/drivers/http/axios.1.x.js'), + router: require('@websanova/vue-auth/drivers/router/vue-router.2.x.js'), + loginData: { url: 'http://localhost:6789/login', fetchUser: false }, + refreshData: { enabled: false } +}) + Vue.use(NProgress) // Enable devtools diff --git a/client/components/layout/Navbar.vue b/client/components/layout/Navbar.vue index cab7f6a1..44e33dd1 100644 --- a/client/components/layout/Navbar.vue +++ b/client/components/layout/Navbar.vue @@ -17,7 +17,10 @@ -
+ @@ -42,9 +45,21 @@ export default { sidebar: 'sidebar' }), - methods: mapActions([ - 'toggleSidebar' - ]) + methods: { + ...mapActions([ + 'toggleSidebar' + ]), + logout () { + this.$auth.logout({ + redirect: 'Home', + makeRequest: false + // params: {}, + // success: function () {}, + // error: function () {}, + // etc... + }) + } + } } diff --git a/client/router/index.js b/client/router/index.js index 2451b922..e877cbea 100755 --- a/client/router/index.js +++ b/client/router/index.js @@ -13,6 +13,11 @@ export default new Router({ path: '/', component: require('../views/Home') }, + { + name: 'Login', + path: '/login', + component: require('../views/auth/Login') + }, ...generateRoutesFromMenu(menuModule.state.items), { path: '*', diff --git a/client/store/modules/menu/index.js b/client/store/modules/menu/index.js index 2bc04b22..1c8ae6cc 100644 --- a/client/store/modules/menu/index.js +++ b/client/store/modules/menu/index.js @@ -24,6 +24,7 @@ const state = { name: 'Axios', path: '/axiosDemo', meta: { + auth: true, icon: 'fa-rocket', link: 'axios/index.vue' }, diff --git a/client/views/auth/Login.vue b/client/views/auth/Login.vue new file mode 100644 index 00000000..615b0762 --- /dev/null +++ b/client/views/auth/Login.vue @@ -0,0 +1,105 @@ + +