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)
|
2019-12-26 09:31:36 +00:00
|
|
|
if (this.state.user.group.includes('moneymaster')) {
|
2019-12-21 07:20:25 +00:00
|
|
|
router.push('/finanzer');
|
|
|
|
}
|
2019-12-26 09:31:36 +00:00
|
|
|
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
|
|
|
}
|
|
|
|
})
|