import api from "../../api"; const AuthenticationStore = { namespaced: true, state: { auth: {}, status: "", token: sessionStorage.getItem("token") || "" }, getters: { authStatus: state => state.status, isLoggedIn: state => !!state.token }, mutations: { authRequest(state) { state.status = "loading"; }, authSuccess(state, token, auth) { state.status = "authenicated"; state.auth = auth; state.token = token; }, authError(state) { state.status = "error"; }, logout(state) { state.status = ""; state.token = ""; } }, actions: { login({ commit }, auth) { commit("authRequest"); return api .post("/login", auth) .then(response => { const token = response.data.token; sessionStorage.setItem("token", token); api.defaults.auth = auth; // TODO Permanent Solution commit("authSuccess", token, auth); }) .catch(error => { commit("authError"); sessionStorage.removeItem("token"); throw new Error(error); }); }, logout({ commit }) { commit("logout"); sessionStorage.removeItem("token"); api.defaults.auth = {}; // Permanent solution } } }; export default AuthenticationStore;