Fixed #57: now refresh jwt token on page refresh

This commit is contained in:
Eliot Berriot 2017-12-26 14:47:27 +01:00
parent 8fa7330602
commit f1557ac4b9
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
4 changed files with 53 additions and 4 deletions

View file

@ -1,9 +1,11 @@
import Vue from 'vue'
import jwtDecode from 'jwt-decode'
import config from '@/config'
import logger from '@/logging'
import router from '@/router'
const LOGIN_URL = config.API_URL + 'token/'
const REFRESH_TOKEN_URL = config.API_URL + 'token/refresh/'
const USER_PROFILE_URL = config.API_URL + 'users/users/me/'
export default {
@ -13,7 +15,8 @@ export default {
username: '',
availablePermissions: {},
profile: null,
token: ''
token: '',
tokenData: {}
},
getters: {
header: state => {
@ -32,6 +35,7 @@ export default {
},
token: (state, value) => {
state.token = value
state.tokenData = jwtDecode(value)
},
permission: (state, {key, status}) => {
state.availablePermissions[key] = status
@ -70,6 +74,7 @@ export default {
commit('token', jwt)
logger.default.info('Logged back in as ' + username)
dispatch('fetchProfile')
dispatch('refreshToken')
} else {
logger.default.info('Anonymous user')
commit('authenticated', false)
@ -90,6 +95,15 @@ export default {
}, (response) => {
logger.default.info('Error while fetching user profile')
})
},
refreshToken ({commit, dispatch, state}) {
let resource = Vue.resource(REFRESH_TOKEN_URL)
return resource.save({}, {token: state.token}).then(response => {
logger.default.info('Refreshed auth token')
commit('token', response.data.token)
}, response => {
logger.default.error('Error while refreshing token', response.data)
})
}
}
}