flaschengeist-frontend/src/store/modules/login.js

99 lines
2.6 KiB
JavaScript
Raw Normal View History

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
};