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('/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}) } }, 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 } }; export default { state, mutations, actions, getters };