ffplayout/store/auth.js

68 lines
1.8 KiB
JavaScript
Raw Normal View History

2020-01-29 17:40:15 +01:00
/* eslint-disable camelcase */
import jwt_decode from 'jwt-decode'
export const state = () => ({
2020-04-21 15:28:18 +02:00
jwtToken: '',
2020-01-29 17:40:15 +01:00
isLogin: false
})
// mutate values in state
export const mutations = {
2022-06-30 18:39:01 +02:00
UPDATE_TOKEN (state, obj) {
2020-01-29 17:40:15 +01:00
state.jwtToken = obj.token
2020-05-25 22:37:44 +02:00
this.$cookies.set('token', obj.token, {
path: '/',
maxAge: 60 * 60 * 24 * 365,
sameSite: 'lax'
})
2020-01-29 17:40:15 +01:00
},
2020-05-25 22:37:44 +02:00
UPDATE_IS_LOGIN (state, bool) {
state.isLogin = bool
},
2020-01-29 17:40:15 +01:00
REMOVE_TOKEN (state) {
2020-04-21 15:28:18 +02:00
this.$cookies.remove('token')
2020-01-29 17:40:15 +01:00
state.jwtToken = null
}
}
export const actions = {
async obtainToken ({ commit }, { username, password }) {
2020-01-29 17:40:15 +01:00
const payload = {
username,
password
}
2020-05-12 18:07:53 +02:00
let code = null
2022-06-30 18:39:01 +02:00
await this.$axios.post('auth/login/', payload)
2020-01-29 17:40:15 +01:00
.then((response) => {
2022-06-30 18:39:01 +02:00
commit('UPDATE_TOKEN', { token: response.data.user.token })
2020-01-29 17:40:15 +01:00
commit('UPDATE_IS_LOGIN', true)
2020-05-12 18:07:53 +02:00
code = response.status
2020-01-29 17:40:15 +01:00
})
.catch((error) => {
2020-05-12 18:07:53 +02:00
code = error.response.status
2020-01-29 17:40:15 +01:00
})
2020-05-12 18:07:53 +02:00
return code
2020-01-29 17:40:15 +01:00
},
inspectToken ({ commit, state }) {
2020-04-21 15:28:18 +02:00
const token = this.$cookies.get('token')
2022-06-30 18:39:01 +02:00
if (token) {
commit('UPDATE_TOKEN', { token })
2020-01-29 17:40:15 +01:00
const decoded_token = jwt_decode(token)
const timestamp = Date.now() / 1000
const expire_token = decoded_token.exp
2020-05-25 22:37:44 +02:00
2020-09-15 10:27:21 +02:00
if (state.jwtToken && expire_token - timestamp > 15) {
2020-01-29 17:40:15 +01:00
commit('UPDATE_IS_LOGIN', true)
} else {
// PROMPT USER TO RE-LOGIN, THIS ELSE CLAUSE COVERS THE CONDITION WHERE A TOKEN IS EXPIRED AS WELL
commit('UPDATE_IS_LOGIN', false)
}
} else {
commit('UPDATE_IS_LOGIN', false)
}
}
}