Skip to content

Instantly share code, notes, and snippets.

@vitorvargasdev
Last active November 10, 2019 04:40
Show Gist options
  • Save vitorvargasdev/2b3f84a7f050967bdc55b66c05d4236b to your computer and use it in GitHub Desktop.
Save vitorvargasdev/2b3f84a7f050967bdc55b66c05d4236b to your computer and use it in GitHub Desktop.
import Axios from "axios"
export default {
namespaced: true,
state: {
token: "",
userData: {}
},
getters:
{
hasToken(state)
{
return !!state.token
},
isLogged(state, getters)
{
return state.userData.id > 0 && getters.hasToken
},
isAdmin(state, getters)
{
return getters.isLogged && state.userData.cargo > 1
}
},
mutations: {
updateToken(state, payload) {
state.token = payload
localStorage.setItem("_token", payload);
},
updateUserData(state, payload) {
state.userData = payload
},
userLogout(state) {
localStorage.removeItem("_token")
state.token = ""
state.userData = []
}
},
actions: {
setToken({ commit }, payload) {
commit('updateToken', payload)
},
setUser({ commit, state, getters }) {
async function getData(token) {
return await Axios.get('/api/user', { headers: { Authorization: 'Bearer ' + token } })
}
if (getters.isLogged || localStorage.getItem('_token')) {
getters.isLogged ? false : commit('updateToken', localStorage.getItem('_token'))
getData(state.token).then(res => {
commit('updateUserData', res.data)
})
setInterval(() => {
getData(state.token).then(res => {
commit('updateUserData', res.data)
})
}, 200000)
}
},
userLogout({ commit }) {
commit('userLogout')
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment