mirror of https://github.com/halo-dev/halo
91 lines
2.1 KiB
JavaScript
91 lines
2.1 KiB
JavaScript
import Vue from 'vue'
|
|
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
|
import adminApi from '@/api/admin'
|
|
|
|
const user = {
|
|
state: {
|
|
token: '',
|
|
name: '',
|
|
avatar: '',
|
|
roles: [],
|
|
info: {}
|
|
},
|
|
mutations: {
|
|
SET_TOKEN: (state, token) => {
|
|
Vue.ls.set(ACCESS_TOKEN, token)
|
|
state.token = token
|
|
},
|
|
SET_NAME: (state, { name }) => {
|
|
state.name = name
|
|
},
|
|
SET_AVATAR: (state, avatar) => {
|
|
state.avatar = avatar
|
|
},
|
|
SET_ROLES: (state, roles) => {
|
|
state.roles = roles
|
|
},
|
|
SET_INFO: (state, info) => {
|
|
state.info = info
|
|
},
|
|
CLEAR_TOKEN: state => {
|
|
Vue.ls.remove(ACCESS_TOKEN)
|
|
state.token = null
|
|
}
|
|
},
|
|
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)
|
|
})
|
|
})
|
|
},
|
|
logout({ commit }) {
|
|
return new Promise(resolve => {
|
|
commit('CLEAR_TOKEN')
|
|
adminApi
|
|
.logout()
|
|
.then(response => {
|
|
resolve()
|
|
})
|
|
.catch(() => {
|
|
resolve()
|
|
})
|
|
})
|
|
},
|
|
refreshToken({ commit }, refreshToken) {
|
|
return new Promise((resolve, reject) => {
|
|
adminApi
|
|
.refreshToken(refreshToken)
|
|
.then(response => {
|
|
const token = response.data.data
|
|
Vue.$log.debug('Got token', token)
|
|
commit('SET_TOKEN', token)
|
|
|
|
resolve(response)
|
|
})
|
|
.catch(error => {
|
|
const data = error.response.data
|
|
Vue.$log.debug('Refresh error data', data)
|
|
if (data && data.status === 400 && data.data === refreshToken) {
|
|
// The refresh token expired
|
|
commit('CLEAR_TOKEN')
|
|
}
|
|
reject(error)
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
export default user
|