flaschengeist-frontend/src/store/modules/login.js

108 lines
2.3 KiB
JavaScript
Raw Normal View History

2020-01-14 21:01:24 +00:00
import axios from 'axios'
import router from '@/router'
import url from '@/plugins/routes'
const state = {
2020-01-14 21:01:24 +00:00
user: {
username: null,
accessToken: null,
group: null
},
loggingIn: false,
loginError: null
}
const mutations = {
2020-01-14 21:01:24 +00:00
loginStart: state => (state.loggingIn = true),
loginStop(state, errorMessage) {
state.loggingIn = false
state.loginError = errorMessage
},
updateAccessToken(state, data) {
if (typeof data === typeof '') {
data = JSON.parse(data)
}
2020-01-14 21:01:24 +00:00
if (data === null || data === undefined) {
state.user.username = null
state.user.accessToken = null
state.user.group = null
} else {
state.user.username = data.username
state.user.accessToken = data.accessToken
state.user.group = data.group
}
},
logout(state) {
state.user.accessToken = null
state.user.username = null
state.user.group = null
}
}
const actions = {
2020-01-14 21:01:24 +00:00
async doLogin({ commit }, loginData) {
commit('loginStart')
try {
const response = await axios.post(url.login, { ...loginData })
localStorage.setItem(
'user',
JSON.stringify({
username: response.data.username,
accessToken: response.data.token,
group: response.data.group
})
)
commit('loginStop', null)
commit('updateAccessToken', response.data)
if (state.user.group.includes('moneymaster')) {
router.push('/finanzer')
} else if (state.user.group.includes('bar')) {
router.push('/bar')
}
} catch (err) {
commit('loginStop', err.response.data.error)
commit('updateAccessToken', {
username: null,
accessToken: null,
group: null
})
}
2020-01-14 21:01:24 +00:00
},
fetchAccessToken({ commit }) {
commit('updateAccessToken', localStorage.getItem('user'))
},
logout({ commit }) {
localStorage.removeItem('user')
commit('logout')
router.push('/login')
},
resetLoginError({ commit }) {
commit('loginStop')
}
}
const getters = {
2020-01-14 21:01:24 +00:00
getGroup: state => {
return state.user.group
},
group: state => {
return state.user.group
},
getToken: state => {
return state.user.accessToken
},
token: state => {
return state.user.accessToken
},
loginError: state => {
return state.loginError
}
}
export default {
2020-01-14 21:01:24 +00:00
state,
mutations,
actions,
getters
}