diff --git a/src/api/admin.js b/src/api/admin.js index 85dd8dba6..c9b9316a5 100644 --- a/src/api/admin.js +++ b/src/api/admin.js @@ -18,4 +18,29 @@ adminApi.install = data => { method: 'post' }) } + +adminApi.login = (username, password) => { + return service({ + url: `${baseUrl}/login`, + data: { + username: username, + password: password + }, + method: 'post' + }) +} + +adminApi.logout = () => { + return service({ + url: `${baseUrl}/logout`, + method: 'post' + }) +} + +adminApi.refreshToken = refreshToken => { + return service({ + url: `${baseUrl}/refresh/${refreshToken}`, + method: 'post' + }) +} export default adminApi diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 3a0ed42e9..3f4de9085 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,3 +1,7 @@ +import Vue from 'vue' +import { ACCESS_TOKEN } from '@/store/mutation-types' +import adminApi from '@/api/admin' + const user = { state: { token: '', @@ -6,9 +10,9 @@ const user = { roles: [], info: {} }, - mutations: { SET_TOKEN: (state, token) => { + Vue.ls.set(ACCESS_TOKEN, token) state.token = token }, SET_NAME: (state, { name }) => { @@ -24,8 +28,23 @@ const user = { state.info = info } }, - actions: { + login({ commit }, { username, password }) { + return new Promise((resolve, reject) => { + adminApi + .login(username, password) + .then(response => { + const token = response.data.data + Vue.$log.debug('Got token', token) + commit('SET_TOKEN', token) + + resolve(response) + }) + .catch(error => { + reject(error) + }) + }) + } } } diff --git a/src/utils/service.js b/src/utils/service.js index cda003493..a704835ef 100644 --- a/src/utils/service.js +++ b/src/utils/service.js @@ -3,6 +3,7 @@ import NProgress from 'nprogress' import 'nprogress/nprogress.css' import Vue from 'vue' import { message } from 'ant-design-vue' +import store from '@/store' const service = axios.create({ baseURL: process.env.NODE_ENV === 'production' ? '' : 'http://localhost:8090', @@ -14,6 +15,11 @@ service.interceptors.request.use( config => { NProgress.start() // TODO set token + const token = store.getters.token + Vue.$log.debug('Got token from store', token) + if (token && token.access_token) { + config.headers['Admin-Authorization'] = token.access_token + } return config }, error => { diff --git a/src/views/user/Login.vue b/src/views/user/Login.vue index 902367cdd..f3f72afae 100644 --- a/src/views/user/Login.vue +++ b/src/views/user/Login.vue @@ -4,12 +4,18 @@ Halo