import Vue from 'vue' import Vuex from 'vuex' import router from "@/router"; import axios from 'axios' Vue.use(Vuex) const url = 'http://localhost:5000/' export default new Vuex.Store({ state: { user: { username: null, accessToken: null, group: null }, loggingIn: false, loginError: null }, mutations: { loginStart: state => state.loggingIn = true, loginStop (state, errorMessage){ state.loggingIn = false; state.loginError = errorMessage; }, updateAccessToken (state, data) { // eslint-disable-next-line no-console if (typeof(data) === typeof("")) { data = JSON.parse(data) } // eslint-disable-next-line no-console console.log("updateAccessToken data:", typeof (data), data) if (data === null || data === undefined) { state.user.username = null; state.user.accessToken = null; state.user.group = null; } else { this.state.user.username = data.username; state.user.accessToken = data.accessToken; state.user.group = data.group; // eslint-disable-next-line no-console console.log("state: ", state.user) } }, logout (state) { state.user.accessToken = null; state.user.username = null; state.user.group = null; } }, actions: { doLogin({ commit }, loginData) { // eslint-disable-next-line no-console console.log("loginData:", loginData) commit('loginStart'); axios.post(url+'login', {...loginData}) .then(response => { 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 (this.state.user.group === 'moneymaster') { router.push('/finanzer'); } if (this.state.user.group === 'bar') { router.push('/bar') } }) .catch(error => { commit('loginStop', error.response.data.error) commit('updateAccessToken', {username: null, accessToken: null, group: null}) }) }, fetchAccessToken({ commit }) { // eslint-disable-next-line no-console console.log("localStorage: ", localStorage.getItem('user')) commit('updateAccessToken', localStorage.getItem('user')) }, logout({ commit }) { localStorage.removeItem('user'); commit('logout'); router.push('/login'); }, resetLoginError({ commit }) { commit("loginStop") } }, modules: { }, getters: { getGroup: state => { return state.user.group }, getToken: state => { return state.user.accessToken } } })