134 lines
2.9 KiB
JavaScript
134 lines
2.9 KiB
JavaScript
import axios from 'axios'
|
|
import router from '@/router'
|
|
import url from '@/plugins/routes'
|
|
|
|
const state = {
|
|
user: {
|
|
username: null,
|
|
accessToken: null,
|
|
group: null
|
|
},
|
|
loggingIn: false,
|
|
loginError: null
|
|
}
|
|
|
|
const mutations = {
|
|
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)
|
|
}
|
|
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 = {
|
|
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('/main/finanzer')
|
|
} else if (state.user.group.includes('bar')) {
|
|
router.push('/main/bar/geruecht')
|
|
} else if (state.user.group.includes('user')) {
|
|
router.push('/main/user/add')
|
|
}
|
|
} catch (err) {
|
|
commit('loginStop', err.response.data.error)
|
|
commit('updateAccessToken', {
|
|
username: null,
|
|
accessToken: null,
|
|
group: null
|
|
})
|
|
}
|
|
},
|
|
fetchAccessToken({ commit }) {
|
|
commit('updateAccessToken', localStorage.getItem('user'))
|
|
},
|
|
logout({ commit }) {
|
|
localStorage.removeItem('user')
|
|
commit('logout')
|
|
router.push('/login')
|
|
},
|
|
resetLoginError({ commit }) {
|
|
commit('loginStop')
|
|
}
|
|
}
|
|
|
|
const getters = {
|
|
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
|
|
},
|
|
isBar: state => {
|
|
try {
|
|
return state.user.group.includes('bar') ? true : false
|
|
} catch (e) {
|
|
return false
|
|
}
|
|
},
|
|
isFinanzer: state => {
|
|
try {
|
|
return state.user.group.includes('moneymaster') ? true : false
|
|
} catch (e) {
|
|
return false
|
|
}
|
|
},
|
|
isUser: state => {
|
|
try {
|
|
return state.user.group.includes('user') ? true : false
|
|
} catch (e) {
|
|
return false
|
|
}
|
|
},
|
|
isLoggedIn: state => {
|
|
return state.user.accessToken ? true : false
|
|
}
|
|
}
|
|
|
|
export default {
|
|
state,
|
|
mutations,
|
|
actions,
|
|
getters
|
|
}
|