flaschengeist-frontend/src/store/index.js

88 lines
2.4 KiB
JavaScript
Raw Normal View History

2019-12-20 13:01:36 +00:00
import Vue from 'vue'
import Vuex from 'vuex'
2019-12-21 07:20:25 +00:00
import router from "@/router";
2019-12-21 09:51:41 +00:00
import httpClient from "../plugins/restService";
2019-12-20 13:01:36 +00:00
Vue.use(Vuex)
export default new Vuex.Store({
state: {
2019-12-21 07:20:25 +00:00
user: {
username: null,
accessToken: null,
group: null
},
loggingIn: false,
loginError: null
2019-12-20 13:01:36 +00:00
},
mutations: {
2019-12-21 07:20:25 +00:00
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)
}
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;
}
},
logout (state) {
state.user.accessToken = null;
state.user.username = null;
state.user.group = null;
}
2019-12-20 13:01:36 +00:00
},
actions: {
2019-12-21 07:20:25 +00:00
doLogin({ commit }, loginData) {
commit('loginStart');
2019-12-21 09:51:41 +00:00
httpClient.login(loginData)
2019-12-21 07:20:25 +00:00
.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.includes('moneymaster')) {
2019-12-21 07:20:25 +00:00
router.push('/finanzer');
}
else if (this.state.user.group.includes('bar')) {
2019-12-21 07:20:25 +00:00
router.push('/bar')
}
})
.catch(error => {
commit('loginStop', error.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")
}
2019-12-20 13:01:36 +00:00
},
modules: {
2019-12-21 07:20:25 +00:00
},
getters: {
getGroup: state => {
return state.user.group
},
getToken: state => {
return state.user.accessToken
}
2019-12-20 13:01:36 +00:00
}
})