99 lines
2.6 KiB
JavaScript
99 lines
2.6 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('/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
|
||
|
};
|