Derick Montague | e080a1a | 2019-12-04 16:30:08 -0600 | [diff] [blame] | 1 | import api from "../../api"; |
| 2 | |
| 3 | const AuthenticationStore = { |
| 4 | namespaced: true, |
| 5 | state: { |
| 6 | auth: {}, |
| 7 | status: "", |
| 8 | token: sessionStorage.getItem("token") || "" |
| 9 | }, |
| 10 | getters: { |
| 11 | authStatus: state => state.status, |
| 12 | isLoggedIn: state => !!state.token |
| 13 | }, |
| 14 | mutations: { |
| 15 | authRequest(state) { |
| 16 | state.status = "loading"; |
| 17 | }, |
| 18 | authSuccess(state, token, auth) { |
| 19 | state.status = "authenicated"; |
| 20 | state.auth = auth; |
| 21 | state.token = token; |
| 22 | }, |
| 23 | authError(state) { |
| 24 | state.status = "error"; |
| 25 | }, |
| 26 | logout(state) { |
| 27 | state.status = ""; |
| 28 | state.token = ""; |
| 29 | } |
| 30 | }, |
| 31 | actions: { |
| 32 | login({ commit }, auth) { |
| 33 | commit("authRequest"); |
| 34 | return api |
| 35 | .post("/login", auth) |
| 36 | .then(response => { |
| 37 | const token = response.data.token; |
| 38 | sessionStorage.setItem("token", token); |
| 39 | api.defaults.auth = auth; // TODO Permanent Solution |
| 40 | commit("authSuccess", token, auth); |
| 41 | }) |
| 42 | .catch(error => { |
| 43 | commit("authError"); |
| 44 | sessionStorage.removeItem("token"); |
| 45 | throw new Error(error); |
| 46 | }); |
| 47 | }, |
| 48 | logout({ commit }) { |
| 49 | commit("logout"); |
| 50 | sessionStorage.removeItem("token"); |
| 51 | api.defaults.auth = {}; // Permanent solution |
| 52 | } |
| 53 | } |
| 54 | }; |
| 55 | |
| 56 | export default AuthenticationStore; |